Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Generating 'neighbours' for users based on rating

I'm looking for techniques to generate 'neighbours' (people with similar taste) for users on a site I am working on; something similar to the way last.fm works.

Currently, I have a compatibilty function for users which could come into play. It ranks users on having 1) rated similar items 2) rated the item similarly. The function weighs point 2 heigher and this would be the most important if I had to use only one of these factors when generating 'neighbours'.

One idea I had would be to just calculate the compatibilty of every combination of users and selecting the highest rated users to be the neighbours for the user. The downside of this is that as the number of users go up then this process couls take a very long time. For just a 1000 users, it needs 1000C2 (0.5 * 1000 * 999 = = 499 500) calls to the compatibility function which could be very heavy on the server also.

So I am looking for any advice, links to articles etc on how best to achieve a system like this.

like image 858
Austin Platt Avatar asked Sep 29 '08 20:09

Austin Platt


1 Answers

In the book Programming Collective Intelligence
http://oreilly.com/catalog/9780596529321

Chapter 2 "Making Recommendations" does a really good job of outlining methods of recommending items to people based on similarities between users. You could use the similarity algorithms to find the 'neighbours' you are looking for. The chapter is available on google book search here:
http://books.google.com/books?id=fEsZ3Ey-Hq4C&printsec=frontcover

like image 78
Mark Roddy Avatar answered Oct 22 '22 09:10

Mark Roddy