4

I'm considering using PredictionIO for building a music recommendation system.

However, in the user-item interaction, only the following actions are supported: like, dislike, view, conversion, and rate (scale 1 - 5).

My existing data consists only of views (users listen to songs).

How should I translate my data to PredictionIO input? Can I have multiple view records for the same user-item (more views = more weight) or will PredictionIO look at the most recent one based on timestamp?

dgilperez
  • 10,716
  • 8
  • 68
  • 96
riflehawk
  • 157
  • 8

2 Answers2

0

I only use Mahout and so don't know how PredictionIO translates your data into input and algorithm choice.

For Mahout you'd use the item-based recommender using a boolean input and input your "listen" as the action with a value of 1 and the similarity metric SIMILARITY_LOGLIKELIHOOD. LLR ignores the weights anyway. Weights are used in old-style recommenders that try to predict a user's ratings. Most people these days are more interested in ranking better and the above config will give you the best results.

pferrel
  • 5,673
  • 5
  • 30
  • 41
0

Just for completeness, as answered in the PredictionIO user group:

As of current version 0.7, the built-in algos won't aggregate multiple view actions, so more view actions do not mean more weight. You may customize the algorithm to handle that.

If you have multiple U2I actions (e.g., view, like, rate) you can define the conflict resolution criteria (e.g., latest, highest). But in your case with a single action (i.e., user listens to song) multiple "views" will be equivalent to a single "view".

The next version of PredictionIO will have much better support for custom algorithms and engines (e.g., music recommendation).

Laurel
  • 5,965
  • 14
  • 31
  • 57
tstonez
  • 46
  • 4