This project consists of a Movie Recommender System using The Movies Dataset from kaggle. This dataset contains metadata for all 45,000 movies listed in the Full MovieLens Dataset. As well as 26 million ratings from 270,000 users for all 45,000 movies. Ratings are on a scale of 1-5 and have been obtained from the official GroupLens website.
The deep_film recommender system is supplemented by its very own MongoAtlas database, where all movie and user data is stored, an API for better connectivity and a Streamlit Dashboard for user interaction. Down below you will find instructions to use both the Streamlit Dashboard as well as the API.
deep_film uses a Singular Value Decomposition (SVD) algorithm as it harnessed the best results in the least amount of time. K-Nearest Neighbours (KNN) was also tested, as well as other matrix factorization based algorithms. SVD++ and NMF are both implemented but are not used in the final recommendation system for different reasons. SVD++ yielded better results than SVD however took an impractical amount of time to recommend films to new users. NMF gave objectively worse and fewer recommendations than SVD.
Singular Value Decomposition (SVD) is a method used in linear algebra that is used as a dimensionality reduction technique in machine learning. SVD is a matrix factorisation technique, which reduces the number of features of a dataset. In the context of this movie recommender system, SVD is used as a collaborative filtering technique. It uses a matrix structure where each row represents a user, and each column represents an item. The elements of this matrix are the ratings that are given to items by users.
Both the API and the Dashboard are hosted on heroku servers, urls can be found in their respective sections.
If you wish to know more about this project and the development process don't hesitate to send me an email.
To use my recommendation system you must first rate twenty movies on a scale from 1 to 5. After completion, the algorithm will calculate up to 10 movies that fit your preferences. Head over to the Streamlit Dashboard section to learn more on how to use my recommender system.
π‘ API
This project is complemented by its own API acting as an intermmediary between the MongoAtlas database and the Streamlit dashboard. If you wish to use the API directly, you may query the endpoints listed down below.
/movies
β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β
/movies/search?name
Param | value |
---|---|
name (REQUIRED) | {desired movie} |
β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β
/movies/poster?name
Param | value |
---|---|
name (REQUIRED) | {desired movie} |
β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β
/add?rating&userId&movieId
Param | value |
---|---|
rating (REQUIRED) | {Rating from 1 to 5} |
userId (OPTIONAL) | {Corresponding UserId} |
movieId (REQUIRED) | {Corresponding MovieId} |
β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β
/predictions
β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β
/ratings
β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β
/ratings/new
β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β β
π Dashboard
The implementation of Deep Film is hosted on a Streamlit dashboard.
Click on the header above to visit dashboard.
Ibtesam Ahmed's "Getting Started with a Movie Recommendation System"