Whatever works for you, works, though I imagine there are options that more directly and efficiently attack the problem.
The trick is that you don't want to actually do all the work to re-compute recommendations. Some implementations like slope-one and SVD-based, by their nature, can update recommendations from new data fairly quickly. For other algorithms it's a question of approximating how the new data changes recommendations. It's probably safe to assume one new data point doesn't change recommendations drastically; it is probably not worth figuring out how much the new data point affected existing recommendations since the answer is "not much" in general. It is worth figuring out which items are most affiliated with the new data point since those handful are the most likely to be new recommendations. While you can't really get the 'right' answer in this case the goal is merely to get a 'good' approximate answer, quickly. Soon enough you can re-run all recs, asynchronously, in the background to really incorporate that new data. This is actually exactly what I am working on at large scale for an upcoming project. 2010/11/1 Matthias Böhmer <[email protected]> > I don't want to have the recent items in the data model. My data model > is based on more historical data, and for the recent items I just > guess a preference value. I have already tried to use an IDRescorer, > but this its computation takes way too long since it is computed for > every item. For me it seems reasonable, to use my standard recommender > besides the anonymous user recommender for recent items and combine > their results. Or are there any better ideas? > > 2010/10/30 Sean Owen <[email protected]>: > > Recent item associations aren't any different than others -- if you want > to > > use them as data, they need to go in the DataModel. And then > recommendations > > need to be re-computed to take them into account. That's the simplistic > > answer. > > > > In practice this can be inefficient for some algorithms. Slope one is > good > > at incorporating new information like this; others aren't as efficient. > > > > This is actually an area of personal interest for me. It's ideal to be > able > > to regularly re-compute recommendations based on all data, but, between > > those large recomputations, "adjust" them imperfectly to incorporate very > > new information. I'm in the process of creating a framework for just > this. > > It is not trivial. > > > > 2010/10/30 Matthias Böhmer <[email protected]> > > > >> Hello, > >> > >> I played around a little bit with recommendations for anonymous users. > >> Therefore I have simply build a preference array based on the recently > >> visited items, like it is explained in "Mahout in Action". This seems > >> to work out pretty well since the recent items perfectly relate the > >> user's latest interests. However, now I want to include the most > >> recent visited items into my main recommender, i.e. the recommender > >> based on the historical data of known users. Any ideas on how to add > >> temporary user preferences to the data model? As far as I understood > >> the PlusAnonymousDataModel, this is no solution since it only supports > >> one user and is not thread safe. Thanks in advance! > >> > >> Best, > >> Matthias > >> > > >
