Updated Feb 15, 2026
Movie Recommendation System
Built a personalized movie recommendation system using collaborative filtering on the MovieLens 100K dataset.
- - Increased catalog coverage from 3.9% to 37.0% of movies.
- - Deployed an interactive Streamlit app that updates recommendations in real time from user-ratings.

Problem
The goal is to infer a new user profile from a short in-session rating list and produce personalized recommendations without retraining.
Approach
- - Converted MovieLens 100K ratings to implicit feedback with a positive threshold (rating >= 4).
- - Trained ALS factors offline to learn movie and user embeddings.
- - Inferred a brand-new user vector from rated movies using regularized least squares in-session.
- - Scored unseen movies with embedding dot products and added simple nearest-liked-movie explanations.
Results
- - Personalized ALS recommendations outperformed popularity recommendations on relevance and ranking quality.
- - Catalog coverage expanded substantially, reducing repeated popular-title bias.
- - The Streamlit app supports search, rating management, recommendations, and similar-movie lookup in one flow.
Technical Evaluation
| Model | Recall@10 | NDCG@10 | Coverage@10 |
|---|---|---|---|
| ALS | 0.2463 | 0.1253 | 0.3704 |
| Popularity | 0.1125 | 0.0605 | 0.0386 |
Relative lift vs popularity baseline: Recall 2.2x · NDCG 2.1x · Coverage 9.6x.
Tradeoffs
- - MovieLens data files are fetched locally and not committed to the repo.
- - Explanations are intentionally simple and prioritize transparency over complexity.