Re: Negative preferences

2014-08-15 Thread Sean Owen
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 p...@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

2014-08-15 Thread Pat Ferrel
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 sro...@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 p...@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

2014-08-15 Thread Ted Dunning
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 pat.fer...@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 sro...@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 p...@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

2014-08-15 Thread Pat Ferrel
 
 On Aug 15, 2014, at 9:05 AM, Ted Dunning ted.dunn...@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 pat.fer...@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 sro...@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 p...@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

2014-08-15 Thread Ted Dunning
On Fri, Aug 15, 2014 at 2:24 PM, Pat Ferrel pat.fer...@gmail.com wrote:

  On Aug 15, 2014, at 9:05 AM, Ted Dunning ted.dunn...@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.


Negative preferences

2014-08-14 Thread Pat Ferrel
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 in a Recommender

2013-06-18 Thread Sean Owen
Yes the model has no room for literally negative input. I think that
conceptually people do want negative input, and in this model,
negative numbers really are the natural thing to express that.

You could give negative input a small positive weight. Or extend the
definition of c so that it is merely small, not negative, when r is
negative. But this was generally unsatisfactory. It has a logic, that
even negative input is really a slightly positive association in the
scheme of things, but the results were viewed as unintuitive.

I ended up extending it to handle negative input more directly, such
that negative input is read as evidence that p=0, instead of evidence
that p=1. This works fine, and tidier than an ensemble (although
that's a sound idea too). The change is quite small.

Agree with the second point that learning weights is manual and
difficult; that's unavoidable I think when you want to start adding
different data types anyway.

I also don't use M/R for searching parameter space since you may try a
thousand combinations and each is a model build from scratch. I use a
sample of data and run in-core.

On Tue, Jun 18, 2013 at 2:30 AM, Dmitriy Lyubimov dlie...@gmail.com wrote:
 (Kinda doing something very close. )

 Koren-Volynsky paper on implicit feedback can be generalized to decompose
 all input into preference (0 or 1) and confidence matrices (which is
 essentually an observation weight matrix).

 If you did not get any observations, you encode it as (p=0,c=1) but if you
 know that user did not like item, you can encode that observation with much
 more confidence weight, something like (p=0, c=30) -- actually as high
 confidence as a conversion in your case it seems.

 The problem with this is that you end up with quite a bunch of additional
 parameters in your model to figure, i.e. confidence weights for each type
 of action in the system. You can establish that thru extensive
 crossvalidation search, which is initially quite expensive (even for
 distributed machine cluster tech), but could be incrementally bail out much
 sooner after previous good guess is already known.

 MR doesn't work well for this though since it requires  A LOT of iterations.



 On Mon, Jun 17, 2013 at 5:51 PM, Pat Ferrel pat.fer...@gmail.com wrote:

 In the case where you know a user did not like an item, how should the
 information be treated in a recommender? Normally for retail
 recommendations you have an implicit 1 for a purchase and no value
 otherwise. But what if you knew the user did not like an item? Maybe you
 have records of I want my money back for this junk reactions.

 You could make a scale, 0, 1 where 0 means a bad rating and 1 a good, no
 value as usual means no preference? Some of the math here won't work though
 since usually no value implicitly = 0 so maybe -1 = bad, 1 = good, no
 preference implicitly = 0?

 Would it be better to treat the bad rating as a 1 and good as 2? This
 would be more like the old star rating method only we would know where the
 cutoff should be between a good review and bad (1.5)

 I suppose this could also be treated as another recommender in an ensemble
 where r = r_p - r_h, where r_h = predictions from I hate this product
 preferences?

 Has anyone found a good method?


Re: Negative Preferences in a Recommender

2013-06-18 Thread Ted Dunning
I have found that in practice, don't-like is very close to like.  That is,
things that somebody doesn't like are very closely related to the things
that they do like.  Things that are quite distant wind up as don't-care,
not don't-like.

This makes most simple approaches to modeling polar preferences very
dangerous.  What I have usually done under the pressure of time is to
consider like and don't-like to be equivalent synonyms and then maintain a
kill list of items to not show.  Works well pragmatically, but gives people
hives when they hear of the details, especially if they actually believe
humans act according to consistent philosophy.


On Tue, Jun 18, 2013 at 9:13 AM, Sean Owen sro...@gmail.com wrote:

 Yes the model has no room for literally negative input. I think that
 conceptually people do want negative input, and in this model,
 negative numbers really are the natural thing to express that.

 You could give negative input a small positive weight. Or extend the
 definition of c so that it is merely small, not negative, when r is
 negative. But this was generally unsatisfactory. It has a logic, that
 even negative input is really a slightly positive association in the
 scheme of things, but the results were viewed as unintuitive.

 I ended up extending it to handle negative input more directly, such
 that negative input is read as evidence that p=0, instead of evidence
 that p=1. This works fine, and tidier than an ensemble (although
 that's a sound idea too). The change is quite small.

 Agree with the second point that learning weights is manual and
 difficult; that's unavoidable I think when you want to start adding
 different data types anyway.

 I also don't use M/R for searching parameter space since you may try a
 thousand combinations and each is a model build from scratch. I use a
 sample of data and run in-core.

 On Tue, Jun 18, 2013 at 2:30 AM, Dmitriy Lyubimov dlie...@gmail.com
 wrote:
  (Kinda doing something very close. )
 
  Koren-Volynsky paper on implicit feedback can be generalized to decompose
  all input into preference (0 or 1) and confidence matrices (which is
  essentually an observation weight matrix).
 
  If you did not get any observations, you encode it as (p=0,c=1) but if
 you
  know that user did not like item, you can encode that observation with
 much
  more confidence weight, something like (p=0, c=30) -- actually as high
  confidence as a conversion in your case it seems.
 
  The problem with this is that you end up with quite a bunch of additional
  parameters in your model to figure, i.e. confidence weights for each type
  of action in the system. You can establish that thru extensive
  crossvalidation search, which is initially quite expensive (even for
  distributed machine cluster tech), but could be incrementally bail out
 much
  sooner after previous good guess is already known.
 
  MR doesn't work well for this though since it requires  A LOT of
 iterations.
 
 
 
  On Mon, Jun 17, 2013 at 5:51 PM, Pat Ferrel pat.fer...@gmail.com
 wrote:
 
  In the case where you know a user did not like an item, how should the
  information be treated in a recommender? Normally for retail
  recommendations you have an implicit 1 for a purchase and no value
  otherwise. But what if you knew the user did not like an item? Maybe you
  have records of I want my money back for this junk reactions.
 
  You could make a scale, 0, 1 where 0 means a bad rating and 1 a good, no
  value as usual means no preference? Some of the math here won't work
 though
  since usually no value implicitly = 0 so maybe -1 = bad, 1 = good, no
  preference implicitly = 0?
 
  Would it be better to treat the bad rating as a 1 and good as 2? This
  would be more like the old star rating method only we would know where
 the
  cutoff should be between a good review and bad (1.5)
 
  I suppose this could also be treated as another recommender in an
 ensemble
  where r = r_p - r_h, where r_h = predictions from I hate this product
  preferences?
 
  Has anyone found a good method?



Re: Negative Preferences in a Recommender

2013-06-18 Thread Pat Ferrel
To your point Ted, I was surprised to find that remove-from-cart actions 
predicted sales almost as well as purchases did but it also meant filtering 
from recs. We got the best scores treating them as purchases and not 
recommending them again. No one pried enough to get get bothered.

In this particular case I'm ingesting movie reviews, thumbs up or down. I'm 
trying to prime the pump for a cold start case of a media guide app with expert 
reviews but no users yet. Expert reviewers review everything so I don't think 
there will be much goodness in treating a thumbs down like a thumbs up in this 
particular case. Sean, are you suggesting that negative reviews might be 
modeled as a 0 rather than no value? Using the Mahout recommender this will 
only show up in filtering the negatives out of recs as Ted suggests, right? 
Since a 0 preference would mean, don't recommend, just as a preference of 1 
would. This seems like a good approach but I may have missed something in your 
suggestion.

In this case I'm not concerned with recommending to experts, I'm trying to make 
good recs to new users with few thumbs up or down by comparing them to experts 
with lots of thumbs up and down.The similarity metric will have new users with 
only a few preferences and will compare them to reviewers with many many more. 
I wonder if this implies a similarity metric that uses only common values 
(cooccurrence) rather than the usual log-likelihood? I guess it's easy to try 
both.

Papers I've read on this subject. The first has an interesting discussion of 
using experts in CF.
http://www.slideshare.net/xamat/the-science-and-the-magic-of-user-feedback-for-recommender-systems
http://www.sis.pitt.edu/~hlee/paper/umap2009_LeeBrusilovsky.pdf


On Jun 18, 2013, at 3:48 AM, Ted Dunning ted.dunn...@gmail.com wrote:

I have found that in practice, don't-like is very close to like.  That is,
things that somebody doesn't like are very closely related to the things
that they do like.  Things that are quite distant wind up as don't-care,
not don't-like.

This makes most simple approaches to modeling polar preferences very
dangerous.  What I have usually done under the pressure of time is to
consider like and don't-like to be equivalent synonyms and then maintain a
kill list of items to not show.  Works well pragmatically, but gives people
hives when they hear of the details, especially if they actually believe
humans act according to consistent philosophy.


On Tue, Jun 18, 2013 at 9:13 AM, Sean Owen sro...@gmail.com wrote:

 Yes the model has no room for literally negative input. I think that
 conceptually people do want negative input, and in this model,
 negative numbers really are the natural thing to express that.
 
 You could give negative input a small positive weight. Or extend the
 definition of c so that it is merely small, not negative, when r is
 negative. But this was generally unsatisfactory. It has a logic, that
 even negative input is really a slightly positive association in the
 scheme of things, but the results were viewed as unintuitive.
 
 I ended up extending it to handle negative input more directly, such
 that negative input is read as evidence that p=0, instead of evidence
 that p=1. This works fine, and tidier than an ensemble (although
 that's a sound idea too). The change is quite small.
 
 Agree with the second point that learning weights is manual and
 difficult; that's unavoidable I think when you want to start adding
 different data types anyway.
 
 I also don't use M/R for searching parameter space since you may try a
 thousand combinations and each is a model build from scratch. I use a
 sample of data and run in-core.
 
 On Tue, Jun 18, 2013 at 2:30 AM, Dmitriy Lyubimov dlie...@gmail.com
 wrote:
 (Kinda doing something very close. )
 
 Koren-Volynsky paper on implicit feedback can be generalized to decompose
 all input into preference (0 or 1) and confidence matrices (which is
 essentually an observation weight matrix).
 
 If you did not get any observations, you encode it as (p=0,c=1) but if
 you
 know that user did not like item, you can encode that observation with
 much
 more confidence weight, something like (p=0, c=30) -- actually as high
 confidence as a conversion in your case it seems.
 
 The problem with this is that you end up with quite a bunch of additional
 parameters in your model to figure, i.e. confidence weights for each type
 of action in the system. You can establish that thru extensive
 crossvalidation search, which is initially quite expensive (even for
 distributed machine cluster tech), but could be incrementally bail out
 much
 sooner after previous good guess is already known.
 
 MR doesn't work well for this though since it requires  A LOT of
 iterations.
 
 
 
 On Mon, Jun 17, 2013 at 5:51 PM, Pat Ferrel pat.fer...@gmail.com
 wrote:
 
 In the case where you know a user did not like an item, how should the
 information be treated in a recommender? Normally for retail
 

Re: Negative Preferences in a Recommender

2013-06-18 Thread Pat Ferrel
They are on a lot of papers, which are you looking at?

On Jun 17, 2013, at 6:30 PM, Dmitriy Lyubimov dlie...@gmail.com wrote:

(Kinda doing something very close. )

Koren-Volynsky paper on implicit feedback can be generalized to decompose
all input into preference (0 or 1) and confidence matrices (which is
essentually an observation weight matrix).

If you did not get any observations, you encode it as (p=0,c=1) but if you
know that user did not like item, you can encode that observation with much
more confidence weight, something like (p=0, c=30) -- actually as high
confidence as a conversion in your case it seems.

The problem with this is that you end up with quite a bunch of additional
parameters in your model to figure, i.e. confidence weights for each type
of action in the system. You can establish that thru extensive
crossvalidation search, which is initially quite expensive (even for
distributed machine cluster tech), but could be incrementally bail out much
sooner after previous good guess is already known.

MR doesn't work well for this though since it requires  A LOT of iterations.



On Mon, Jun 17, 2013 at 5:51 PM, Pat Ferrel pat.fer...@gmail.com wrote:

 In the case where you know a user did not like an item, how should the
 information be treated in a recommender? Normally for retail
 recommendations you have an implicit 1 for a purchase and no value
 otherwise. But what if you knew the user did not like an item? Maybe you
 have records of I want my money back for this junk reactions.
 
 You could make a scale, 0, 1 where 0 means a bad rating and 1 a good, no
 value as usual means no preference? Some of the math here won't work though
 since usually no value implicitly = 0 so maybe -1 = bad, 1 = good, no
 preference implicitly = 0?
 
 Would it be better to treat the bad rating as a 1 and good as 2? This
 would be more like the old star rating method only we would know where the
 cutoff should be between a good review and bad (1.5)
 
 I suppose this could also be treated as another recommender in an ensemble
 where r = r_p - r_h, where r_h = predictions from I hate this product
 preferences?
 
 Has anyone found a good method?



Re: Negative Preferences in a Recommender

2013-06-18 Thread Sean Owen
I'm suggesting using numbers like -1 for thumbs-down ratings, and then
using these as a positive weight towards 0, just like positive values
are used as positive weighting towards 1.

Most people don't make many negative ratings. For them, what you do
with these doesn't make a lot of difference. It might for the few
expert users, and they might be the ones that care. For me it was
exactly this... user acceptance testers were pointing out that
thumbs-down ratings didn't seem to have the desired effect, because
they saw the result straight away.

Here's an alternative structure that doesn't involve thumbs-down:
choose 4 items, and sample in a way to prefer items that are distant
in feature space. Ask the user to pick 1 that is most interesting.
Repeat a few times.

On Tue, Jun 18, 2013 at 3:55 PM, Pat Ferrel p...@occamsmachete.com wrote:
 To your point Ted, I was surprised to find that remove-from-cart actions 
 predicted sales almost as well as purchases did but it also meant filtering 
 from recs. We got the best scores treating them as purchases and not 
 recommending them again. No one pried enough to get get bothered.

 In this particular case I'm ingesting movie reviews, thumbs up or down. I'm 
 trying to prime the pump for a cold start case of a media guide app with 
 expert reviews but no users yet. Expert reviewers review everything so I 
 don't think there will be much goodness in treating a thumbs down like a 
 thumbs up in this particular case. Sean, are you suggesting that negative 
 reviews might be modeled as a 0 rather than no value? Using the Mahout 
 recommender this will only show up in filtering the negatives out of recs as 
 Ted suggests, right? Since a 0 preference would mean, don't recommend, just 
 as a preference of 1 would. This seems like a good approach but I may have 
 missed something in your suggestion.

 In this case I'm not concerned with recommending to experts, I'm trying to 
 make good recs to new users with few thumbs up or down by comparing them to 
 experts with lots of thumbs up and down.The similarity metric will have new 
 users with only a few preferences and will compare them to reviewers with 
 many many more. I wonder if this implies a similarity metric that uses only 
 common values (cooccurrence) rather than the usual log-likelihood? I guess 
 it's easy to try both.

 Papers I've read on this subject. The first has an interesting discussion of 
 using experts in CF.
 http://www.slideshare.net/xamat/the-science-and-the-magic-of-user-feedback-for-recommender-systems
 http://www.sis.pitt.edu/~hlee/paper/umap2009_LeeBrusilovsky.pdf


Re: Negative Preferences in a Recommender

2013-06-18 Thread Dmitriy Lyubimov
Koren, Volinsky: CF for implicit feedback datasets


On Tue, Jun 18, 2013 at 8:07 AM, Pat Ferrel p...@occamsmachete.com wrote:

 They are on a lot of papers, which are you looking at?

 On Jun 17, 2013, at 6:30 PM, Dmitriy Lyubimov dlie...@gmail.com wrote:

 (Kinda doing something very close. )

 Koren-Volynsky paper on implicit feedback can be generalized to decompose
 all input into preference (0 or 1) and confidence matrices (which is
 essentually an observation weight matrix).

 If you did not get any observations, you encode it as (p=0,c=1) but if you
 know that user did not like item, you can encode that observation with much
 more confidence weight, something like (p=0, c=30) -- actually as high
 confidence as a conversion in your case it seems.

 The problem with this is that you end up with quite a bunch of additional
 parameters in your model to figure, i.e. confidence weights for each type
 of action in the system. You can establish that thru extensive
 crossvalidation search, which is initially quite expensive (even for
 distributed machine cluster tech), but could be incrementally bail out much
 sooner after previous good guess is already known.

 MR doesn't work well for this though since it requires  A LOT of
 iterations.



 On Mon, Jun 17, 2013 at 5:51 PM, Pat Ferrel pat.fer...@gmail.com wrote:

  In the case where you know a user did not like an item, how should the
  information be treated in a recommender? Normally for retail
  recommendations you have an implicit 1 for a purchase and no value
  otherwise. But what if you knew the user did not like an item? Maybe you
  have records of I want my money back for this junk reactions.
 
  You could make a scale, 0, 1 where 0 means a bad rating and 1 a good, no
  value as usual means no preference? Some of the math here won't work
 though
  since usually no value implicitly = 0 so maybe -1 = bad, 1 = good, no
  preference implicitly = 0?
 
  Would it be better to treat the bad rating as a 1 and good as 2? This
  would be more like the old star rating method only we would know where
 the
  cutoff should be between a good review and bad (1.5)
 
  I suppose this could also be treated as another recommender in an
 ensemble
  where r = r_p - r_h, where r_h = predictions from I hate this product
  preferences?
 
  Has anyone found a good method?




Re: Negative Preferences in a Recommender

2013-06-18 Thread Dmitriy Lyubimov
On Tue, Jun 18, 2013 at 3:48 AM, Ted Dunning ted.dunn...@gmail.com wrote:

 I have found that in practice, don't-like is very close to like.  That is,
 things that somebody doesn't like are very closely related to the things
 that they do like.


I guess it makes sense for cancellations. i guess it should become pretty
obvious from extensive crossvalidation search.


  Things that are quite distant wind up as don't-care,
 not don't-like.

 This makes most simple approaches to modeling polar preferences very
 dangerous.  What I have usually done under the pressure of time is to
 consider like and don't-like to be equivalent synonyms and then maintain a
 kill list of items to not show.  Works well pragmatically, but gives people
 hives when they hear of the details, especially if they actually believe
 humans act according to consistent philosophy.


Or we just don't know exact prevailing reason for the returns. :) did not
fit is almost fit, give me similar, and  found on another sale event
means I still like it, just not your price.
However, if there's a consistent quality issue, it may turn bad enough to
consider p=0. bottom line, it should become fairly obvious which reasoning
prevails, thru validation.

Kill list should probably be maintained for a whole lot of reasons, not
just returns. E.g. something that was recently bought, may be
one-a-lifetime purchase, or it may be replenishable with a certain period
of repeatability (which could also be modelled). Does it makes sense?



 On Tue, Jun 18, 2013 at 9:13 AM, Sean Owen sro...@gmail.com wrote:

  Yes the model has no room for literally negative input. I think that
  conceptually people do want negative input, and in this model,
  negative numbers really are the natural thing to express that.
 
  You could give negative input a small positive weight. Or extend the
  definition of c so that it is merely small, not negative, when r is
  negative. But this was generally unsatisfactory. It has a logic, that
  even negative input is really a slightly positive association in the
  scheme of things, but the results were viewed as unintuitive.
 
  I ended up extending it to handle negative input more directly, such
  that negative input is read as evidence that p=0, instead of evidence
  that p=1. This works fine, and tidier than an ensemble (although
  that's a sound idea too). The change is quite small.
 
  Agree with the second point that learning weights is manual and
  difficult; that's unavoidable I think when you want to start adding
  different data types anyway.
 
  I also don't use M/R for searching parameter space since you may try a
  thousand combinations and each is a model build from scratch. I use a
  sample of data and run in-core.
 
  On Tue, Jun 18, 2013 at 2:30 AM, Dmitriy Lyubimov dlie...@gmail.com
  wrote:
   (Kinda doing something very close. )
  
   Koren-Volynsky paper on implicit feedback can be generalized to
 decompose
   all input into preference (0 or 1) and confidence matrices (which is
   essentually an observation weight matrix).
  
   If you did not get any observations, you encode it as (p=0,c=1) but if
  you
   know that user did not like item, you can encode that observation with
  much
   more confidence weight, something like (p=0, c=30) -- actually as high
   confidence as a conversion in your case it seems.
  
   The problem with this is that you end up with quite a bunch of
 additional
   parameters in your model to figure, i.e. confidence weights for each
 type
   of action in the system. You can establish that thru extensive
   crossvalidation search, which is initially quite expensive (even for
   distributed machine cluster tech), but could be incrementally bail out
  much
   sooner after previous good guess is already known.
  
   MR doesn't work well for this though since it requires  A LOT of
  iterations.
  
  
  
   On Mon, Jun 17, 2013 at 5:51 PM, Pat Ferrel pat.fer...@gmail.com
  wrote:
  
   In the case where you know a user did not like an item, how should the
   information be treated in a recommender? Normally for retail
   recommendations you have an implicit 1 for a purchase and no value
   otherwise. But what if you knew the user did not like an item? Maybe
 you
   have records of I want my money back for this junk reactions.
  
   You could make a scale, 0, 1 where 0 means a bad rating and 1 a good,
 no
   value as usual means no preference? Some of the math here won't work
  though
   since usually no value implicitly = 0 so maybe -1 = bad, 1 = good, no
   preference implicitly = 0?
  
   Would it be better to treat the bad rating as a 1 and good as 2? This
   would be more like the old star rating method only we would know where
  the
   cutoff should be between a good review and bad (1.5)
  
   I suppose this could also be treated as another recommender in an
  ensemble
   where r = r_p - r_h, where r_h = predictions from I hate this
 product
   preferences?
  
   Has anyone found a good method?
 

Re: Negative Preferences in a Recommender

2013-06-17 Thread Dmitriy Lyubimov
(Kinda doing something very close. )

Koren-Volynsky paper on implicit feedback can be generalized to decompose
all input into preference (0 or 1) and confidence matrices (which is
essentually an observation weight matrix).

If you did not get any observations, you encode it as (p=0,c=1) but if you
know that user did not like item, you can encode that observation with much
more confidence weight, something like (p=0, c=30) -- actually as high
confidence as a conversion in your case it seems.

The problem with this is that you end up with quite a bunch of additional
parameters in your model to figure, i.e. confidence weights for each type
of action in the system. You can establish that thru extensive
crossvalidation search, which is initially quite expensive (even for
distributed machine cluster tech), but could be incrementally bail out much
sooner after previous good guess is already known.

MR doesn't work well for this though since it requires  A LOT of iterations.



On Mon, Jun 17, 2013 at 5:51 PM, Pat Ferrel pat.fer...@gmail.com wrote:

 In the case where you know a user did not like an item, how should the
 information be treated in a recommender? Normally for retail
 recommendations you have an implicit 1 for a purchase and no value
 otherwise. But what if you knew the user did not like an item? Maybe you
 have records of I want my money back for this junk reactions.

 You could make a scale, 0, 1 where 0 means a bad rating and 1 a good, no
 value as usual means no preference? Some of the math here won't work though
 since usually no value implicitly = 0 so maybe -1 = bad, 1 = good, no
 preference implicitly = 0?

 Would it be better to treat the bad rating as a 1 and good as 2? This
 would be more like the old star rating method only we would know where the
 cutoff should be between a good review and bad (1.5)

 I suppose this could also be treated as another recommender in an ensemble
 where r = r_p - r_h, where r_h = predictions from I hate this product
 preferences?

 Has anyone found a good method?