1
2

I imagine iTunes just confers with an Apple server somewhere (I choose Genius only because it's the most famous example of this kind of technology), but how is it implemented there? I'm wondering not only about the machine-learning aspects, but the feature extraction & research/common knowledge about how well music fits in a group. What useful features are there on music? Metadata? From the audio? Expert annotations? How can you use those features to choose other songs which will "go together" well?

asked Jul 06 '10 at 23:13

sbirch's gravatar image

sbirch
2415711


4 Answers:

Genius is a recommender system. There are many techniques that can be used to implement one. It all depends on what kind of data you have access to. It may be a user-item matrix of explicit music ratings, implicit feedback (what has been bought/played), or metadata about users, metadata about songs. Genius probably uses the iTunes database of sales and plays to identify songs that have been bought/played together.

Metadata is not really useful for recommendations if you have enough data in the user-item matrix as the Netflix challenge has shown. However for new users and new songs you may not have enough history and you get into a cold start problem. There metadata can help you find songs in the same genre, by the same artist or to find users who are similar in terms of age, geography, language, etc.

The most successful techniques for making recommendations come from collaborative filtering.

answered Jul 07 '10 at 05:03

Vaclav%20Petricek's gravatar image

Vaclav Petricek
42031012

edited Jul 07 '10 at 05:05

This paper says that they are probably only using metadata.. I am not done reading it yet, but it seems to have a lot of good ideas regarding this

answered Jul 07 '10 at 00:00

Aditya%20Mukherji's gravatar image

Aditya Mukherji
2251612

I don't know how Apple does it, but the very simplest way would be to get co-occurrence statistics: Song A has been seen together with song B in the same user library x times, so they probably are related, etc. You can use mutual information between songs as well.

You can also use clustering methods on the users (i.e. their libraries), e.g. using graph-based clustering: Each user library is a node in a graph, and user libraries are connected through the songs they share. This gives you a big weighted undirected graph of user libraries, in which you can find the connected components, which correspond to clusters of users with similar tastes. You can then recommend songs to user A based on songs in libraries that are close to user A's library in the graph.

Last.fm uses such approaches that look at co-occurrence of songs and community features, whereas pandora actually pays people to listen to songs and enter intrinsic features of the music and its style. See here for a description of these different music recommendation systems.

answered Jul 07 '10 at 00:59

Frank's gravatar image

Frank
1349274453

Rumors I have heard are that Apple are using an adaptation of the LDA system out of Mahout. That is just a rumor.

I have built very successful music recommendation engines (remember Musicmatch, anyone) using fairly simple cooccurrence based systems. Veoh's video recommendations worked roughly the same way. At Musicmatch, if just a handful or two of people listened to an track, we could pretty well peg recommendations for that track and often for the artist as well.

Had I to do it over, I would use something more like this: http://arxiv.org/abs/1006.2156

The reasons are that meta-data and cold-start are important problems, especially if you don't already have a large population of users feeding you play logs.

answered Sep 24 '10 at 02:29

Ted%20Dunning's gravatar image

Ted Dunning
636815

Your answer
toggle preview

powered by OSQA

User submitted content is under Creative Commons: Attribution - Share Alike; Other things copyright (C) 2010, MetaOptimize LLC.