PyTorch implementations of Top-N recommendation, collaborative filtering recommenders.
Implementations of various top-N recommender systems in PyTorch for practice.
Movielens 100k & 1M are used as datasets.
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. http://wwwconference.org/proceedings/www2014/companion/p811.pdfompanion/p811.pdf) |
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. https://arxiv.org/pdf/1802.05814rg/pdf/1802.05814) |
EASE | Harald Steck, Embarrassingly Shallow Autoencoders for Sparse Data. https://arxiv.org/pdf/1905.03375rg/pdf/1905.03375) |
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 |
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.
config.py
conf/[MODEL_NAME]
main.py
You can add your own model into the framework if:
BaseModel
class in models/BaseModel.py
YourModel.conf
file in conf
models.__init__
Some model implementations and util functions refers to these nice repositories.