In this project I built Movie-Recommender using memory/neighborhood-based and model-based methods.
Using Non-negative matrix factorization (NMF) algorithm, I decomposed the data into two non-negative matrices P(user-matrix) and Q(movie matrix) with an inner dimension of 20(number of components) to find latent features. Recommendations for a new user were derived by calculating the dot product of new user's ratings vector and Q matrix, that represents the strength of the associations between movies and the features. 5 random unseen movies from the highest rated movies in the last 10 years(grouped by year) and 5 unseen highest rated of all time movies are given as recommendations.
In Neighborhood-Based Collaborative Filtering, recommendations for a new user were derived by calculating cosine similarity between all users (user-based filtering), selecting users that showed similar activity and recommending 10 movies that they have liked and that the new user hasn’t seen yet.
Finally, I built a Flask recommender app to visualize the results.