You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@mahout.apache.org by aaron barnes <aa...@stasis.org> on 2011/06/15 21:27:44 UTC

a modified booleanrecommendation strategy with 'likes'

I'm working with data very similar to the typical storefront item 
scenario.  We're trying to find items that a user might like based on 
commonalities between them and other users who have bought similar items.

LogLikelihoodSimilarity is working very well for us.  However, our 
storefront also has the idea of 'liking' something you have purchased. 
I'm looking for a way to incorporate this data to improve our 
recommendations so that purchasing commonalities are the primary reason 
things are recommended, but the additional 'liking' of a purchase gives 
it extra weight.

I'm thinking this still most closely resembles a 'boolean' model, 
because it's not a matter of the user assigning a rating to every 
purchase, so we're not looking primarily for users who have given 
similar ratings to similar items, but rather giving extra weight to 
items that a user particularly likes.

Am I on the right track here? Any advice on whether it would be better 
to modify LogLikelihoodSimilarity to add an additional multiplier when a 
user has 'liked' something?  or is there a better preference based 
similarity model i should use that would still give me a similar effect 
to a boolean?

--aaron

Re: a modified booleanrecommendation strategy with 'likes'

Posted by Ted Dunning <te...@gmail.com>.
On Wed, Jun 15, 2011 at 9:27 PM, aaron barnes <aa...@stasis.org> wrote:

> I'm thinking this still most closely resembles a 'boolean' model, because
> it's not a matter of the user assigning a rating to every purchase, so we're
> not looking primarily for users who have given similar ratings to similar
> items, but rather giving extra weight to items that a user particularly
> likes.
>

I recommend just using a cutoff and considering the rating to be binary.


>
> Am I on the right track here? Any advice on whether it would be better to
> modify LogLikelihoodSimilarity to add an additional multiplier when a user
> has 'liked' something?  or is there a better preference based similarity
> model i should use that would still give me a similar effect to a boolean?
>

I would avoid this.

But the first step is to look at your data critically.  How much rating data
do you actually get?  How much  other data?

Re: a modified booleanrecommendation strategy with 'likes'

Posted by aaron barnes <aa...@stasis.org>.
Of course, I was making it too complicated.  Taking a look at the source 
for GenericBooleanPrefItemBasedRecommender made it much clearer.  Just 
overriding doEstimatePreference worked quite well, and as a bonus, i 
don't need to regenerate the ItemSimilarities and get live results when 
people like/unlike their content.

Thanks kindly for the suggestion, I'm gradually wrapping my head around 
all these classes and their roles.

--aaron

On 11-06-15 4:38 PM, Sean Owen wrote:
> In item-based recommenders, similarity is used as a weight. You can
> modify this weight however you like. I think you would find it most
> straightforward to modify the recommender to increase the weight when
> you are dealing with an item the user "likes", rather than modify the
> similarity. You could simply double it, for example.
>
> On Wed, Jun 15, 2011 at 8:27 PM, aaron barnes<aa...@stasis.org>  wrote:
>> I'm working with data very similar to the typical storefront item scenario.
>>   We're trying to find items that a user might like based on commonalities
>> between them and other users who have bought similar items.
>>
>> LogLikelihoodSimilarity is working very well for us.  However, our
>> storefront also has the idea of 'liking' something you have purchased. I'm
>> looking for a way to incorporate this data to improve our recommendations so
>> that purchasing commonalities are the primary reason things are recommended,
>> but the additional 'liking' of a purchase gives it extra weight.
>>
>> I'm thinking this still most closely resembles a 'boolean' model, because
>> it's not a matter of the user assigning a rating to every purchase, so we're
>> not looking primarily for users who have given similar ratings to similar
>> items, but rather giving extra weight to items that a user particularly
>> likes.
>>
>> Am I on the right track here? Any advice on whether it would be better to
>> modify LogLikelihoodSimilarity to add an additional multiplier when a user
>> has 'liked' something?  or is there a better preference based similarity
>> model i should use that would still give me a similar effect to a boolean?
>>
>> --aaron
>>


Re: a modified booleanrecommendation strategy with 'likes'

Posted by Sean Owen <sr...@gmail.com>.
In item-based recommenders, similarity is used as a weight. You can
modify this weight however you like. I think you would find it most
straightforward to modify the recommender to increase the weight when
you are dealing with an item the user "likes", rather than modify the
similarity. You could simply double it, for example.

On Wed, Jun 15, 2011 at 8:27 PM, aaron barnes <aa...@stasis.org> wrote:
> I'm working with data very similar to the typical storefront item scenario.
>  We're trying to find items that a user might like based on commonalities
> between them and other users who have bought similar items.
>
> LogLikelihoodSimilarity is working very well for us.  However, our
> storefront also has the idea of 'liking' something you have purchased. I'm
> looking for a way to incorporate this data to improve our recommendations so
> that purchasing commonalities are the primary reason things are recommended,
> but the additional 'liking' of a purchase gives it extra weight.
>
> I'm thinking this still most closely resembles a 'boolean' model, because
> it's not a matter of the user assigning a rating to every purchase, so we're
> not looking primarily for users who have given similar ratings to similar
> items, but rather giving extra weight to items that a user particularly
> likes.
>
> Am I on the right track here? Any advice on whether it would be better to
> modify LogLikelihoodSimilarity to add an additional multiplier when a user
> has 'liked' something?  or is there a better preference based similarity
> model i should use that would still give me a similar effect to a boolean?
>
> --aaron
>