跳到内容

广登/LightGCN

主人
交换机分支/标签

名称已在使用中

已存在具有所提供分支名称的标记。许多Git命令同时接受标记名和分支名,因此创建此分支可能会导致意外行为。是否确实要创建此分支?
代码

最新提交

 

Git统计

文件夹

永久链接
无法加载最新提交信息。
类型
姓名
最新提交消息
提交时间
 
 
 
 
 
 
 
 
 
 
 
 

轻型GCN

这是我们SIGIR 2020论文的Tensorflow实现:

何向南(Xiangan He)、匡登(Kuan Deng)、王翔(Xiang Wang)、李彦(Yan Li)、张永东(Yongdong Zhang)、王萌(Meng Wang,2020)。LightGCN:简化和支持推荐的图卷积网络,arXiv中的纸张.

撰稿人:何向南博士(staff.ustc.edu.cn/~hexn/)、邓宽、吴颖欣。

(我们还为LightGCN提供Pytorch实现:https://github.com/gusye1234/LightGCN-PyTorch网站.撰稿人:叶建白。)

介绍

在这项工作中,我们的目的是简化GCN的设计,使其更简洁,更适合推荐。我们提出了一个名为LightGCN的新模型,它只包含GCN邻域聚合中最基本的组件,用于协同过滤。

环境要求

该代码已在Python 3.6.5下运行测试。所需的软件包如下:

  • 张量流==1.11.0
  • numpy==1.14.3
  • scipy==1.1.0
  • sklearn==0.19.1
  • cython==0.29.15

C++计算器

我们已经实现了C++代码以在培训期间和培训后输出度量,这比python评估器要高效得多。首先需要使用以下命令编译它。

python setup.py build_ext—就地

编译后,默认情况下将运行C++代码,而不是Python代码。

运行3层LightGCN的示例

代码中明确说明了命令的指令(请参阅LightGCN/utility/parser.py中的解析器函数)。

Gowalla数据集

  • 命令
python LightGCN.py--数据集gowalla--regs[1e-4]--嵌入大小64--层大小[64,64,64]--lr 0.001--批大小2048--epoch 1000
  • 输出日志:
使用cpp进行eval_score_matrix_foldoutn_users=29858,n_items=40981n相互作用=1027370n列=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_foldoutn用户=31668,n项目=38048n相互作用=1561406n列=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_foldoutn_users=52643,n_items=91599n相互作用=2984108n列=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]

注:培训和测试的持续时间取决于运行环境。

数据集

我们提供三个经过处理的数据集:Gowalla、Yelp2018和Amazon-book。

  • 火车.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++评估

=======

关于

未提供描述、网站或主题。

资源

星星

观察者

叉子

发布

未发布版本

包装

未发布包