Re: Negative preferences
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
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
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
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
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
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
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
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
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
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
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
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
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
(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?