2014年11月20日星期四

Implemented Recommender System of Movie Rating

This blog is about an assignment of Machine Learning course on Coursera by Andrew NG. The assignment is to implement the collaborative filtering learning algorithm and apply it to a dataset of movie rating.
About Dataset
This dataset consists of ratings of 1 to 5. The dataset has 943 users, and 1682 movies.

There are two matrices in the dataset. One is matrix Y (a num_movies x num_users matrix) stores the rating y(i,j) (from 1 to 5). The matrices R is an binary-valued indicator matrix, where R(i,j)=1 if user j gave a rating to movie i, and R(i,j)=0 otherwise. The objective of collaborative filtering is to predict movie ratings for the movies that users have not yes rated, that is, the entries with R(i,j)=0.

The Collaborative filtering learning algorithm
Basic concepts:
1. By grouping similar users, we can perform recommendation based on collaborative filtering.
2. Does not require a lot of information about users & items itself.
3. Based on the history of user-item interactions.

Our objective function is collaborative filtering cost function

Then we need to solve the theta and x that minimize the J. The gradient of J is as below

We can either use gradient descent or other advanced optimization method to obtain the value of theta and x.

Once we get these parameters, we can predict the rating of movies which users do not actually rated.

        y_predict = theta*x

Part of results is as below:





3 条评论:

  1. collaborative filtering is a good way to filter some useless informations and return users selected informations. You use this algorithm in movie rating and I think it is a enlightening idea for me. Thank you!

    回复删除
  2. Very clear blog! Recommender system can really help improve the user experience by valuable recommendation from large amount of content. The content you post helps me better understand recommender system. Thanks!

    回复删除
  3. The recommendation system is useful for providing relevance. And it seems many people like to use it to choose the option.

    回复删除