user548196
user548196

Reputation: 41

Beyond item-to-item recommendations

Simple item-to-item recommendation systems are well-known and frequently implemented. An example is the Slope One algorithm. This is fine if the user hasn't rated many items yet, but once they have, I want to offer more finely-grained recommendations. Let's take a music recommendation system as an example, since they are quite popular. If a user is viewing a piece by Mozart, a suggestion for another Mozart piece or Beethoven might be given. But if the user has made many ratings on classical music, we might be able to make a correlation between the items and see that the user dislikes vocals or certain instruments. I'm assuming this would be a two-part process, first part is to find correlations between each users' ratings, the second would be to build the recommendation matrix from these extra data. So the question is, are they any open-source implementations or papers that can be used for each of these steps?

Upvotes: 4

Views: 1414

Answers (3)

Sean Owen
Sean Owen

Reputation: 66886

One answer is that any recommender system ought to have some of the properties you describe. Initially, recommendations aren't so good and are all over the place. As it learns tastes, the recommendations will come from the area the user likes.

But, the collaborative filtering process you describe is fundamentally not trying to solve the problem you are trying to solve. It is based on user ratings, and two songs aren't rated similarly because they are similar songs -- they're rated similarly just because similar people like them.

What you really need is to define your notion of song-song similarity. Is it based on how the song sounds? the composer? Because it sounds like the notion is not based on ratings, actually. That is 80% of the problem you are trying to solve.

I think the question you are really answering is, what items are most similar to a given item? Given your item similarity, that's an easier problem than recommendation.

Mahout can help with all of these things, except song-song similarity based on its audio -- or at least provide a start and framework for your solution.

Upvotes: 1

ccleve
ccleve

Reputation: 15799

Taste may have something useful. It's moved to the Mahout project:

http://taste.sourceforge.net/

In general, the idea is that given a user's past preferences, you want to predict what they'll select next and recommend it. You build a machine-learning model in which the inputs are what a user has picked in the past and the attributes of each pick. The output is the item(s) they'll pick. You create training data by holding back some of their choices, and using their history to predict the data you held back.

Lots of different machine learning models you can use. Decision trees are common.

Upvotes: 2

Oswald
Oswald

Reputation: 31647

There are two techniques that I can think of:

  • Train a feed-forward artificial neural net using Backpropagation or one of it's successors (e.g. Resilient Propagation).
  • Use version space learning. This starts with the most general and the most specific hypotheses about what the user likes and narrows them down when new examples are integrated. You can use a hierarchy of terms to describe concepts.

Common characteristics of these methods are:

  1. You need a different function for each user. This pretty much rules out efficient database queries when searching for recommendations.
  2. The function can be updated on the fly when the user votes for an item.
  3. The dimensions along which you classify the input data (e.g. has vocals, beats per minute, musical scales, whatever) are very critical to the quality of the classification.

Please note that these suggestions come from university courses in knowledge based systems and artificial neural nets, not from practical experience.

Upvotes: 0

Related Questions