F值,亦被称做F-measure,是一种量测算法的精确度常用的指标,经常用来判断演算法的精确度。目前在辨识、侦测相关的演算法中经常会分别提到精确率(precision)和召回率(recall),F-score能同时考虑这两个数值,平衡地反映这个演算法的精确度

定义

一般式

 

 是使用者自行定义的参数,由一般式可见F-score能同时考虑precision和recall这两种数值。分子为precision和recall相乘,根据这个式子,只要precision或recall趋近于0,F-score就会趋近于0,代表著这个演算法的精确度非常低。一个好的演算法,最好能够平衡recall和precision,且尽量让两种指标都很高。所以有一套判断方式可以同时考虑recall和precision。当 时,F-score退化为precision;当 时,F-score退化为recall。

Precision和Recall权重一样时

一般上来说,提到F-score且没有特别的定义时,是指 时的F-score,亦有写作F1-score。代表使用者同样的注重precision和recall的这两个指标。其分数可以说是precision和recall的调和平均,式子如下:

 

F-score最理想的数值是趋近于1,做法是让precision和recall都有很高的值。若两者皆为1,使得 ,则F-score = 1 (100%),代表该算法有著最佳的精确度

F-score的组成元素

TP, FN, FP, TN

 
量测常见的4种情况

前面的true/false修饰后面的positive/negative,后面的positive/negative是我们的方法的判断。

  • TP(true positive,真阳性):我们的方法判断为真,这个判断是对的。即事实上为真,而且被我们的方法判断为真的情形。
  • FN(false negative,假阴性):我们的方法判断为不真,这个判断是错的。即事实上为真,却被我们的方法判断为不真的情形。
  • FP(false positive,假阳性):我们的方法判断为真,这个判断是错的。即事实上不为真,却被我们的方法误判为真的情形。
  • TN(true negative,真阴性):我们的方法判断为不真,这个判断是对的。即事实上不为真,而且被我们的方法判断成不为真的情形。

以抓犯人为例,TP是有罪而且被抓到的情形,FN是有罪但没被抓到的情形,FP是无罪但被误抓的情形,TN是无罪且未被误逮的情形

混淆矩阵
  判断为真 判断不为真
事实上为真 TP FN
事实上不为真 FP TN

Precision和Recall

  (positive prediction rate)

Precision的分母为两种判断为真的情形的总和(范恩图中完整绿色的部份)

解释:当辨识结果为FP的代价很高时,F-score应该著重此指标,亦即precision要很高。
例子:辨识电邮信箱里的垃圾邮件时,如果某封被误判成垃圾邮件(即FP)时,使用者可能就此错过重要的通知。


 

Recall的分母事实上为真的情形的总和(范恩图中完整紫色的部份)

解释:当辨识结果为FN的代价很高时,F-score应该著重此指标,亦即recall要很高。
举例:一个传染病诊断辨识系统中,如果某个传染病患者被误判成阴性(即FN),当地的社区的居民就落入被传染的高风险之中。
举例:真正犯罪的人当中,有多少比例的罪犯被抓到。或,一张照片当中,有多少人脸被侦测到。


Precision和Recall的异同

  • 它们的分子皆为TP。
  • F-score的recall和precision之间存在著权衡的关系,可通过 β 调整更重视的部份。


以警察抓犯人的故事为例:

一位警察很厉害,抓了很多犯人,但是这些犯人当中,只有少部分真正有罪,其他都是被冤枉的。

  • recall 高,因为该抓与不该抓的犯人都被抓到了。
  • precision 低,因为很多都是没犯罪的人。
“宁可错抓一百,也不可放过一个”
recall 高,但 precision 低。


一个警察非常严谨,只逮捕真正有犯罪的人,不抓实在是没办法肯定的犯人。

  • precision 高,因为通常被抓到人的都是有罪的。
  • recall 低,因为不小心放掉一大群犯人。
“宁可错放一百,也不可冤枉一个”
precision 高,但 recall 低。

应用

F-score经常用于评估资讯检索的结果,如:

性质

F-score 是等于取回物品集和相关物品集的Dice系数

参考