Real-time Collaborative Filtering Demo

Overview

Collaborative Filtering is a technique for predicting the preferences of a user by comparing their history to other users and items. Recommendation systems use this information to suggest related items matching a user's tastes. Everyday examples include Amazon.com's product recommendations and your TiVo's suggested shows. The data used in this demo is based on my results from the Netflix Prize contest.

Real-Time Filtering

As with most statistical problems, the larger the sample of data, the more accurate the result will be. Unfortunately, learning a new user's tastes and correlating them with a large database can be very time consuming and expensive. For this reason, a major goal is to develop tools for performing filtering in real time.
This demo shows an example of predicting movie ratings based on your input. It works based on the premise that there are some number of shared categories among movies and users have a relatively consistent preference for each category. It contains just a small sample of movies and still manages some decent results.

Instructions

- Rate each of the following movies on a scale of 1 to 5 (1 = "you hated it" and 5 = "you loved it").
- Even if you haven't seen a movie, you can still rate the movie based on how you think you might like it.
- You can also click on the name of the movie to bring up a new window containing additional information.
- As you start rating the movies, you can see the system learning your preferences and changing its scores.
- The worst scores should be at the half way mark where it is switching from the default preferences to yours.
- The numbers on the right are the predicted rating and the error when compared to your actual rating.
- The lower the error the better: 'great' (< 0.25) is highlighted in green and 'bad' (> 1.0) is red.
- The "Clear" button will reset all of the ratings and "Default" will show you my preferences for comparison :).
- You must have javascript enabled in your browser for this demo to work.