You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@mahout.apache.org by Otis Gospodnetic <ot...@yahoo.com> on 2008/10/31 17:05:40 UTC

Taste Rescorer -> no caching

Hi,

* When I load a (File)DataModel and do NOT use a Rescorer, two first recommend call for a user is slow (cca 3 minutes for my dataset/hw combination).  The subsequent call for the same user is quick.  I'm wrapping the Recommender in CachingRecommender.

* I just wrote a no-op Rescorer.  When I include it in the recommend call, *every* call to recommend is equally slow (cca 3 min for me).  I imagine that's related to this comment in CachingRecommender:


  public List<RecommendedItem> recommend(Object userID, int howMany, Rescorer<Item> rescorer) throws TasteException {
    // Hmm, hard to recommendationCache this since the rescorer may change
    return recommender.recommend(userID, howMany, rescorer);
  }

I wonder if the CachingRecommender could store information about the Rescorer that was used for computing recommendations.  Then, when it sees that the Rescorer is the same, it could still use the cached recommendations.  What do you think?

Otis

Re: Taste Rescorer -> no caching

Posted by Sean Owen <sr...@gmail.com>.
It all makes sense and yes you have understood why.

I am now committing a change along the lines you propose, to at least
allow caching as long as the same Rescorer is being used. Comments
welcome.

On Fri, Oct 31, 2008 at 4:05 PM, Otis Gospodnetic
<ot...@yahoo.com> wrote:
> Hi,
>
> * When I load a (File)DataModel and do NOT use a Rescorer, two first recommend call for a user is slow (cca 3 minutes for my dataset/hw combination).  The subsequent call for the same user is quick.  I'm wrapping the Recommender in CachingRecommender.
>
> * I just wrote a no-op Rescorer.  When I include it in the recommend call, *every* call to recommend is equally slow (cca 3 min for me).  I imagine that's related to this comment in CachingRecommender:
>
>
>  public List<RecommendedItem> recommend(Object userID, int howMany, Rescorer<Item> rescorer) throws TasteException {
>    // Hmm, hard to recommendationCache this since the rescorer may change
>    return recommender.recommend(userID, howMany, rescorer);
>  }
>
> I wonder if the CachingRecommender could store information about the Rescorer that was used for computing recommendations.  Then, when it sees that the Rescorer is the same, it could still use the cached recommendations.  What do you think?
>
> Otis
>