cs3319-project2 / reports /preliminary_report.md
NLP-beginner's picture
CS3319 Project 2 final deliverable (public F1 = 0.96626)
f28d994
|
Raw
History Blame Contribute Delete
9.85 kB

基于异构 LightGCN 的学术论文推荐系统初步报告

摘要

本项目研究学术网络中的论文推荐问题。给定作者、论文、作者合作关系、论文引用关系以及作者历史阅读或引用论文的信息,任务目标是预测测试集中每一个作者-论文 pair 是否应被推荐。我们将该任务建模为异构图上的链接预测问题,并比较了传统图结构特征模型、SAGEConv 异构 GNN、BPR/MF 风格模型以及 LightGCN 系列模型。实验结果显示,简单稳定的 LightGCN 风格推荐模型明显优于更复杂的非线性异构 GNN。最终保留的确认提交为 6 个 LightGCN 模型的集成,在 public leaderboard 上取得 F1-score 0.93044。该结果已经在当前机器上通过 generate_ens6_submission.py 复现,生成文件与原始确认提交字节级一致。

1. 任务背景

推荐系统常面临用户行为稀疏和冷启动问题。在学术推荐场景中,作者之间的合作关系、论文之间的引用关系以及论文自身特征都可以补充作者历史行为信号。因此,本项目不只使用作者-论文交互边,而是构建包含作者节点和论文节点的异构学术网络。

图中包含以下主要关系:

  • 作者-论文边:表示作者历史上阅读或引用过相关论文。
  • 作者-作者边:表示作者之间存在合作关系。
  • 论文-论文边:表示论文之间存在引用关系。

最终预测目标是对测试集中的作者-论文 pair 输出二分类标签。若模型认为该论文应推荐给该作者,则输出 1,否则输出 0。比赛评价指标为 F1-score,因此模型不仅需要提高排序质量,还需要选择合适的二分类阈值。

2. 数据与特征

官方数据包含 6,611 个作者和约 79,937 篇论文。主要文件包括:

  • bipartite_train_ann.txt:训练集作者-论文正样本边,共 682,421 行。
  • bipartite_test_ann.txt:需要预测的作者-论文 pair,共 2,047,262 行。
  • author_file_ann.txt:作者合作边,共 9,663 行。
  • paper_file_ann.txt:论文引用边,共 327,113 行。
  • feature.pkl:论文 512 维特征。

在最终模型中,论文节点初始特征由官方 512 维特征和 3 个结构特征拼接而成:

  • 论文被作者历史引用或阅读的次数。
  • 论文引用出度。
  • 论文引用入度。

这些结构特征经过 log1p 和标准化处理后与官方论文特征拼接。作者节点没有官方属性特征,因此使用可训练 embedding 表示。

3. 方法

3.1 异构图构建

我们构建包含 authorpaper 两类节点的异构图,并使用四类消息传递边:

  • author -> paper:训练集作者-论文边。
  • paper -> author:作者-论文边的反向边。
  • paper -> paper:论文引用边,并加入反向方向以增强传播。
  • author -> author:作者合作边,并加入反向方向。

该构图方式能够同时利用协同过滤信号、合作者兴趣传播和论文引用结构。

3.2 LightGCN 主模型

最终主模型采用 LightGCN 风格的异构图推荐架构。模型由以下部分组成:

  • 作者表示:可训练 author embedding。
  • 论文表示:将论文特征线性投影到隐空间。
  • 图传播:多层均值聚合,不使用非线性激活和复杂特征变换。
  • 层融合:对初始层和各传播层 embedding 做等权平均。
  • 打分方式:使用作者 embedding 和论文 embedding 的 cosine similarity。

LightGCN 在推荐任务中的优势是结构简单、训练稳定,并且保留了邻居传播这一核心协同过滤机制。实验中,更复杂的 SAGEConv、GAT、MLP decoder 和深层模型没有带来稳定提升,反而更容易损害泛化表现。

3.3 训练目标与负采样

训练目标采用 BPR ranking loss。由于官方训练集中主要给出正样本,需要构造负样本。实验中使用混合负采样策略:

  • 随机负样本。
  • 热门论文负样本。
  • 合作者阅读论文池中的 hard negative。

相比 BCE 分类训练,BPR 更符合推荐排序任务,也在验证实验中表现更好。

3.4 集成与后处理

最终确认提交使用 6 个 LightGCN checkpoint 做集成:

  • 5 个 256 维、4 层 LightGCN 模型。
  • 1 个 384 维、4 层 LightGCN 模型。

每个模型独立计算测试 pair 的 cosine similarity,最终取六个分数向量的算术平均。由于测试集中存在一部分 pair 已经出现在训练集中,这些已知正样本在后处理阶段被强制设为 1。最后对集成分数使用阈值 0.36 生成提交文件。

4. 实验过程

4.1 官方 baseline

最初将官方 notebook 改写为本地脚本,使用简单的异构均值聚合和 hinge/ranking 风格目标。该方法验证 F1 约为 0.885,是后续实验的基础 baseline。主要限制是模型表达能力和负采样策略较弱,且只训练单模型。

4.2 SAGEConv 异构 GNN

