ML Engineer · 2025
Movie Recommendation System
SVD collaborative filtering — the research foundation that became LumoroX.
PythonSurpriseSVDCollaborative Filtering

Goals
- Move discovery beyond top-N popularity lists.
- Produce personalised top-10 recommendations per user profile.
- Beat a popularity baseline on a measurable error metric.
- Keep the model small enough to serve interactively.
Approach & architecture
- 1
Data prep
Built a user-item rating matrix and split it into train and holdout sets by user.
- 2
Matrix factorization
SVD from the Surprise library learned latent user and item factors from sparse ratings.
- 3
Tuning
Grid search over factor count, learning rate and regularisation, scored on RMSE.
- 4
Evaluation
Compared against a popularity baseline and inspected per-user top-10 lists for plausibility.

Tech stack
Python
Surprise
SVD
Collaborative Filtering

Results
18%
RMSE improvement over the popularity baseline
Top-10
personalised lists per distinct user profile
→ LumoroX
extended into a live discovery product