This repository contains a recommender system implemented using NumPy, Jax and CUDA. The system uses collaborative filtering techniques to generate personalized recommendations based on user-item interaction data.
- Collaborative Filtering: Implements matrix factorization to learn user and item representations.
- Alternating Least Squares (ALS): Parallisable optimising
- Datastructrue A custom data structure usign hash tables and indexing for fast retrieval
- Bias Handling: Incorporates user and item biases for improved recommendation accuracy.
To set up the recommender system, follow these steps:
- Clone the repository:
- Train the model:
- Make predictions:
MovieRecommender/
│
├── src/
│ ├── cpp/ # C++/CUDA backend (ongoing .. )
│ │ |
│ │ ├── # Header file with declarations
│ │ ├── # CUDA code gpu
│ │ └── Makefile
│ ├── jax/ # JAX implementation
│ │ └── model.py
│ │
│ ├── bindings/
│ │ ├── recommender_pybind.cpp
│ │ └── setup.py
│ └── common/ # Shared utilities
│ ├── data_loader.py
│ └── config.py
│
├── main.py/ # Main
│ ├── train
│ ├── recommend
│ ├── benchmark # C++/CUDA vs JAX
│ └── config.yaml
│
├── Data/ # Movie data and model storage
│ ├── 100k.csv
│ ├── 25M.csv
│ └── models/
│
└── README.md