You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@mahout.apache.org by Pat Ferrel <pa...@occamsmachete.com> on 2014/08/14 19:22:35 UTC

Negative preferences

Now that we have multi-action/cross-cooccurrences in ItemSimilarity we can start playing with taking in multiple actions to recommend one. On the demo site I have data for thumbs up and down but have only been using thumbs up as the primary action. I then filter recs by a user’s thumbs down interactions. However there are now some new options.

1) Might it be better to use the thumbs down as a second action type? Basically this would imply that a user’s dislike of certain items may be an indicator of their liking others? Since we are using Solr to return recs we’d just use a two field query so no need to combine recs.

2) Get completely independent thumbs-down recs and filter by those instead of only the thumbs-down interactions? Probably a pretty tight threshold or number of items recommended would be good here to protect against false negatives.

The data is there and the demo site is pretty easy to experiment with. I’m integrating spark-itemsimilarity now so if anyone has a good idea of how to better use the data, speak up. It seems like 1 and 2 could be used together so I’ll probably create some setting that allows a user to experiment on their own recs.

Multi-action Recommender

Posted by Pat Ferrel <pa...@occamsmachete.com>.
It’d sure be great if someone was able to try this on their data. Basically we could ingest several actions per user with one primary/recommended action.

For ecom this would be something like (purchase, view-details-page, write-a-review-for, add-to-wishlist, view-category, etc) All of the secondary actions will be analyzed to find the significant cross-action cooccurrences. The item spaces don’t need to be identical and the users for each action will be merged to one user space. The output will be “indicators” tied to the items in the primary action input so it would look something like:

    itemAID, indicators-items-for-A, indicators-items-for-B, indicators-items-for-C, indicators-items-for-Dt, indicators-items-for-E

If this is indexed by a search engine then the query for user-specific reqs is a multi-field query. For user 1 you have history of action A queried against the A indicator field, history of action B queried against the B field, etc. This is actually one query for Solr and super fast.

The result will be a list of items to recommend for an individual—one that takes into account potentially many actions.

The simplest case is using two actions maybe (purchase, view-details-page).

The literature for recommenders has very little to say about using multiple actions so this could be a breakthrough—we’ll only know if we can test it.


On Aug 15, 2014, at 5:03 PM, Ted Dunning <te...@gmail.com> wrote:

On Fri, Aug 15, 2014 at 2:24 PM, Pat Ferrel <pa...@gmail.com> wrote:

>> On Aug 15, 2014, at 9:05 AM, Ted Dunning <te...@gmail.com> wrote:
>> 
>> It is bad practice to use weightings to express different actions.  This
>> may be necessary in an ALS framework, but it is still a bad idea.
>> 
>> A much better approach is to use multi-modal recommendation in which each
>> action is used independently in a cross-recommendation fashion to measure
>> predictive power.  Some thumbs down actions will likely predict some
>> purchases.  If you smash everything together, you won't see that
> subtlety.
> 
> I think that is precisely what I was suggesting with #1. Using thumbs down
> as the secondary action—a cross-cooccurrence indicator. For the [B’A]h_b
> case. Where A is thumbs up and B is thumbs down.
> 
> For that matter about any action that can be recorded for the same user
> set can now be treated as if it has some predictive value for the primary
> action because the cross-cooccurrence indicator will tell you whether that
> is a correct assumption or not.
> 
> If this pans out it seems like a substantially new way of predicting user
> behavior by looking at many correlated actions but recommending only one
> (or few).
> 

Sorry about that.

I didn't recognize what you were saying until I had read it again a few
times.  Unfortunately, I posted first and read after.

You are correct.  This is just what you said.  And it is very exciting new
ground.


Re: Negative preferences

Posted by Ted Dunning <te...@gmail.com>.
On Fri, Aug 15, 2014 at 2:24 PM, Pat Ferrel <pa...@gmail.com> wrote:

