Recommender System in PyTorch
Implementations of various top-N recommender systems in PyTorch for practice.
Movielens 100k & 1M are used as datasets.
Available models
Model | Paper |
---|---|
BPRMF | Steffen Rendle et al., BPR: Bayesian Personalized Ranking from Implicit Feedback. UAI 2009. Link |
ItemKNN | Jun Wang et al., Unifying user-based and item-based collaborative filtering approaches by similarity fusion. SIGIR 2006. Link |
PureSVD | Paolo Cremonesi et al., Performance of Recommender Algorithms on Top-N Recommendation Tasks. RecSys 2010. Link |
SLIM | Xia Ning et al., SLIM: Sparse Linear Methods for Top-N Recommender Systems. ICDM 2011. Link |
P3a | Colin Cooper et al., Random Walks in Recommender Systems: Exact Computation and Simulations. WWW 2014. Link |
RP3b | Bibek Paudel et al., Updatable, accurate, diverse, and scalablerecommendations for interactive applications. TiiS 2017. Link |
DAE, CDAE | Yao Wu et al., Collaborative denoising auto-encoders for top-n recommender systems. WSDM 2016.Link |
MultVAE | Dawen Liang et al., Variational Autoencoders for Collaborative Filtering. WWW 2018. Link |
EASE | Harald Steck, Embarrassingly Shallow Autoencoders for Sparse Data. WWW 2019. Link |
NGCF | Xiang Wang, et al., Neural Graph Collaborative Filtering. SIGIR 2019. Link |
LightGCN | Xiangnan He, et al., LightGCN: Simplifying and Powering Graph Convolution Network for Recommendation. SIGIR 2020. Link |
Enable C++ evaluation
To evaluate with C++ backend, you have to compile C++ and cython with the following script:
python setup.py build_ext --inplace
If compiled NOT successfully, "evaluation with python backend.."
will be printed in the beginning.
How to run
- Edit experiment configurations in
config.py
- Edit model hyperparameters you choose in
conf/[MODEL_NAME]
- run
main.py
Implement your own model
You can add your own model into the framework if:
- Your model inherits
BaseModel
class inmodels/BaseModel.py
- Implement necessary methods and add additional methods if you want.
- Make
YourModel.conf
file inconf
- Add your model in
models.__init__
Reference
Some model implementations and util functions refers to these nice repositories.
- NeuRec: An open source neural recommender library. Repository
- RecSys 2019 - DeepLearning RS Evaluation. Paper Repository