在分类任务中,两种最常用的性能度量是错误率和精度。错误率是分类错误的样本数占样本总数的比例;精度则是分类正确的样本数占样本总数的比例。错误率和精度虽然常用,但并不能满足所有任务需求。
例如在信息检索和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-R曲线”。
如何根据P-R曲线选择合适的学习器呢?
- 若一个学习器的P-R曲线被一个学习器的曲线完全“包住”,则选择后面那个大的,例如曲线中B的性能优于C的性能。
- 如果两个学习器的曲线发生了交叉,例如图中的A和B。一个方法是比较P-R曲线下面积的大小,但是这个值不太好算。所以另一个方法是选择“平衡点”(Break-Even Point,简称BEP)。平衡点是 准确率=召回率 时的取值。所以可认为A的性能优于B。
三、F1
但是BEP还是有点草率,更常用的是F1度量:
F1对准确率和召回率一视同仁,F1有更一般的形式——表达出我们对准确率和召回率不同的偏好,它定义为:
时退化为标准的F1;时召回率有更大的影响;时准确率有更大影响。
四、n个二分类下准确率和召回率
- 一种直接的做法是先在各个混淆矩阵上分别计算准确率和召回率,再计算平均值,这样就得到”宏准确率“(macro-P)、”宏召回率“(macro-R),以及”宏F1“(macro-F1):
- 另一种做法就是先对混淆矩阵的各个元素取平均,记为、、、,再计算”微准确率“(micro-P)”微召回率“(micro-R)”微F1“(micro-F1):