This is a movie recommendation system that suggests movies to users based on their preferences. The system utilizes various recommendation methods, including content-based filtering (most popular movies), collaborative filtering, and recommendation specific to existing users, to provide personalized movie recommendations.
A small deployed version of this app can be found here
- Movie search: Users can search for specific movies and view detailed information about them, including ratings and reviews.
- Recommendation generation: The system generates movie recommendations for each user based on various recommendation methods, including content-based filtering (most popular movies), collaborative filtering, and recommendation specific to existing users.
Anaconda installation is necessary for this project as using pip to install 'scikit-surprise' package make create problems. For insatallation of Anaconda package, please refer here.
- Clone the repository:
git clone https://github.com/abhishek-jana/movie-recommendation-system.git
- Create a new environment using the following command:
conda create --name myenv
- Activate the newly created environment:
conda activate myenv
- Install scikit-surprise from the conda-forge channel:
conda install -c conda-forge scikit-surprise
- Install the required dependencies:
cd movie-recommendation-system
pip install -r requirements.txt
- Run the development server:
streamlit run app.py
- Access the application in your web browser at
http://localhost:8501/
- Start the application and access it in your web browser.
- Use the movie search functionality to find specific movies and view their details, including ratings and reviews.
- Check the recommendation page to see personalized movie suggestions generated using various recommendation methods: content-based filtering (most popular movies), collaborative filtering, and recommendation specific to existing users.
Here is a screenshot of the movie recommendation system app:
The movie data for this project is gathered from the following sources:
-
MovieLens: MovieLens provides a collection of movie ratings data from various sources, which is used to train the recommendation models. Full: 27,000,000 ratings and 1,100,000 tag applications applied to 58,000 movies by 280,000 users. Includes tag genome data with 14 million relevance scores across 1,100 tags. Last updated 9/2018.
-
TMDB: TMDB is a comprehensive movie database that provides detailed information about movies, including ratings, reviews, and metadata. It is used to supplement the movie data and provide additional information for better recommendations.
Deployment The application is deployed using Streamlit, an open-source framework for building interactive web applications. The deployment setup instructions can be found in the Streamlit documentation.
The following workflows are implemented in the movie recommendation system:
- Movie Search: Provides users with the ability to search for specific movies and view detailed information, including ratings and reviews.
- Recommendation Generation: Utilizes various recommendation methods, including content-based filtering, collaborative filtering, and user-specific recommendations, to generate personalized movie suggestions.
- Update
config.yaml
. - Update
secrets.yaml
(optional) for database credentials. - Update
params.yaml
. - Update the entity.
- Update the configuration manager in src config.
- Update the components.
- Update the pipeline.
- Update the main.py.
Please note that these steps are specific to the project and should be followed accordingly for the movie recommendation system.
Some potential areas for future improvement and expansion of the movie recommendation system include:
- Implementing advanced recommendation algorithms, such as matrix factorization and deep learning-based models.
- Enhancing the user interface and user experience of the application.
- Incorporating additional data sources and features, such as user demographics and movie genres, to improve the accuracy of recommendations.
- Creating an account or logging in to an existing account to personalize recommendations based on individual user preferences.
- Allowing users to rate movies they have watched to further improve the accuracy of recommendations.
- Providing personalized movie recommendations specific to existing users based on their viewing history and preferences.
- Implementing a feedback mechanism for users to provide feedback on recommended movies, helping to refine and enhance the recommendation process.
Contributions are welcome! If you have any ideas, bug reports, or feature requests, please open an issue on the GitHub repository. Pull requests are also appreciated.
This project is licensed under the MIT License.
I would like to acknowledge the following resources and libraries that were instrumental in the development of this movie recommendation system:
- MovieLens for providing the movie ratings dataset used for training the recommendation models.
- TMDB for providing comprehensive movie data and metadata to enhance the recommendations.
- Streamlit for the open-source framework used for building the interactive web application.
- Python and its various libraries, including Pandas, and Scikit-learn, for their contributions to data processing, machine learning, and recommendation algorithms.
We extend our gratitude to the developers and maintainers of these resources for their valuable contributions to the field of movie recommendation systems.
Here are some helpful references and resources related to movie recommendation systems:
- Recommendations with IBM: A GitHub repository containing a project on building recommendation systems using IBM Watson Studio.
- Getting Started with a Movie Recommendation System: A Kaggle notebook providing an introduction and code examples for building a movie recommendation system.
- Movie Recommendation System: A Kaggle notebook showcasing the implementation of a movie recommendation system.
These references can provide additional insights, ideas, and code examples for building and enhancing movie recommendation systems.