RecBole-GNN
更新:
- [2023年10月29日] 新增 SSL4Rec。(https://github.com/RUCAIBox/RecBole-GNN/pull/76,由 @downeykking 提交)
- [2023年10月23日] 新增稀疏张量支持,将LightGCN和NGCF的速度提高约5倍,GPU内存占用减少到1/6。(https://github.com/RUCAIBox/RecBole-GNN/pull/75,由 @downeykking 提交)
- [2023年10月20日] 新增 DirectAU。(https://github.com/RUCAIBox/RecBole-GNN/pull/74,由 @downeykking 提交)
- [2023年10月16日] 新增 XSimGCL。(https://github.com/RUCAIBox/RecBole-GNN/pull/72,由 @downeykking 提交)
- [2023年4月12日] 新增 LightGCL。(https://github.com/RUCAIBox/RecBole-GNN/pull/63,由 @wending0417 提交)
- [2022年10月29日] 适配RecBole 1.1.1版本。(https://github.com/RUCAIBox/RecBole-GNN/pull/53)
- [2022年6月15日] 新增 MultiBehaviorDataset。(https://github.com/RUCAIBox/RecBole-GNN/pull/43,由 @Tokkiu 提交)
RecBole-GNN是一个基于PyTorch和RecBole构建的库,用于复现和开发基于图神经网络(GNNs)的推荐算法。我们的库包含了涵盖三大类别的算法:
- 基于用户-物品交互图的通用推荐;
- 基于会话/序列图的序列推荐;
- 基于社交网络的社交推荐。
亮点
- 易用且统一的API: 我们的库与RecBole共享统一的API和输入格式(原子文件)。
- 高效且可重用的图处理: 我们提供了高效且可重用的基础数据集、数据加载器和图处理学习层。
- 丰富的图算法库: 集成了来自广泛使用的库(如PyG)的图神经网络。最新提出的图算法可以轻松地与现有方法进行装配和比较。
要求
recbole==1.1.1
pyg>=2.0.4
pytorch>=1.7.0
python>=3.7.0
如果您使用的是
recbole==1.0.1
,请参考我们的recbole1.0.1
分支[链接]。
快速开始
使用源代码,您可以通过提供的脚本初步使用我们的库:
python run_recbole_gnn.py
如果您想更改模型或数据集,只需通过设置额外的命令参数来运行脚本:
python run_recbole_gnn.py -m [模型] -d [数据集]
已实现的模型
我们根据类别列出当前支持的模型:
通用推荐:
- Wang等人的**[NGCF](https://github.com/RUCAIBox/RecBole-GNN/blob/main/recbole_gnn/model/general_recommender/ngcf.py**:[神经图协同过滤](https://arxiv.org/abs/1905.08108)(SIGIR 2019)。
- He等人的**[LightGCN](https://github.com/RUCAIBox/RecBole-GNN/blob/main/recbole_gnn/model/general_recommender/lightgcn.py**:[LightGCN:简化和增强图卷积网络用于推荐](https://arxiv.org/abs/2002.02126)(SIGIR 2020)。
- Yao等人的**[SSL4Rec](https://github.com/RUCAIBox/RecBole-GNN/blob/main/recbole_gnn/model/general_recommender/ssl4rec.py**:[大规模物品推荐的自监督学习](https://arxiv.org/abs/2007.12865)(CIKM 2021)。
- Wu等人的**[SGL](https://github.com/RUCAIBox/RecBole-GNN/blob/main/recbole_gnn/model/general_recommender/sgl.py**:[推荐系统的自监督图学习](https://arxiv.org/abs/2010.10783)(SIGIR 2021)。
- Kong等人的**[HMLET](https://github.com/RUCAIBox/RecBole-GNN/blob/main/recbole_gnn/model/general_recommender/hmlet.py**:[线性还是非线性,这是个问题!](https://arxiv.org/abs/2111.07265)(WSDM 2022)。
- Lin等人的**[NCL](https://github.com/RUCAIBox/RecBole-GNN/blob/main/recbole_gnn/model/general_recommender/ncl.py**:[利用邻域增强对比学习改进图协同过滤](https://arxiv.org/abs/2202.06200)(TheWebConf 2022)。
- Wang等人的**[DirectAU](https://github.com/RUCAIBox/RecBole-GNN/blob/main/recbole_gnn/model/general_recommender/directau.py**:[协同过滤中表示对齐和一致性的研究](https://arxiv.org/abs/2206.12811)(KDD 2022)。
- Yu等人的**[SimGCL](https://github.com/RUCAIBox/RecBole-GNN/blob/main/recbole_gnn/model/general_recommender/simgcl.py**:[图增强是否必要?简单图对比学习用于推荐](https://arxiv.org/abs/2112.08679)(SIGIR 2022)。
- Yu等人的**[XSimGCL](https://github.com/RUCAIBox/RecBole-GNN/blob/main/recbole_gnn/model/general_recommender/xsimgcl.py**:[XSimGCL:推荐系统中极简图对比学习的探索](https://arxiv.org/abs/2209.02544)(TKDE 2023)。
- Cai等人的**[LightGCL](https://github.com/RUCAIBox/RecBole-GNN/blob/main/recbole_gnn/model/general_recommender/lightgcl.py**:[LightGCL:简单而有效的图对比学习用于推荐](https://arxiv.org/abs/2302.08191)(ICLR 2023)。
序列推荐:
- [SR-GNN](https://github.com/RUCAIBox/RecBole-GNN/blob/main/recbole_gnn/model/sequential_recommender/srgnn.py 来自Wu等人:基于图神经网络的会话推荐(AAAI 2019)。
- [GC-SAN](https://github.com/RUCAIBox/RecBole-GNN/blob/main/recbole_gnn/model/sequential_recommender/gcsan.py 来自Xu等人:用于会话推荐的图上下文化自注意力网络(IJCAI 2019)。
- [NISER+](https://github.com/RUCAIBox/RecBole-GNN/blob/main/recbole_gnn/model/sequential_recommender/niser.py 来自Gupta等人:NISER:归一化物品和会话表示以处理流行度偏差(GRLA,CIKM 2019研讨会)。
- [LESSR](https://github.com/RUCAIBox/RecBole-GNN/blob/main/recbole_gnn/model/sequential_recommender/lessr.py 来自Chen等人:处理基于会话推荐的图神经网络信息损失(KDD 2020)。
- [TAGNN](https://github.com/RUCAIBox/RecBole-GNN/blob/main/recbole_gnn/model/sequential_recommender/tagnn.py 来自Yu等人:TAGNN:用于基于会话推荐的目标注意力图神经网络(SIGIR 2020短文)。
- [GCE-GNN](https://github.com/RUCAIBox/RecBole-GNN/blob/main/recbole_gnn/model/sequential_recommender/gcegnn.py 来自Wang等人:用于基于会话推荐的全局上下文增强图神经网络(SIGIR 2020)。
- [SGNN-HN](https://github.com/RUCAIBox/RecBole-GNN/blob/main/recbole_gnn/model/sequential_recommender/sgnnhn.py 来自Pan等人:用于基于会话推荐的星型图神经网络(CIKM 2020)。
社交推荐:
请注意,社交推荐方法的数据集可以从Social-Datasets下载。
- [DiffNet](https://github.com/RUCAIBox/RecBole-GNN/blob/main/recbole_gnn/model/social_recommender/diffnet.py 来自Wu等人:社交推荐的神经影响力扩散模型(SIGIR 2019)。
- [MHCN](https://github.com/RUCAIBox/RecBole-GNN/blob/main/recbole_gnn/model/social_recommender/mhcn.py 来自Yu等人:社交推荐的自监督多通道超图卷积网络(WWW 2021)。
- [SEPT](https://github.com/RUCAIBox/RecBole-GNN/blob/main/recbole_gnn/model/social_recommender/sept.py 来自Yu等人:社交感知自监督三重训练推荐(KDD 2021)。
结果
排行榜
我们仔细调整了每个研究领域已实现模型的超参数,并发布了相应的排行榜供参考:
效率
通过序列/会话图预处理技术以及高效的GNN层,我们大大加快了序列推荐器的训练过程。
团队
RecBole-GNN最初由RUCAIBox的成员开发和维护,主要开发者是侯宇鹏(@hyp1231)、徐兰玲(@Sherry-XLL)和田长鑫(@ChangxinTian)。我们还要感谢Xinzhou(@downeykking)、Wanli(@wending0417)和Jingqi(@Tokkiu)的巨大贡献!❤️
致谢
该实现基于开源推荐库RecBole。RecBole-GNN 现已成为RecBole 2.0的一部分!
如果您使用我们的代码或处理过的数据集,请引用以下论文作为参考。
@inproceedings{zhao2022recbole2,
author={Wayne Xin Zhao and Yupeng Hou and Xingyu Pan and Chen Yang and Zeyu Zhang and Zihan Lin and Jingsen Zhang and Shuqing Bian and Jiakai Tang and Wenqi Sun and Yushuo Chen and Lanling Xu and Gaowei Zhang and Zhen Tian and Changxin Tian and Shanlei Mu and Xinyan Fan and Xu Chen and Ji-Rong Wen},
title={RecBole 2.0: Towards a More Up-to-Date Recommendation Library},
booktitle = {{CIKM}},
year={2022}
}
@inproceedings{zhao2021recbole,
author = {Wayne Xin Zhao and Shanlei Mu and Yupeng Hou and Zihan Lin and Yushuo Chen and Xingyu Pan and Kaiyuan Li and Yujie Lu and Hui Wang and Changxin Tian and Yingqian Min and Zhichao Feng and Xinyan Fan and Xu Chen and Pengfei Wang and Wendi Ji and Yaliang Li and Xiaoling Wang and Ji{-}Rong Wen},
title = {RecBole: Towards a Unified, Comprehensive and Efficient Framework for Recommendation Algorithms},
booktitle = {{CIKM}},
pages = {4653--4664},
publisher = {{ACM}},
year = {2021}
}