Hi,
I have the same problem. I did not re-compute the similarity of items. But when 
implementing itembased_recommender.recommend(user_id, 10), time varies a lot. 
If the user gave 3 ratings, it takes 620ms.
If the user gave 30 ratings, it takes 369367ms.
 
How can I do to make it real time recommendation?
Thanks very much



>Yes, you do not need to refresh this item-item similarity matrix. The
>default implementations don't do something like this so I believe you
>just need to adjust your process to not recompute this on each new
>user.
>
>It should not be required anyway; a new user entering the system does
>not need a refresh of item-item similarity. A new *item* might, but,
>it is no big deal to be missing this item for some short time until
>the next refresh.
>
>If you are reloading a large data set periodically you probably want
>some system to be constructing the new instance while the old one
>serves, then switch instances when the new one is ready. Then it
>doesn't matter much how long it takes to load.
>
>Please show a stack trace for NoSuchUserException, at least the
>portion in the library.
>
>On Tue, Jul 13, 2010 at 6:41 AM, samsam <[email protected]> wrote:
>> Hi again. I'm getting a really hard time to use Taste using the Large 10M
>> dataset. Using FileDataModel is taking too long to recompute the sim-matrix.
>> I'm assuming a new user has just arrived (not on the user data or item data)
>> and starts voting. Trying to refresh the matrix takes over 25 seconds a
>> large time when considering a website for instance.
>>
>> So I found this class. I tried to use it just like shown on javadocs:
>>
>> PlusAnonymousUserDataModel plusmodel = new
>> PlusAnonymousUserDataModel(datamodel);
>> PearsonCorrelationSimilarity sim = new
>> PearsonCorrelationSimilarity(datamodel);
>> Recommender recommender = new GenericItemBasedRecommender(datamodel,sim);
>> PreferenceArray pref = new GenericUserPreferenceArray(10);
>>        pref.setUserID(0, PlusAnonymousUserDataModel.TEMP_USER_ID);
>>        for(int i=0;i<10;i++){
>>            pref.setItemID(i, votes[i][0]);
>>            pref.setValue(i,votes[i][1]);
>>        }
>>        synchronized(pref) {
>>            plusmodel.setTempPrefs(pref);
>>            recommender.recommend(PlusAnonymousUserDataModel.TEMP_USER_ID,
>> 10);
>>        }
>>
>> But this is causing an NoSuchUserException at the recommender.
>>
>> I tried using the plusmodel on similarity and recommender instead of the
>> realmodel, but did not work as well.
>>
>>
>>
>> On Mon, Jul 5, 2010 at 11:52 PM, Sean Owen <[email protected]> wrote:
>>
>>> Pre-compute the similarity based on what information? You mention that
>>> you don't want to use Pearson and mention item attributes.
>>>
>>> If you are trying to use domain-specific attributes of items, then
>>> it's up to you to write that logic. If you want to say books have a
>>> "0.5" similarity when they are within the same genre, and "0.9" when
>>> by the same author, you can just write that logic. That's not part of
>>> the framework.
>>>
>>> The hook into the framework comes when you implement ItemSimilarity
>>> with logic like that. Then just use that ItemSimilarity instead of one
>>> of the given implementations. That's all.
>>>
>>> On Mon, Jul 5, 2010 at 4:32 PM, samsam <[email protected]> wrote:
>>> > About the second question,I have not the similarity,I want to know is how
>>> to
>>> > pre-compute the item similarity.
>>> >
>>> > On Mon, Jul 5, 2010 at 11:20 PM, Sean Owen <[email protected]> wrote:
>>> >
>>> >> 1) Good question. One answer is to make these "anonymous" users real
>>> >> users in your data model, at least temporarily. That is, they need not
>>> >> be anonymous to the recommender, even if they're not yet a registered
>>> >> user as far as your site is concerned.
>>> >>
>>> >> There's a class called PlusAnonymousUserDataModel that helps you do
>>> >> this. It wraps a DataModel and lets you quickly add a temporary user,
>>> >> recommend, then un-add that user. It may be the easiest thing to try.
>>> >>
>>> >> (BTW the book Mahout in Action covers this in section 5.4, in the
>>> >> current MEAP draft.)
>>> >>
>>> >> 2) Not sure I fully understand. You already have some external,
>>> >> pre-computed notion of item similarity? then just feed that in to
>>> >> GenericItemSimilarity and use it from there.
>>> >>
>>> >> Sean
>>> >>
>>> >> On Mon, Jul 5, 2010 at 1:52 PM, samsam <[email protected]> wrote:
>>> >> > Hello,all
>>> >> > I want to build recommendation engine with apache mahout,I have read
>>> some
>>> >> > reading material,and I still have some questions.
>>> >> >
>>> >> > 1)How to recommend for anonymous users
>>> >> > I think recommendation engine  should return recommendations given a
>>> item
>>> >> > id.For example,a anonymous user reviews some items,
>>> >> > and tell the recommendation what he reviews,and compute with the
>>> reviews
>>> >> > histories.
>>> >> >
>>> >> > 2)How to compute the items similarity dataset
>>> >> > Without use items similarity dataset,we can make ItemBasedRecommender
>>> >> > with PearsonCorrelationSimilarity,but
>>> >> > we need to make recommendations with extra attributes of items,
>>> >> > so we should use the items similarity dataset,how to build the dataset
>>> is
>>> >> > the key point.
>>> >> > --
>>> >> > I'm samsam.
>>> >> >
>>> >>
>>> >
>>> >
>>> >
>>> > --
>>> > I'm samsam.
>>> >
>>>
>>
>>
>>
>> --
>> I'm samsam.
>>

Reply via email to