Netflix is all about connecting people to the movies they love. To help customers find those movies, they developed world-class movie recommendation system: CinematchSM. Its job is to predict whether someone will enjoy a movie based on how much they liked or disliked other movies. Netflix use those predictions to make personal movie recommendations based on each customer’s unique tastes. And while Cinematch is doing pretty well, it can always be made better.
Now there are a lot of interesting alternative approaches to how Cinematch works that netflix haven’t tried. Some are described in the literature, some aren’t. We’re curious whether any of these can beat Cinematch by making better predictions. Because, frankly, if there is a much better approach it could make a big difference to our customers and our business.
Credits: https://www.netflixprize.com/rules.html
#DataScience
#Netflix
#Recommendation System
#Ratings
#Movie PRediction
#Numpy-Pandas
Netflix provided a lot of anonymous rating data, and a prediction accuracy bar that is 10% better than what Cinematch can do on the same training data set. (Accuracy is a measurement of how closely predicted ratings of movies match subsequent actual ratings.)
Get the data from : https://www.kaggle.com/netflix-inc/netflix-prize-data/data
Data files :
The first line of each file [combined_data_1.txt, combined_data_2.txt, combined_data_3.txt, combined_data_4.txt] contains the movie id followed by a colon. Each subsequent line in the file corresponds to a rating from a customer and its date in the following format:
CustomerID,Rating,Date
MovieIDs range from 1 to 17770 sequentially. CustomerIDs range from 1 to 2649429, with gaps. There are 480189 users. Ratings are on a five star (integral) scale from 1 to 5. Dates have the format YYYY-MM-DD.
# Movie by Movie Similarity Matrix
start = datetime.now()
if not os.path.isfile('m_m_sim_sparse.npz'):
print("It seems you don't have that file. Computing movie_movie similarity...")
start = datetime.now()
m_m_sim_sparse = cosine_similarity(X=train_sparse_matrix.T, dense_output=False)
print("Done..")
# store this sparse matrix in disk before using it. For future purposes.
print("Saving it to disk without the need of re-computing it again.. ")
sparse.save_npz("m_m_sim_sparse.npz", m_m_sim_sparse)
print("Done..")
else:
print("It is there, We will get it.")
m_m_sim_sparse = sparse.load_npz("m_m_sim_sparse.npz")
print("Done ...")
print("It's a ",m_m_sim_sparse.shape," dimensional matrix")
print(datetime.now() - start)
from datetime import datetime
import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns
import os
from scipy import sparse
from scipy.sparse import csr_matrix
from sklearn.decomposition import TruncatedSVD
from sklearn.metrics.pairwise import cosine_similarity
import random
knn_bsl_u 1.0726493739667242
knn_bsl_m 1.072758832653683
svdpp 1.0728491944183447
bsl_algo 1.0730330260516174
xgb_knn_bsl_mu 1.0753229281412784
xgb_all_models 1.075480663561971
first_algo 1.0761851474385373
xgb_bsl 1.0763419061709816
xgb_final 1.0763580984894978
xgb_knn_bsl 1.0763602465199797
Name: rmse, dtype: object
Report - A Detailed Report on the Analysis
git clone https://github.com/iamsivab/Movie-Recommendation-Netflix.git
Check out any issue from here.
Make changes and send Pull Request.
? Feel free to contact me @ [email protected]
MIT © Sivasubramanian