For the application I am working on we have similar problem that we are trying solve in different ways. Our users are not anonymous but some of them have no preference data (user ---> item link).
PlusAnonymousUserDataModel will work once the user clicks on couple items on the site, however still doesnt solve the dead-start problem. We are creating user similarities based on different attributes and use the similarities to recommend items (doesn't solve all cases though) However I am still interested in figuring out the most popular items with some diversity (otherwise new "interesting/good" items have no chance of ever getting in recommendations) ? Any ideas how we can do this in mahout? Sean, > > Responses inline. > > Yep, I know what you mean. I didn't really talk about this (yet) in > > the book and likely should spend a page on it. > > > > That would be great. I mean, the two discovery problems are 'user' > discovery > and 'item' discovery. Using content-based approaches, I can do something > about when to recommend a new item... but the user approach example would > be > great. > > Of course, I wouldn't want to talk you out of documenting the best-practice > for Mahout based item discovery in the final version of the book. > > > > One solution is to punt on the problem, as Ted says: until you get > > enough data or the user has a real presence, don't recommend. > > > > In my case, this isn't practical. For now, (and in my home grown, > deprecated > recommender) I have a "backfill list" (built with system-wide stats) that I > use to make a recommendation when I can't come up with anything from my > existing recommender... but the main point of my email was that I may want > to get rid of this and do as much as possible inside of Mahout. > > > > ... > > > > > > I can offer you a mildly hacky but fairly useful middle-ground: > > PlusAnonymousUserDataModel. It decorates/wraps your DataModel and lets > > you temporarily set preferences for one anonymous new user. (You need > > to think of thread-safety potentially -- you can only do this for one > > user at a time.) > > > > > This would be ideal. I will be using a default userid of 0 for anonymous > users, and as far as the application is concerned, I can treat all > anonymous > users as the same anonymous user for now. > > ... > > > > Appreciated. >