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.

Image:Simplicity_diagram.png

Example:

  1. Joe gave a 1 to Dion and an 1.5 to Lohan.
  2. Jill gave a 2 to Dion.
  3. How do you think Jill rated Lohan?
  4. The Slope One answer is to say 2.5 (1.5-1+2=2.5).

[edit] Recommender Systems using Slope One

[edit] Open Source software implementing Slope One

Python:

Java:

PHP:

[edit] References