You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@mahout.apache.org by Matthias Böhmer <ma...@m-boehmer.de> on 2010/11/01 07:53:26 UTC

Re: Exploiting the last visited items

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 <sr...@gmail.com>:
> 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 <ma...@m-boehmer.de>
>
>> 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
>>
>

Re: Exploiting the last visited items

Posted by Sean Owen <sr...@gmail.com>.
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 <ma...@m-boehmer.de>

> 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 <sr...@gmail.com>:
> > 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 <ma...@m-boehmer.de>
> >
> >> 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
> >>
> >
>