Title » zMovie
Date » 2006-2007
Advisor » Prof. S. Guha
Details » C# .NET desktop application, prototyping, website design, academic paper, poster and flyer design
zMovie

zMovie is a personal movie recommendation service that gives custom movie suggestions based on previous user ratings by comparing them to those of similar users in the zMovie database. The core engine is based on a user-model based collaborative filtering algorithm using clustering.

Focus, Scope, and Process Planning

From our research on movie recommender, we found that collaborative filtering (CF) algorithms are continually being improved and revised both within academic institutions and industry (e.g. Amazon and Netflix). These algorithms are broadly applied to many categories, not just movies.

Due to our limited resources, zMovie is far more focused and scoped project, combining different aspects seen in existing movie recommender systems (Yahoo! Movies and MovieLens). The project essentially assesses and analyzes the results of varying different parameters in a more sophisticated user-based/model-based CF algorithm as opposed to making comparisons between users across the entire database (memory-based CF). Overall, the implementation process can be separated into two stages:

  1. Algorithm development, testing, and improvement: The core of the project lies evaluating the model-based CF algorithm (e.g. comparing our database of actual vs. predicted user ratings). We have chosen to run this algorithm on existing clean datasets provided by the MovieLens project. This allows us to concentrate on efforts on revising the algorithm as opposed to data gathering and parsing.
  2. Front-end new user predictions and recommendations: The second stage involves developing a front-end Windows client application, allowing a new user to login, rate a certain number of movies, and immediately receive 1) a list of movie recommendations and 2) predicted ratings on new unrated movies. Upon completing the first stage, our goal is to optimize the feedback time for the second stage to make the system more scalable, especially as the number of users in the database grows.

zMovie Application

The screenshots on the left are directly from the C# client application.

Because our focus was more on the technical side in improving the overall accuracy of our recommendations, there were less requirements on the user-interface end outside of being easy-to-use (for demostration purposes), simple, and clean.

Testing the Algorithm

To measure the effectiveness of our algorithm, we aimed to lower the mean absolute error:

Sum of all absolute errors (predicted rating - actual rating) for all items in test dataset divided by size of test dataset.
This test dataset is a 50% partition of the overall dataset provided by MovieLens. Essentially it allows us to run our clustering algorithm (which groups simliar users together) on 50% of the users while treating the other 50% as "new" users and providing them with predicted ratings on items (which translates to recommendations).