ImRec:Implicit feedback based Recommendation framework

August 24, 2023 · View on GitHub

We opensource the framework and hope it could benefit the community. Please open an issue if you have difficulty in reproducing the results.

  • :twisted_rightwards_arrows: All my models (LayerGCN/SelfCF) are further integrated into the unified MMRec framework.

Features

  • Aligning recommendation to Industry

    • Global time splitting with timestamp (Same raw source data, same results! Previous random splittings suffer from data leakage and do not hold this property.)
    • Strictly predict future interactions.
  • Reproducibility Ensured: Same seed, same server(GPU), same performance.

  • Supporting various supervised tasks

    • Supervised with sampled negatives by a sampling strategy
    • Supervised with all positives and negatives (All unobserved are negatives)
    • Self-supervised with observed interactions only
  • Unified and order-invariant grid search (GS) entry

    • One entry for grid search and per-run of model
    • Reproduce same results no matter what order of hyper-parameters in GS
    • Results are summarized to ease your manual comparison after GS
  • Personal maintenance, towards bug-free

    • Framework consistency is ensured

Supported models (More to expect):

- All source codes are under models dir
- You may post an issue for the model you expected an integration, I'll handle it if the source code is available.

ModelPaper (PDF)Conference/JournalCode
BPRBPR: Bayesian Personalized Ranking from Implicit FeedbackUAI'09bpr.py
MultiVAEVariational Autoencoders for Collaborative FilteringWWW'18multivae.py
NGCFNeural Graph Collaborative FilteringSIGIR'19ngcf.py
EHCFEfficient Heterogeneous Collaborative Filtering without Negative Sampling for RecommendationAAAI'20ehcf.py
LR-GCCFRevisiting Graph based Collaborative Filtering: A Linear Residual Graph Convolutional Network ApproachAAAI'20lrgccf.py
LightGCNLightGCN: Simplifying and Powering Graph Convolution Network for RecommendationSIGIR'20lightgcn.py
BUIRBootstrapping User and Item Representations for One-Class Collaborative FilteringSIGIR'21buir*.py
UltraGCNUltraGCN: Ultra Simplification of Graph Convolutional Networks for RecommendationCIKM'21ultragcn.py
IMP-GCNInterest-aware Message-Passing GCN for RecommendationWWW'21imp_gcn.py
Newly added
:fire: LayerGCNLayer-refined Graph Convolutional Networks for RecommendationICDE'23layergcn.py
SelfCF(ed/he/ep)SelfCF: A Simple Framework for Self-supervised Collaborative FilteringACM TORS'23selfcf*.py

LayerGCN: Layer-refined Graph Convolutional Networks for Recommendation

Data

Download from Google Drive: Amazon-Vedio-Games/Food etc.

How to run

python main.py -m LayerGCN -d food

You may specify other parameters in CMD or config with configs/model/*.yaml and configs/dataset/*.yaml.

Best hyper-parameters for reproducibility

We report the best hyper-parameters of LayerGCN to reproduce the results in Table II of our paper as:

Datasetsdropoutreg_weight
MOOC0.11e-03
Games0.21e-03
Food0.11e-02
Yelp0.21e-03

Citing if this repo. helps:

@inproceedings{zhou2023layer,
  title={Layer-refined graph convolutional networks for recommendation},
  author={Zhou, Xin and Lin, Donghui and Liu, Yong and Miao, Chunyan},
  booktitle={2023 IEEE 39th International Conference on Data Engineering (ICDE)},
  pages={1247--1259},
  year={2023},
  organization={IEEE}
}


@article{zhou2023selfcf,
  author = {Zhou, Xin and Sun, Aixin and Liu, Yong and Zhang, Jie and Miao, Chunyan},
  title = {SelfCF: A Simple Framework for Self-Supervised Collaborative Filtering},
  year = {2023},
  journal = {ACM Trans. Recomm. Syst.},
  publisher = {Association for Computing Machinery},
}
  • This repo. simplifies Recbole to align with industry settings.