准确率(precision)、召回率(recall)与F1

        在分类任务中,两种最常用的性能度量是错误率和精度。错误率是分类错误的样本数占样本总数的比例;精度则是分类正确的样本数占样本总数的比例。错误率和精度虽然常用,但并不能满足所有任务需求。

        例如在信息检索和Web搜索中,经常关心的问题是“检索出来的信息有多少比例是用户感兴趣的”、“用户感兴趣的信息有多少被检索出来了”。准确率和召回率就是用来描述此类问题的性能度量。在有些问题中准确率被称为查准率,召回率被称为查全率,其实都是一个意思。

一、准确率、召回率

对于二分类问题,可将样例根据真实值和预测值分为四类——真正例(true positive)、假正例(false positive)、真反例(true negative)和假反例(false negative)。令TP、FP、TN、FN分别表示对应的样例数,则有TP+FP+TN+FN=样例总数。

        真实值

预测值
正例 反例
正例 TP(真正例) FN(假反例)
反例 FP(假正例) TN(真反例)

 

这张表称为混淆矩阵(confusion matrix)。

准确率P和召回率R分别定义为:

                                                     P=\frac{TP}{TP+FP}

                                                     R=\frac{TP}{TP+FN}

准确率和召回率是一对相互矛盾的度量。准确率高时,召回率往往偏低;而召回率高时,准确率往往偏低。例如,若希望将用户感兴趣的信息筛选出来,则可通过增加选择信息的数量来实现,这样召回率高了,准确率就会降低;若希望筛选出来的信息用户喜欢的比例尽可能的高,则会选择最有把握的信息,这样就会漏选其他用户可能感兴趣的信息,使得召回率就会偏低。通常只有在一些简单的任务中,才可能使准确率和召回率都很高。

二、比较准确率和召回率

以召回率为横轴、准确率为纵轴作图,就能得到准确率-召回率曲线,简称“P-R曲线”。

                                         准确率(precision)、召回率(recall)与F1_第1张图片

如何根据P-R曲线选择合适的学习器呢?

  • 若一个学习器的P-R曲线被一个学习器的曲线完全“包住”,则选择后面那个大的,例如曲线中B的性能优于C的性能。
  • 如果两个学习器的曲线发生了交叉,例如图中的A和B。一个方法是比较P-R曲线下面积的大小,但是这个值不太好算。所以另一个方法是选择“平衡点”(Break-Even Point,简称BEP)。平衡点是 准确率=召回率  时的取值。所以可认为A的性能优于B。

三、F1

但是BEP还是有点草率,更常用的是F1度量:

                                                          

F1对准确率和召回率一视同仁,F1有更一般的形式——F_{\beta }表达出我们对准确率和召回率不同的偏好,它定义为:

                                                         F_{\beta }=\frac{(1+\beta^{2})\times P\times R}{(\beta^{2}\times P)+R}

\beta=1时退化为标准的F1;\beta >1时召回率有更大的影响;\beta <1时准确率有更大影响。

四、n个二分类下准确率和召回率

  • 一种直接的做法是先在各个混淆矩阵上分别计算准确率和召回率,再计算平均值,这样就得到”宏准确率“(macro-P)、”宏召回率“(macro-R),以及”宏F1“(macro-F1):

                                              

                                              

                                              

  • 另一种做法就是先对混淆矩阵的各个元素取平均,记为、、、,再计算”微准确率“(micro-P)”微召回率“(micro-R)”微F1“(micro-F1):

                                              micro-P=\frac{\overline{TP}}{\overline{TP}+\overline{FP}}

                                              micro-R=\frac{\overline{TP}}{\overline{TP}+\overline{FN}}

                                              

 

你可能感兴趣的:(机器学习入门,准确率,召回率,F度量)