A movie recommendation system built using the MovieLens dataset that suggests top movies to users based on their ratings using collaborative filtering and
This project builds a movie recommendation system using both:
- Collaborative Filtering (SVD)
- Content-Based Filtering (TF-IDF)
These approaches are combined into a hybrid model to improve recommendation quality and address real-world challenges such as the cold-start problem.
Streaming platforms need to recommend relevant content to users. However:
- New users have little interaction data
- New movies may not have ratings
- Single-model systems are limited
This project develops a hybrid recommendation system that balances:
- Personalization (user preferences)
- Content similarity (movie features)
The dataset includes:
- User ratings
- Movie titles
- Genres
- Tags
- Data loading and inspection
- Handling missing values
- Removing duplicates
- Exploratory analysis (rating distributions, sparsity)
- Merged ratings and movie metadata
- Filtered low-activity users and movies
- Created combined text features (genres + tags)
- Simple collaborative filtering benchmark
- Matrix factorization using Singular Value Decomposition
- Captures latent relationships between users and movies
- Hyperparameter tuning applied
- Improved performance across evaluation metrics
Models were evaluated using:
- RMSE (Root Mean Squared Error)
- MAE (Mean Absolute Error)
- Precision
Tuned SVD achieved the best predictive performance
- Applied TF-IDF to genres and tags
- Converted text into numerical vectors
- Used cosine similarity to measure movie similarity
Purpose:
- Recommend similar movies
- Handle the cold-start problem
The hybrid model combines:
- Predicted ratings (SVD) → personalization
- Similarity scores (TF-IDF) → content relevance
- Tested different alpha values
- Observed how recommendations change:
- Lower α → more similarity-based
- Higher α → more personalized
- Recommends unseen movies using tuned SVD
- Combines SVD predictions with TF-IDF similarity
- Produces more balanced recommendations
- Tuned SVD improved prediction accuracy
- TF-IDF enabled content-based similarity
- Hybrid model provided a more flexible and robust system
- TF-IDF depends on quality of text data
- Hybrid model requires tuning (alpha selection)
- Evaluation differs between ranking and prediction tasks
- Use advanced NLP techniques (e.g., embeddings)
- Improve feature engineering
- Explore deep learning recommendation models
- Deploy as a web application
This project demonstrates that:
- Model tuning significantly improves performance
- Collaborative filtering alone is not sufficient
- Content-based methods help solve cold-start problems
- Hybrid models provide a more practical real-world solution
- Python
- Pandas, NumPy
- Scikit-learn
- Surprise (SVD)
- TF-IDF (NLP)
- Tableau
-
Clone the repository git clone https://github.com/Marian-amo/Movies-Recommendation-System-Project
-
Create a virtual environment (recommended) python -m venv venv
-
Install dependencies pip install -r requirements.txt
-
Download Dataset https://grouplens.org/datasets/movielens/
-
Run Jupyter Notebook jupyter notebook Open:notebook.ipynb