This project explores several approaches to building a recommender system using the KuaiRec dataset.
Given the size and richness of the dataset, we chose to focus on predicting whether a user will like a video. According to the referenced paper, a video is considered "liked" when watch_ratio >= 2.
We experimented with several models, each representing a different paradigm in recommender systems:
-
ALS (ranking, code): A collaborative filtering technique that learns latent user and item factors from implicit feedback.
-
DNN (classification): A fully connected neural network that takes user and item features as input to predict whether a user will like a video.
-
Item2Vec (ranking, code): Inspired by Word2Vec, this model learns item embeddings from co-occurrences in users' interaction sequences. It captures item similarity in an unsupervised way and uses nearest-neighbor search to generate recommendations.
-
Sequence-aware model (classification): A sequence model that uses precomputed Item2Vec embeddings to capture the ordering of user interactions and model the temporal dynamics of user behavior.
-
Decision Tree Classifier (classification, code): A supervised learning model trained on item features to predict whether a user will like a video.
Additionally, the Stats notebook contains exploratory data analysis and useful statistics about the dataset.
The evaluation metrics vary depending on the type of model:
-
Ranking models (ALS, Item2Vec):
Precision@K,Recall@K,MAP@K,NDCG@K,HitRate@K -
Classification models (Decision Tree, DNN, Sequence-aware model):
Accuracy,F1-score,AUC,Recall@K,HitRate@K
Run the setup script to prepare the dataset and environment:
./setup.shThen install the required dependencies:
pip install -r requirements.txt.
├── README.md
├── data/ # Generated by running setup.sh
├── requirements.txt # List of required libraries
├── setup.sh # Script to download, unzip, and organize the dataset
└── src/
├── ALS.ipynb # ALS implementation
├── DecisionTree.ipynb # Per-user Decision Tree implementation
├── Item2vec.ipynb # Item2Vec implementation based on Word2Vec
├── Stats.ipynb # Dataset statistics and exploratory analysis
└── src/ # Utility code shared across notebooks