轻型GCN
何向南(Xiangan He)、匡登(Kuan Deng)、王翔(Xiang Wang)、李彦(Yan Li)、张永东(Yongdong Zhang)、王萌(Meng Wang,2020)。 LightGCN:简化和支持推荐的图卷积网络, arXiv中的纸张 .
介绍
环境要求
张量流==1.11.0 numpy==1.14.3 scipy==1.1.0 sklearn==0.19.1 cython==0.29.15
C++计算器
python setup.py build_ext—就地
运行3层LightGCN的示例
Gowalla数据集
命令
python LightGCN.py--数据集gowalla--regs[1e-4]--嵌入大小64--层大小[64,64,64]--lr 0.001--批大小2048--epoch 1000
输出日志:
使用cpp进行eval_score_matrix_foldout n_users=29858,n_items=40981 n相互作用=1027370 n列=810128,n测试=217242,稀疏度=0.00084 ... 时代1[30.3s]:列车==[0.46925=0.46911+0.00014] 时代2[27.1s]:列车==[0.21866=0.21817+0.00048] ... 时代879[81.6s+31.3s]:测试==[0.13271=0.12645+0.00626+0.00000],召回=[0.18201],精度=[0.05601],ndcg=[0.15555] 提前停止触发步骤:5 log:0.18201370537281036 最佳Iter=[38]@[32829.6]召回=[0.18236],精度=[0.05607],ndcg=[0.15539]
Yelp2018数据集
命令
python LightGCN.py--数据集yelp2018--regs[1e-4]--嵌入大小64--层大小[64,64,64]--lr 0.001--批大小2048--epoch 1000
输出日志:
使用cpp进行eval_score_matrix_foldout n用户=31668,n项目=38048 n相互作用=1561406 n列=1237259,n测试=324147,稀疏度=0.00130 ... 时代1[56.5s]:列车==[0.33843=0.33815+0.00028] 时代2[53.1s]:列车==[0.16253=0.16192+0.00061] ... 纪元679[104.6s+12.9s]:测试==[0.17217=0.16289+0.00929+0.00000],召回=[0.06359],精度=[0.02874],ndcg=[0.05240] 提前停止触发步骤:5 log:0.06359195709228516 最佳Iter=[28]@[42815.0]召回=[0.06367],精度=[0.02868],ndcg=[0.05236]
亚马逊图书数据集
命令
python LightGCN.py--数据集amazon-book--regs[1e-4]--embed_size 64--layer_size[64,64,64]--lr 0.001--batch_size 8192--epoch 1000
输出日志:
使用cpp进行eval_score_matrix_foldout n_users=52643,n_items=91599 n相互作用=2984108 n列=2380730,n测试=603378,稀疏度=0.00062 ... 时代1[53.2s]:列车==[0.57471=0.57463+0.00008] 时代2[47.3s]:列车==[0.31518=0.31478+0.00040] ... 纪元779[181.7s+79.0s]:测试==0.20300=0.19434+0.00866+0.00000],召回=[0.04120],精度=[0.01703],ndcg=[0.03186] 提前停止触发步骤:5 log:0.04119725897908211 最佳迭代=[33]@[49875.4]召回=[0.04123],精度=[0.01710],ndcg=[0.03189]
数据集
-
火车.txt 列车文件。 每行都是一个用户,他/她与项目进行了积极的交互:userID\t一个itemID\n列表。
-
测试.txt 测试文件(阳性实例)。 每行都是一个用户,他/她与项目进行了积极的交互:userID\t一个itemID\n列表。 请注意,在报告性能时,我们将所有未观察到的交互视为负面实例。
-
用户列表.txt 用户文件。 每一行是一个用户的三元组(org_id,remap_id),其中org_id和remap_id分别表示原始数据集和我们的数据集中的用户id。
-
项目列表.txt 项目文件。 每一行是一个项目的三元组(org_id,remap_id),其中org_id和remap_id分别表示原始数据集和我们的数据集中的项目id。
效率改进:
CPU上的并行采样 top-k推荐的C++评估