This is the repository for the Challenge of Recommender Systems in the academic year 2024/2025 at Polytechnic of Milan.
Subject: 052534 - Recommender Systems
Professor: Ferrari Dacrema Maurizio
Academic Year: 2024/2025
The application domain is book recommendation. The datasets we provide contains interactions of users with books. The main goal of the competition is to discover which new books a user will interact with.
The datasets includes around 1.9 M interactions, 35k users, 38k items (books) as well as 94k item features.
The training-test split is done via random holdout, 80% training, 20% test.
The goal is to recommend a list of 10 potentially relevant new items for each user. MAP@10 is used for evaluation.
The dataset can be found in dataset.
THe provided algorithm is based on XGBoost. Several recommenders were trained to provide candidate generators and features adders. In particular, the candidate generators, evaluated on Recall 50, are:
- P3alpha
- RP3beta
- SLIM Elastic Net
Then, the recommenders used to enrich the dataframe for xgboost are (all evaluated on MAP 10):
- Item KNN
- User KNN
- P3alpha
- RP3beta
- NMF
- Pure SVD
- Scaled SVD
- Item Pure SVD
- SLIM Elastic Net
- SLIM BPR
- EASE R
- MultVAE
- HHP
- TWRA
- ALS
- Item KNN with custom similarity
All the recommenders were taken from the repository RecSys_PoliMi.
To train the recommenders for xgboost, please refer to training_xgboost_recommenders.
In JSON_Hyperparameters, you can find the values of the hyperparamters for all recommenders in JSON format.
The final solution can be found in the notebook XGBoost.
Recommender | MAP 10 (Private Leaderboard) |
---|---|
Item KNN CF Recommender | 0.07517 |
Item KNN + SVD + SLIM BPR | 0.0695 |
RP3Beta | 0.08043 |
EASE R | 0.09173 |
Item CBF with stacked ICM | 0.05207 |
Hybrid: Item KNN + EASE R + P3Alpha + RP3Beta | 0.09264 |
SLIM Elastic Net | 0.0978 |
Linear Hybrid | 0.09792 |
LGBMBoost | 0.09995 |
XGBoost | 0.10203 |
Final Position on Private Leaderboard: 6/71
This Project was developed by:
- De Introna Federico @federicodeintrona
- Di Giore Francesco @Digioref