> > On Aug 15, 2014, at 9:05 AM, Ted Dunning <te...@gmail.com> wrote:
> >
> > It is bad practice to use weightings to express different actions.  This
> > may be necessary in an ALS framework, but it is still a bad idea.
> >
> > A much better approach is to use multi-modal recommendation in which each
> > action is used independently in a cross-recommendation fashion to measure
> > predictive power.  Some thumbs down actions will likely predict some
> > purchases.  If you smash everything together, you won't see that
> subtlety.
>
> I think that is precisely what I was suggesting with #1. Using thumbs down
> as the secondary action—a cross-cooccurrence indicator. For the [B’A]h_b
> case. Where A is thumbs up and B is thumbs down.
>
> For that matter about any action that can be recorded for the same user
> set can now be treated as if it has some predictive value for the primary
> action because the cross-cooccurrence indicator will tell you whether that
> is a correct assumption or not.
>
> If this pans out it seems like a substantially new way of predicting user
> behavior by looking at many correlated actions but recommending only one
> (or few).
>

Sorry about that.

I didn't recognize what you were saying until I had read it again a few
times.  Unfortunately, I posted first and read after.

You are correct.  This is just what you said.  And it is very exciting new
ground.

Re: Negative preferences

Posted by Pat Ferrel <pa...@gmail.com>.
> 
> On Aug 15, 2014, at 9:05 AM, Ted Dunning <te...@gmail.com> wrote:
> 
> It is bad practice to use weightings to express different actions.  This
> may be necessary in an ALS framework, but it is still a bad idea.
> 
> A much better approach is to use multi-modal recommendation in which each
> action is used independently in a cross-recommendation fashion to measure
> predictive power.  Some thumbs down actions will likely predict some
> purchases.  If you smash everything together, you won't see that subtlety.

I think that is precisely what I was suggesting with #1. Using thumbs down as the secondary action—a cross-cooccurrence indicator. For the [B’A]h_b case. Where A is thumbs up and B is thumbs down.

For that matter about any action that can be recorded for the same user set can now be treated as if it has some predictive value for the primary action because the cross-cooccurrence indicator will tell you whether that is a correct assumption or not.

If this pans out it seems like a substantially new way of predicting user behavior by looking at many correlated actions but recommending only one (or few).

> 
> 
> 
> On Fri, Aug 15, 2014 at 8:35 AM, Pat Ferrel <pa...@gmail.com> wrote:
> 
>> I like the negative click analogy. The data shows an explicit
>> interaction—using only thumbs up ignores that interaction. Yes, the
>> cooccurrence style recommender can’t account for these in the same way ALS
>> does but filtering them seems like a close approximation and maybe good
>> enough.
>> 
>> #1 asks the question; do thumbs down actions predict thumbs up. Given the
>> way cross-cooccurrence works the answer will be in the data. Intuition says
>> the signal may be weak if it’s there at all. Seems like the use of some
>> threshold for indicator strength is called for to make sure the correlation
>> is strong enough.
>> 
>> This brings up some questions about setting indicator thresholds. On the
>> dev list there has been discussion about a confidence-level type threshold
>> using something like #of standard deviations as a measure. There is no
>> method to set a threshold in the new spark-itemsimilarity yet but maybe
>> this is a good use case for it.
>> 
>> On Aug 15, 2014, at 2:08 AM, Sean Owen <sr...@gmail.com> wrote:
>> 
>> I have used thumbs-down-like interactions as like an anti-click, and
>> subtracts from the interaction between the user and item. The negative
>> scores can be naturally applied in a matrix-factorization-like model
>> like ALS, but that's not the situation here.
>> 
>> Others probably have better first-hand experience here, but yes I have
>> heard of recommending to the negative actions as well and ranking
>> results by the difference between the positive and negative predicted
>> rating. That is, subtract out the scores from the negative recs.
>> Filtering is a crude but more efficient version of this.
>> 
>> On Thu, Aug 14, 2014 at 6:22 PM, Pat Ferrel <pa...@occamsmachete.com> wrote:
>>> Now that we have multi-action/cross-cooccurrences in ItemSimilarity we
>> can start playing with taking in multiple actions to recommend one. On the
>> demo site I have data for thumbs up and down but have only been using
>> thumbs up as the primary action. I then filter recs by a user’s thumbs down
>> interactions. However there are now some new options.
>>> 
>>> 1) Might it be better to use the thumbs down as a second action type?
>> Basically this would imply that a user’s dislike of certain items may be an
>> indicator of their liking others? Since we are using Solr to return recs
>> we’d just use a two field query so no need to combine recs.
>>> 
>>> 2) Get completely independent thumbs-down recs and filter by those
>> instead of only the thumbs-down interactions? Probably a pretty tight
>> threshold or number of items recommended would be good here to protect
>> against false negatives.
>>> 
>>> The data is there and the demo site is pretty easy to experiment with.
>> I’m integrating spark-itemsimilarity now so if anyone has a good idea of
>> how to better use the data, speak up. It seems like 1 and 2 could be used
>> together so I’ll probably create some setting that allows a user to
>> experiment on their own recs.
>> 
>> 
> 

