A music recommendation system built on the Spotify dataset, combining probabilistic user modeling with a KNN-based personalized recommender and Monte Carlo evaluation.
This project is structured in four parts:
-
Part 1 – Exploratory Analysis: Empirical 5-star probability estimation using Laplace smoothing, Bayesian inversion, and feature interaction analysis (artist, year, genre, mood, explicit content).
-
Part 2 – User Variability Modeling: Models the number of rounds until a user gives their first 5-star rating using Geometric and Beta-Geometric distributions. Includes Mann–Whitney U test comparing popular vs. niche preference groups.
-
Part 3 – Recommendation Models:
- Model A (baseline): Non-personalized, ranks by global popularity and recency.
- Model B (personalized): KNN over audio features + metadata using cosine similarity, with disliked-artist penalties and diversity constraints.
-
Part 4 – Monte Carlo Evaluation: Persona-based user simulation to compare models at scale. Evaluation via Hit@k, Average Rating, and Time-to-5★, with paired bootstrap confidence intervals.
- Python, pandas, NumPy, scikit-learn
- scipy (statistical tests, optimization)
- Spotify dataset (tracks, ratings, audio features)