衡量链路预测算法的精确度的指标有三种:AUC、Precision、Ranking Score。
定义(G, V, E)为一个无向网络,其中V为节点集合,E为边的集合。网络中总的节点数为N,边数为M,则该网络中不考虑相连关系的话共有N(N-1)/2个节点对,即全集U。
将网络中已知的连边E分为训练集ET和测试集EP两部分,EP是在E的范围内随机选取的连边,并将选取后的Ep从E中删掉变成ET。此时ET∪EP=E,ET∩EP=
∅
\emptyset
∅。网络中还有E中不包含的连边的集合(两个节点之间没有边),我们将此集合定义为不存在的边。
一、AUC
一个算法经过训练得到网络中每一对节点之间的相似值,AUC指标就是比较测试集中的边的相似值和不存在的边的相似值的大小。
若Sim测试 > Sim不存在,则数值的分子加1(此时证明预测效果良好);
若 Sim测试 = Sim不存在 ,则数值的分子加0.5(此时相当于随机选择);
若Sim测试 < Sim不存在,则数值的分子加0。
(Sim表示相似值)
数值的分母是测试集中的边的相似值与不存在的边的相似值比较的次数。比如测试集中2条边,不存在中3条边,那么比较次数就是6次。
AUC指标即为数值分子与数值分母的比值,AUC大于0.5的程度衡量了算法在多大程度上优于随机选择的算法。
注:
二、Precision
Precision只考虑前L位的边是否预测准确。链路预测算法经过训练后会得到节点对之间的相似值,去除训练集ET中的边,仅将测试集EP和不存在的边集合中的边的相似值进行排序,排序后取前L个。假设L个中有N个属于测试集,那么Precision值为N/L。
L的值如何设定,这是一个好问题!阅读其他论文,有的研究者选择了L=50,100,150,200,250都计算一遍,然后画了个折线图,不论L等于多少,你提出的算法的精确度比其它算法好就行。
三、Ranking Score
Ranking Score只考虑所测试的边的排序。令H = U-ET为未知边的集合(即测试集中的边和不存在的边的集合构成的集合),
γ
\gamma
γi 表示未知边 i∈EP 在排序中的排名,则该条未知边的Ranking Score(RS)值为:
|H|为H中的元素个数。遍历所有在测试集中的边,得到算法的RS值为:
注:
1、AUC是最常用的,它从整体上衡量算法;精确度只考虑前多少位是否预测正确。
2、在AUC基本相同的情况下,可以再以Precision作为标准衡量算法精确度。