Slope One
From Wikipedia, the free encyclopedia
Contents |
[edit] Item-based collaborative filtering of rated resources
Item-based Collaborative Filtering used in the context (Vucetic, Obradovic 2000 and Sarwar, Karypis et al. 2001) predict the ratings on one item based on the ratings on another item, typically using linear regression (f(x) = ax + b). Hence, if there are 1000 items, there could be up to 1000000 linear regression to be learned, and so, up to 2000000 regressors! This approach can suffer from severe overfitting and the performance is generally poor unless we select only the pairs of items for which several users have rated both items.
If a user rated several items, the predictions are simply combined using a weighted average where a good choice for the weight is the number of users having rated both items.
[edit] Item-based collaborative filtering of purchase statistics
Other examples of item-based collaborative filtering include Amazon's item-to-item patented algorithm which computes the cosine between binary vectors representing the purchases in a user-item matrix.
[edit] Slope one collaborative filtering for rated resources
To drastically reduce overfitting, improve performance and ease implementation, the Slope One family of easily implemented Item-based Rating-Based Collaborative Filtering algorithms was proposed. Essentially, instead of using linear regression from one item's ratings to another item's ratings (f(x) = ax + b), it uses a simpler form of regression with a single free parameter (f(x) = x + b). The free parameter is then simply the average difference between the two items' ratings. It was shown to be much more accurate than linear regression, and it takes half the storage or less.
Example:
- Joe gave a 1 to Dion and an 1.5 to Lohan.
- Jill gave a 2 to Dion.
- How do you think Jill rated Lohan?
- The Slope One answer is to say 2.5 (1.5-1+2=2.5).
[edit] Recommender Systems using Slope One
- hitflip a DVD recommender system
- inDiscover a MP3 recommender system
- RACOFI Composer a generic recommender system by the National Research Council
- Starfrosch an open MP3 blog community
[edit] Open Source software implementing Slope One
Python:
- A well documented Python implementation together with a tutorial
Java:
- Taste: a java-based collaborative library with support for Enterprise Java Beans
- A standalone Java class implementing Slope One.
- The Cofi: A Java-Based Collaborative Filtering Library supports Slope One algorithms (documentation is so-so)
PHP:
- The Vogoo library supports Slope One algorithms (PHP)
- There is PHP source code accompanying a technical report on Slope One algorithms
- A module for Drupal CMS that implements Slope One
[edit] References
- Daniel Lemire, Anna Maclachlan, "Slope One Predictors for Online Rating-Based Collaborative Filtering", In SIAM Data Mining (SDM'05), Newport Beach, California, April 21-23, 2005.
- S. Berkovsky, P. Busetta, Y. Eytani, T. Kuflik, and F. Ricci. "Collaborative Filtering over Distributed Environment". Workshop on Decentralized, Agent Based and Social Approaches to User Modelling, in conjunction with UM, Edinburgh, UK, July 2005.
- Jasna Tusek, Item-based Collaborative Filtering aus der Perspektive des Customer Relationship Managements, Seminararbeit aus Informationswirtschaft, Wirtschafts Universtät, May 2005.
- Daniel Lemire, Sean McGrath, "Implementing a Rating-Based Item-to-Item Recommender System in PHP/SQL", Technical Report D-01, January 2005.