在机器学习领域有最常见的三个指标:精度(Precision)、召回率(Recall)、F值(F-Measure)。
那么,这三个指标实际怎么用呢?
假设我们有某指标(如CN),计算出来的节点对相似性的边,用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中前 个结果中正确的个数 与 的比值,当然,为了简单,也可以直接让 =len(gr)。
然后还有一个叫做Accuracy的东东。
对,就是这个东东,算起来比较墨迹。
你要用你算对的加上你没算对并且实际也不对的那部分作为分母,然后除以不管你算没算对的所有结果。
。。。额,先写到这里了。