Re: Negative preferences

Posted by Ted Dunning <te...@gmail.com>.
It is bad practice to use weightings to express different actions.  This
may be necessary in an ALS framework, but it is still a bad idea.

A much better approach is to use multi-modal recommendation in which each
action is used independently in a cross-recommendation fashion to measure
predictive power.  Some thumbs down actions will likely predict some
purchases.  If you smash everything together, you won't see that subtlety.



On Fri, Aug 15, 2014 at 8:35 AM, Pat Ferrel <pa...@gmail.com> wrote:

> I like the negative click analogy. The data shows an explicit
> interaction—using only thumbs up ignores that interaction. Yes, the
> cooccurrence style recommender can’t account for these in the same way ALS
> does but filtering them seems like a close approximation and maybe good
> enough.
>
> #1 asks the question; do thumbs down actions predict thumbs up. Given the
> way cross-cooccurrence works the answer will be in the data. Intuition says
> the signal may be weak if it’s there at all. Seems like the use of some
> threshold for indicator strength is called for to make sure the correlation
> is strong enough.
>
> This brings up some questions about setting indicator thresholds. On the
> dev list there has been discussion about a confidence-level type threshold
> using something like #of standard deviations as a measure. There is no
> method to set a threshold in the new spark-itemsimilarity yet but maybe
> this is a good use case for it.
>
> On Aug 15, 2014, at 2:08 AM, Sean Owen <sr...@gmail.com> wrote:
>
> I have used thumbs-down-like interactions as like an anti-click, and
> subtracts from the interaction between the user and item. The negative
> scores can be naturally applied in a matrix-factorization-like model
> like ALS, but that's not the situation here.
>
> Others probably have better first-hand experience here, but yes I have
> heard of recommending to the negative actions as well and ranking
> results by the difference between the positive and negative predicted
> rating. That is, subtract out the scores from the negative recs.
> Filtering is a crude but more efficient version of this.
>
> On Thu, Aug 14, 2014 at 6:22 PM, Pat Ferrel <pa...@occamsmachete.com> wrote:
> > Now that we have multi-action/cross-cooccurrences in ItemSimilarity we
> can start playing with taking in multiple actions to recommend one. On the
> demo site I have data for thumbs up and down but have only been using
> thumbs up as the primary action. I then filter recs by a user’s thumbs down
> interactions. However there are now some new options.
> >
> > 1) Might it be better to use the thumbs down as a second action type?
> Basically this would imply that a user’s dislike of certain items may be an
> indicator of their liking others? Since we are using Solr to return recs
> we’d just use a two field query so no need to combine recs.
> >
> > 2) Get completely independent thumbs-down recs and filter by those
> instead of only the thumbs-down interactions? Probably a pretty tight
> threshold or number of items recommended would be good here to protect
> against false negatives.
> >
> > The data is there and the demo site is pretty easy to experiment with.
> I’m integrating spark-itemsimilarity now so if anyone has a good idea of
> how to better use the data, speak up. It seems like 1 and 2 could be used
> together so I’ll probably create some setting that allows a user to
> experiment on their own recs.
>
>

