SELFRec is a Python framework for self-supervised recommendation (SSR) which integrates commonly used datasets and metrics, and implements many state-of-the-art SSR models. SELFRec has a lightweight architecture and provides user-friendly interfaces. It can facilitate model implementation and evaluation.
Founder and principal contributor: @Coder-Yu @xiaxin1998
Supported by: @AIhongzhi (A/Prof. Hongzhi Yin, UQ)
This repo is released with our survey paper on self-supervised learning for recommender systems. We organized a tutorial on self-supervised recommendation at WWW'22. Visit the tutorial page for more information.
- Fast execution: SELFRec is developed with Python 3.7+, Tensorflow 1.14+ and Pytorch 1.7+. All models run on GPUs. Particularly, we optimize the time-consuming procedure of item ranking, drastically reducing the ranking time to seconds (less than 10 seconds for the scale of 10,000×50,000).
- Easy configuration: SELFRec provides a set of simple and high-level interfaces, by which new SSR models can be easily added in a plug-and-play fashion.
- Highly Modularized: SELFRec is divided into multiple discrete and independent modules/layers. This design decouples the model design from other procedures. For users of SELFRec, they just need to focus on the logic of their method, which streamlines the development.
- SSR-Specific: SELFRec is designed for SSR. For the data augmentation and self-supervised tasks, it provides specific modules and interfaces for rapid development.
numba==0.53.1
numpy==1.20.3
scipy==1.6.2
tensorflow==1.14.0
torch>=1.7.0
- Configure the xx.conf file in the directory named conf. (xx is the name of the model you want to run)
- Run main.py and choose the model you want to run.
- Create a .conf file for your model in the directory named conf.
- Make your model inherit the proper base class.
- Reimplement the following functions.
- build(), train(), save(), predict()
- Register your model in main.py.
Data Set | Basic Meta | User Context | ||||||
---|---|---|---|---|---|---|---|---|
Users | Items | Ratings (Scale) | Density | Users | Links (Type) | |||
Douban | 2,848 | 39,586 | 894,887 | [1, 5] | 0.794% | 2,848 | 35,770 | Trust |
LastFM | 1,892 | 17,632 | 92,834 | implicit | 0.27% | 1,892 | 25,434 | Trust |
Yelp | 19,539 | 21,266 | 450,884 | implicit | 0.11% | 19,539 | 864,157 | Trust |
Amazon-Book | 52,463 | 91,599 | 2,984,108 | implicit | 0.11% | - | - | - |
@article{yu2022self,
title={Self-Supervised Learning for Recommender Systems: A Survey},
author={Yu, Junliang and Yin, Hongzhi and Xia, Xin and Chen, Tong and Li, Jundong and Huang, Zi},
journal={arXiv preprint arXiv:2203.15876},
year={2022}
}