Hi all, I'm new to this forum and haven't seen the code you are talking about, so take this with a grain of salt. The way we handle "banned items" at Grooveshark is to post-process the itemID pairs in Hive. If a user dislikes a recommended song/artist, an item pair is stored in HDFS and then when the recs are computed, those banned user-item pairs are taken into account. Here is an example query:
SELECT DISTINCT st.uid, st.simuid, IF(b.uid=st.uid,1,0) as banned FROM streams_u2u st LEFT OUTER JOIN bannedsimusers b ON (b.simuid=st.simuid); That query will print out a 1 or a 0 if the recommended item pair is banned or not. Hive also supports case statements (I think), so you can make a range of "banned-ness" I guess. Just another solution to the "dislike" problem. Chris On Mon, Aug 23, 2010 at 12:03 PM, Sean Owen <[email protected]> wrote: > Sebastian is right that in this case, you might well model these as > preferences with low value. It's reasonable, but, I also agree that > somehow an 'ignored' recommendation does not necessarily mean the same > as a low preference. There are some situations where you might want to > exclude items from recommendation for many reasons (e.g. it's > currently out of stock). > > This is what the Rescorer does in the non-distributed code. There is > not yet any counterpart in the distributed code. > > It would be fairly simple. You just need a job to modify the estimated > preference vector after recommendation, in whatever way you want. Here > you just clear the entries in the vector for anything you don't want > recommended. Any other transformation is possible. > > This is how such a function like this ought to look in Mahout, I think > -- some kind of RescorerMapper / RescorerReducer. If you can make a > patch along those lines, I'm sure we could integrate it. > > Sean > > On Mon, Aug 23, 2010 at 3:28 PM, han henry <[email protected]> wrote: > > Hi,Sebastian > > > > Actually we has three types feedback types: > > > > 1) user more likes the recommendation, we give a higher score and add a > new > > preference,this preference is used to calculate similarity. > > > > 2) user less likes the recommendation, we give a lower score and add a > new > > preference,this preference is used to calculate similarity. > > > > 3) user just want to remove this item,because we always get certain > number > > recommendation,user want to get more new recommendation,he just need > remove > > the item form list (he can bookmark this items for future viewing). > > > > So we add a new preference,this preference is not used to calculate > > similarity,but we can not recommend the preference again. > > > > My proposal is for the third feedback type. for first and second feedback > > type ,it just need add one preference. > > > > ---Henry Han > > > > > > 2010/8/23 Sebastian Schelter <[email protected]> > > > >> Hi, > >> > >> I think it is an interesting feature. But maybe it is not the best way > >> to exclude the item at the end of the recommendation process. > >> > >> Another way could be to just add a preference with a negative rating to > >> the input data whenever a user rejects an item. That way this would > >> provide more information about the user and the item would automatically > >> be excluded from the output of the RecommenderJob as the user has > >> already seen this item. > >> > >> The question is whether it's conceptually okay to add a negative > >> preference whenever the user rejects an item. Any thoughts on this? > >> > >> --sebastian > >> > >> Am 23.08.2010 15:57, schrieb han henry: > >> > Hi,All > >> > > >> > Sometimes user's dislikes some recommendation we generated ,he/she > >> > does not want to see the recommended items again. > >> > > >> > Here is a example from Amazon.com (see the attachment ). > >> > > >> > I have written one patch for it.the logic as following : > >> > > >> > 1) Dump user's non-interested items to HDFS, format like > >> > userId+"_"+item_id. before we run RecommenderJob > >> > 2) Load user's invalid data to HashMap when > >> > AggregateAndRecommendReducer setup > >> > 3) Skip user's non-interested items when choose TOP N recommendations > >> > for user. > >> > > >> > Does it make sense and can merge to the repository ? > >> > > >> > > >> > >> > > >
