I've always wondered about how and what the best way to go about implementing the 'Genius' feature on iTunes.
I could probably brute force it, but was just wondering if anyone had any insight.
Thanks.
I've always wondered about how and what the best way to go about implementing the 'Genius' feature on iTunes.
I could probably brute force it, but was just wondering if anyone had any insight.
Thanks.
The Genius algorithm is an example of a recommendation system, which is a hot topic in E-commerce systems. So much so that Netflix had a $1 million prize that went on for several years to improve their recommendation system by a mere 10%.
On iTunes you have a collection of music. Genius can make assumptions that if you have this music that you must like it. If enough people have song B that have song A then Genius can say that if you have song A you'll probably like song B.
Just having the song would be a fairly weak recommendation. Better would be if the user had rated that music so you can improve the strength of the "recommendation" on that basis.
I'd highly recommend reading If You Liked This, You’re Sure to Love That as a good primer on recommendation systems.
Important point: you have to have data from lots of users. You couldn't do this yourself by brute force (unless you mean creating it entirely by hand).
Step1- collect the data, for all the clicks/play per user. That would be lots of data.
Step2- make a ranking/recommendation list generation system. For every song, generate a ranking/priority type list with all the products/songs people are viewing/playing. A simple example say no of people share the same combination or the amount of play time each song is played for.
Step3- keep a limit (say top10) to show your recommendations from the above made list for a song.
This was not so difficult, the trick or the genius lies in adding weights to the list you make in step2. How your recommendation system works with weights (for ex page rank).
I might have disappointed data mining engineers by giving such a naive/simple explanation to extremely complex computer science field. Do pardon me. :)