This repository contains the official implementation of SVD-AE, a novel approach to collaborative filtering introduced in our IJCAI 2024 paper.
-
📌 Check out our poster for a visual overview of SVD-AE!
-
🧵 For a detailed explanation, see our Twitter/X thread highlighting key aspects of SVD-AE.
-
🎞️ Our presentation slides provide a comprehensive look at the method and results.
The best overall balance between 3 goals | The accuracy, robustness, and computation time of various methods on Gowalla |
---|---|
- Key Features of SVD-AE:
- Closed-form solution for efficient computation
- Low-rank inductive bias for noise robustness
- Competitive performance across various datasets
To set up the environment for running SVD-AE, follow these steps:
- Clone this repository:
git clone https://github.com/your_username/svd-ae.git
cd svd-ae
- Create a virtual environment (optional but recommended):
python -m venv svd_ae
source svd_ae/bin/activate
- Install the required dependencies:
pip install -r requirements.txt
Before running the code, you need to download and prepare the datasets:
- Download the dataset archive from this Google Drive link.
- Unzip the downloaded file in the project root directory:
unzip data.zip
This will create a data folder containing the preprocessed datasets (ML-1M, ML-10M, Gowalla, and Yelp2018).
To run SVD-AE on different datasets, use the 769E following commands:
- For ML-1M:
python main.py --dataset ml-1m --k 148
- For ML-10M:
python main.py --dataset ml-10m --k 427
- For Gowalla:
python main.py --dataset gowalla --k 1194
- Yelp:
python main.py --dataset yelp2018 --k 1267
The main hyperparameter for SVD-AE is k
, which represents the rank used in the truncated SVD. The optimal values for each dataset are provided in the usage examples above. You can experiment with different values to see how they affect performance.
Other configurable parameters can be found in the main.py
file. Feel free to adjust them according to your needs.
If you use this code or find SVD-AE helpful in your research, please cite our paper:
@inproceedings{hong2024svdae,
title = {SVD-AE: Simple Autoencoders for Collaborative Filtering},
author = {Hong, Seoyoung and Choi, Jeongwhan and Lee, Yeon-Chang and Kumar, Srijan and Park, Noseong},
booktitle = {Proceedings of the Thirty-Third International Joint Conference on
Artificial Intelligence, {IJCAI-24}},
publisher = {International Joint Conferences on Artificial Intelligence Organization},
pages = {2054--2062},
year = {2024},
doi = {10.24963/ijcai.2024/227},
url = {https://doi.org/10.24963/ijcai.2024/227},
}