Skip to content
John Quevedo

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.
MovieMatch Streamlit interface with search, ratings, and recommendations panels.

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

ModelRecall@10NDCG@10Coverage@10
ALS0.24630.12530.3704
Popularity0.11250.06050.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.