image
LP小透明

当你感到无聊的时候,就去学习,因为一旦你开始认真学习,就会立刻发现比学习有趣的事来打断你的学习

链路预测中精度、召回率、F值的学习记录

LP小透明    2018-11-20 09:21

在机器学习领域有最常见的三个指标:精度(Precision)、召回率(Recall)、F值(F-Measure)。

那么,这三个指标实际怎么用呢?

假设我们有某指标(如CN),计算出来的节点对相似性>0>0的边,用res表示。

而实际缺失的测试集的边用gr表示。

res和gr是是两个数组,类似于如下的格式。

res = [(1,3),(2,3)]
gr = [(1,3),(1,2)]

好的,我们就举个例子。

那么,预测正确的是几个呢?

显然是1个,[(1,3)]。

也就是:

co = len(set(res)&set(gr))

那么,precision、recall、F-measure 怎么算呢?

p = len(co)/len(res)
r = len(co)/len(gr)
f = 0.5*p*r/(p+r)

 

在链路预测中,我们通常计算AUC值用来衡量预测结果怎么样。具体可以参见吕琳媛老师的《链路预测》一书。

因为用ROC曲线算面积的方法好难啊,本LP小透明没看懂

但是,好在吕老师给出了一个比较具体的例子,就是拿res计算的边的相似性和实际缺失的gr的边的相似性进行比较,如果gr里的边大于res就加1,等于就加0.5,小于啥也不加。。。

 

然后加出来的结果再除以比较的次数就可以了。

再说个精确度(Precision),对的,你没有看错,也是Precision,具体参见《链路预测》pp.55

就是比较res中前 LL 个结果中正确的个数 mm 与 LL 的比值,当然,为了简单,也可以直接让 LL=len(gr)。

然后还有一个叫做Accuracy的东东。

对,就是这个东东,算起来比较墨迹。

你要用你算对的加上你没算对并且实际也不对的那部分作为分母,然后除以不管你算没算对的所有结果。

 

。。。额,先写到这里了。

 

Last Modified: 2019-07-28 16:56
Views: 3.6K

[[total]] comments

Post your comment
  1. [[item.time]]
    [[item.user.username]] [[item.floor]]Floor
  2. Click to load more...
  3. Post your comment