Movie Recommendation Project
Predicting unseen movie ratings from about 10 million user ratings
A hybrid recommender built for an ExploreAI Academy community competition on Kaggle, as the optional final project of the ALX Data Science programme. It combines 50-factor SVD with LightGBM on the full dataset and improved the public-leaderboard RMSE from 1.21 to 0.82 over eight submissions.
At a glance
- Status
- Competition entry
- Type of work
- Programme final project (optional)
- Context
- ALX Data Science · ExploreAI Academy community competition on Kaggle
- Years
- 2026
- Categories
- Machine Learning & Data
- Source code
- Public repository
Technology
Problem
Predict the rating a user would give a film they have not rated yet, using their rating history and information about the films.
Who it’s for
A course competition scored by RMSE. The same approach applies to recommendation features in streaming and e-commerce catalogues.
What I built
- A 50-factor SVD model that captures user and movie latent factors from the rating matrix.
- A LightGBM model that takes SVD outputs together with engineered features, making it a hybrid of collaborative and content signals.
- A feature set reported at 156 features, covering collaborative signals, content-based encodings and temporal patterns.
- Training on the full dataset of about 10 million ratings, without sampling.
- Eight leaderboard submissions, each tested against the previous best.
Architecture
- DataAbout 10 million user–movie ratings plus movie metadata.
- Collaborative filtering50-factor SVD on the rating matrix.
- FeaturesSVD outputs combined with engineered collaborative, content and temporal features.
- ModelLightGBM gradient-boosted regressor predicting the rating.
- EvaluationRMSE, checked through public-leaderboard submissions.
Engineering challenges
Working at full scale
The models trained on all of the roughly 10 million ratings rather than a sample.
Combining two modelling families
SVD factors become inputs to a gradient-boosted model, so the model can learn from both collaborative and content signals.
Results
| Measure | Value | Evidence |
|---|---|---|
| RMSE (baseline) | 1.21 | Kaggle public leaderboard |
| RMSE (best) | 0.82 | Kaggle public leaderboard, 8 submissions |
Limitations
- The 0.82 figure is a public-leaderboard score. It is not a final private-leaderboard result or a production metric.
- How much each feature group contributed to the final score has not been broken down here.