理论考虑

此页面详细介绍了与 GDS 如何执行链接预测相关的某些理论概念。它不是严格要求的阅读材料,但可以帮助提高理解。

指标

Neo4j GDS 库中的链接预测管道支持以下指标

  • AUCPR

  • OUT_OF_BAG_ERROR(仅适用于 RandomForest,并且仅给出验证分数)

AUCPR 指标是精确率-召回率曲线下面积指标的缩写。对于 RandomForest 模型,还支持 OUT_OF_BAG_ERROR 指标。为了计算精确率和召回率,我们需要一组示例,每个示例都有正或负标签。对于每个示例,我们还有预测标签。给定真实标签和预测标签,我们可以计算精确率和召回率(参考,见 f.e. Wikipedia)。

然后,要计算 AUCPR,我们构建精确率-召回率曲线,如下所示

  • 每个预测都与一个预测强度相关联。我们按预测强度降序对示例进行排序。

  • 对于所有发生的预测强度,我们使用该强度作为阈值,并将该强度或更高的所有示例视为正标签。

  • 我们现在计算精确率 p 和召回率 r,并将元组 (r, p) 视为曲线上的一个点,即精确率-召回率曲线。

  • 最后,曲线进行线性插值,并计算面积作为具有顶点在这些点上的梯形的并集。

该曲线将具有类似于这样的形状

precision-recall curve with trapezoid

请注意此处显示的蓝色区域,它显示了曲线下的一个梯形。

精确率-召回率曲线下面积也可以解释为平均精确率,其中平均值取自不同的分类阈值。

OUT_OF_BAG_ERROR 仅针对 RandomForest 模型计算,并作为多数投票的准确性进行评估,其中对于每个示例,仅考虑在训练期间未使用该示例的树木。每棵树使用的训练集比例由配置参数 numberOfSamplesRatio 控制。OUT_OF_BAG_ERROR 在交叉验证阶段评估时报告为验证分数。在随机森林模型获胜的情况下,它根据在整个训练集上重新训练模型后报告为测试分数。

类别不平衡

大多数图的非相邻节点对比相邻节点对多得多(例如稀疏图)。因此,通常我们遇到类别不平衡的问题。有多种策略可以解决不平衡的数据。在管道训练过程中,使用 AUCPR 指标。它被认为比常用的 AUROC(接收器操作特征曲线下面积)指标更适合不平衡数据。为了使指标能恰当地反映正(相邻节点对)和负(非相邻节点对)示例,我们提供了控制两类之间抽样比率以及通过 negativeClassWeight 控制类别的相对权重的能力。前者由配置参数 negativeSamplingRatioconfigureSplits 中配置,当使用该过程生成训练集和测试集时。调整 negativeClassWeight(将在下面解释)意味着在计算精确率时对误报进行加权或降权。

negativeSamplingRatio 的推荐值为图的真实类别比率,换句话说,不应用欠采样。但是,值越大,测试集越大,因此评估时间也越长。测试集中负示例与正示例的总概率质量比率约为 negativeSamplingRatio * negativeClassWeight。因此,这两个参数可以协同调整以平衡评估准确性和速度。

真实类别比率计算为 (q - r) / r,其中 q = n(n-1)/2 是可能的无向关系的数量,r 是实际无向关系的数量。请注意,graph list 过程报告的 relationshipCount 是所有现有关系类型的有向关系计数的总和。因此,我们建议使用 Cypher 在源 Neo4j 图上获取 r。例如,此查询将计算类型为 TR 的关系的数量

MATCH (a)-[rel:T | R]-(b)
WHERE a < b
RETURN count(rel) AS r

选择 negativeClassWeight 值时,应考虑两个因素。首先,测试集中负样本与正样本的总概率质量的预期比率。其次,测试集中采样负样本与正样本的比率。为了与传统评估保持一致,应选择参数以使 negativeSamplingRatio * negativeClassWeight = 1.0,例如通过将值设置为真实类比率及其倒数,或将两个值都设置为 1.0

或者,可以目标使类之间总概率权重的比率接近真实类比率。也就是说,确保 negativeSamplingRatio * negativeClassWeight 接近真实类比率。然后,报告的指标 (AUCPR) 更好地反映了在看不见的高度不平衡数据上的预期精度。使用这种类型的评估,必须调整预期,因为指标值会变得更小。