Implementation of a movie recommendation system for the Applied ML at Scale course taught by Prof. Ulrich Paquet at AIMS South Africa
# Collaborative Filtering-based Recommendation System using the MovieLens 32M Dataset
This project implements high-performance Matrix Factorization (MF) algorithms (bias-only baseline, standard MF using user and item latent vectors, hybrid MF incorporating genre-based feature priors) using **Alternating Least Squares (ALS)** for a collaborative filtering-based movie recommendation system. It leverages **Numba JIT compilation** and **Sparse Matrices** to scale and optimize training on the MovieLens 32M dataset.
## π Links
-
- **π View Project Report**
## Tools Used
- **uv** - For managing dependencies and virtual environment in Python.
- **Numba**: JIT compiler for accelerating ALS training loops.
- **OmegaConf**: Experiment configuration management.
## π Project Structure
```text
.
βββ configs/ # OmegaConf configuration files
βββ data/ # Raw MovieLens 32M dataset
βββ figures/ # Generated plots
βββ logs/ # Execution logs
βββ notebooks/ # Jupyter notebooks for experimentation
β βββ eda.ipynb # Exploratory Data Analysis
β βββ experiments.ipynb # Unoptimized models
β βββ experiments_optimized.ipynb # Optimized models (using Numba)
βββ report/ # LaTeX report and PDF
βββ results/ # Serialized model weights (.npz) and metrics
βββ scripts/ # CLI scripts for downloading data, etc.
βββ src/ # Source code package
β βββ data/ # Dataset loading, indexing, splitting
β βββ models/ # ALS models implementations
β βββ inference/ # Inference helpers
β βββ utils/ # Logging, plotting, and serialization helpers
βββ pyproject.toml # Project dependencies
```
## Key Files & Modules
- `notebooks/experiments_optimized.ipynb`:
The primary entry point for experiments. Runs full-scale training, hyperparameter tuning, and gen β¦