Re: Negative preferences

Posted by Pat Ferrel <pa...@gmail.com>.
I like the negative click analogy. The data shows an explicit interaction—using only thumbs up ignores that interaction. Yes, the cooccurrence style recommender can’t account for these in the same way ALS does but filtering them seems like a close approximation and maybe good enough.

#1 asks the question; do thumbs down actions predict thumbs up. Given the way cross-cooccurrence works the answer will be in the data. Intuition says the signal may be weak if it’s there at all. Seems like the use of some threshold for indicator strength is called for to make sure the correlation is strong enough.

This brings up some questions about setting indicator thresholds. On the dev list there has been discussion about a confidence-level type threshold using something like #of standard deviations as a measure. There is no method to set a threshold in the new spark-itemsimilarity yet but maybe this is a good use case for it.

On Aug 15, 2014, at 2:08 AM, Sean Owen <sr...@gmail.com> wrote:

I have used thumbs-down-like interactions as like an anti-click, and
subtracts from the interaction between the user and item. The negative
scores can be naturally applied in a matrix-factorization-like model
like ALS, but that's not the situation here.

Others probably have better first-hand experience here, but yes I have
heard of recommending to the negative actions as well and ranking
results by the difference between the positive and negative predicted
rating. That is, subtract out the scores from the negative recs.
Filtering is a crude but more efficient version of this.

On Thu, Aug 14, 2014 at 6:22 PM, Pat Ferrel <pa...@occamsmachete.com> wrote:
> Now that we have multi-action/cross-cooccurrences in ItemSimilarity we can start playing with taking in multiple actions to recommend one. On the demo site I have data for thumbs up and down but have only been using thumbs up as the primary action. I then filter recs by a user’s thumbs down interactions. However there are now some new options.
> 
> 1) Might it be better to use the thumbs down as a second action type? Basically this would imply that a user’s dislike of certain items may be an indicator of their liking others? Since we are using Solr to return recs we’d just use a two field query so no need to combine recs.
> 
> 2) Get completely independent thumbs-down recs and filter by those instead of only the thumbs-down interactions? Probably a pretty tight threshold or number of items recommended would be good here to protect against false negatives.
> 
> The data is there and the demo site is pretty easy to experiment with. I’m integrating spark-itemsimilarity now so if anyone has a good idea of how to better use the data, speak up. It seems like 1 and 2 could be used together so I’ll probably create some setting that allows a user to experiment on their own recs.


Re: Negative preferences

Posted by Sean Owen <sr...@gmail.com>.
I have used thumbs-down-like interactions as like an anti-click, and
subtracts from the interaction between the user and item. The negative
scores can be naturally applied in a matrix-factorization-like model
like ALS, but that's not the situation here.

Others probably have better first-hand experience here, but yes I have
heard of recommending to the negative actions as well and ranking
results by the difference between the positive and negative predicted
rating. That is, subtract out the scores from the negative recs.
Filtering is a crude but more efficient version of this.

On Thu, Aug 14, 2014 at 6:22 PM, Pat Ferrel <pa...@occamsmachete.com> wrote:
> Now that we have multi-action/cross-cooccurrences in ItemSimilarity we can start playing with taking in multiple actions to recommend one. On the demo site I have data for thumbs up and down but have only been using thumbs up as the primary action. I then filter recs by a user’s thumbs down interactions. However there are now some new options.
>
> 1) Might it be better to use the thumbs down as a second action type? Basically this would imply that a user’s dislike of certain items may be an indicator of their liking others? Since we are using Solr to return recs we’d just use a two field query so no need to combine recs.
>
> 2) Get completely independent thumbs-down recs and filter by those instead of only the thumbs-down interactions? Probably a pretty tight threshold or number of items recommended would be good here to protect against false negatives.
>
> The data is there and the demo site is pretty easy to experiment with. I’m integrating spark-itemsimilarity now so if anyone has a good idea of how to better use the data, speak up. It seems like 1 and 2 could be used together so I’ll probably create some setting that allows a user to experiment on their own recs.