随后尝试 PyG HeteroConv + SAGEConv,加入残差连接、layer normalization、dropout、MLP decoder 和 hard negative。该方法优于官方 notebook 风格 baseline,但整体仍低于 LightGCN 系列。进一步将目标函数切换为 BPR 后,性能有所提升,说明 ranking loss 更适合该任务。

4.3 LightGBM 结构特征模型

为了构建非 GNN baseline,我们实现了基于图结构特征的 LightGBM 模型。特征包括作者度数、论文度数、引用入度/出度、preferential attachment、合作者是否读过该论文、作者历史论文 embedding 与候选论文 embedding 的相似度等。该模型验证 F1 约为 0.897,可作为有意义的传统 baseline,但明显弱于 LightGCN。

4.4 LightGCN 主线实验

LightGCN 系列成为最终主线。5 个 256 维、4 层 vanilla LightGCN 的验证 F1 大约在 0.934 到 0.935 之间,稳定优于前述模型。随后进行了多种架构对比:

模型设置 验证 F1
Vanilla LightGCN, 256d, 4 layers about 0.9350
Learnable layer weights, 256d, 4 layers about 0.9360
Wide LightGCN, 384d, 3 layers about 0.9365
Wide LightGCN, 512d, 3 layers about 0.9363
Deep LightGCN, 256d, 6 layers about 0.9319
GAT aggregation about 0.9331
SAGE aggregation about 0.9185

虽然更宽的 LightGCN 在验证集上有小幅提升,但 public leaderboard 上未确认带来更好结果。因此,最终保留的是更稳健的 6 模型 LightGCN 集成。

5. 当前结果

目前保存并确认的最佳提交如下:

提交文件 方法 Public F1
submissions/sub_ens6_t0.36.csv 6-model vanilla LightGCN ensemble, threshold 0.36 0.93044

本次在当前机器上完成了复现。运行命令为:

/data/lzc/miniconda3/envs/idea1/bin/python code/generate_ens6_submission.py --thresholds 0.36

生成文件为:

submissions/regenerated_ens6/sub_ens6_t0.36.csv

复现输出显示,测试集中被强制设为正样本的已知训练 pair 数量为 524,083,占 2,047,262 个测试 pair 的约 25.6%。最终阈值 0.36 下预测正例数为 1,066,568,比例为 0.520973。

生成文件与原确认提交的 SHA256 完全一致:

4fe7b6c89ed540d9057f0c969b111699d52806204c94229fdb21f733187d6559

字节级比较结果为 cmp_exit=0,说明本机复现结果与保存的确认提交完全一致。

6. 分析

从实验结果看,推荐任务中的图传播信号比复杂的节点变换更关键。SAGEConv、GAT 和 MLP decoder 虽然表达能力更强,但可能在该数据规模和训练信号下更容易过拟合,或者破坏了协同过滤中简单邻居传播的有效性。LightGCN 去掉非线性变换后,训练更稳定,排序质量更高。

BPR loss 的表现优于普通二分类目标,说明该任务更接近排序推荐问题,而不是独立 pair 分类问题。hard negative 也很重要,因为热门论文或合作者领域内论文更容易与正样本混淆,能够提供更强的训练信号。

此外,测试集中存在大量与训练集重合的作者-论文 pair。将这些已知正样本强制输出为 1 是合理的后处理步骤,也对最终 F1 有明显影响。报告正式版本中需要明确说明该操作只利用训练集中已知正边,并未使用测试标签。

7. 复现环境

原始环境记录如下:

  • Python 3.10.20
  • torch 2.12.0.dev20260407+cu128
  • torch-geometric 2.7.0
  • numpy 2.2.6
  • pandas 2.3.3
  • scikit-learn 1.7.2
  • lightgbm 4.6.0

当前机器复现时使用 /data/lzc/miniconda3/envs/idea1 环境。该环境中已有 Python 3.10、numpy、pandas、scipy 和 torch,额外安装了 torch-geometric==2.7.0。复现脚本使用 CUDA 运行,机器上检测到 NVIDIA GeForce RTX 4090 GPU。

8. 后续工作

后续正式报告可以继续补充以下内容:

  • 将实验结果整理为更标准的 conference paper 格式。
  • 对 LightGCN、SAGEConv、LightGBM baseline 增加更清晰的公式描述。
  • 补充 Precision、Recall、阈值搜索曲线和消融实验图表。
  • 若仍可提交 Kaggle,可围绕 0.35 到 0.38 的阈值继续测试,但需要区分 confirmed result 和 candidate result。
  • 进一步分析作者冷启动、论文热门度、合作者关系和引用关系分别对预测性能的影响。

9. 结论

本项目初步完成了从 baseline 到最终 LightGCN 集成模型的实验流程。最终结果表明,在该学术论文推荐任务中,异构图结构和 LightGCN 风格传播能够有效提升作者-论文链接预测性能。与更复杂的 GNN 变体相比,vanilla LightGCN 更稳定、更适合当前推荐场景。当前已确认的最佳提交 sub_ens6_t0.36.csv 在 public leaderboard 上达到 F1-score 0.93044,并已在当前机器上成功复现。