精确率、召回率、F1 值、ROC、AUC等分类模型评价指标含义与作用详解

摘要

在涉及机器学习领域的分类问题时(尤其是衡量推荐系统性能时),经常会遇到诸如准确率、召回率、ROC、AUC等名词。本文就来详细阐述一下各类评价指数的具体含义和特点。

一、精确率、召回率、F函数、准确率和错误率

1、定义

结合混淆矩阵进行说明
在这里插入图片描述
1、
**精确率(Precision)**是指在所有系统判定的“真”的样本中,确实是真的的占比,就是TP/(TP+FP)。
**召回率(Recall)**是指在所有确实为真的样本中,被判为的“真”的占比,就是TP/(TP+FN)。

举一个简单的例子:
100箱苹果里面有95箱好的,5箱坏的。(这是事实前提)
于是我将苹果分为了两堆:90箱我认为是好的,另外10箱我认为是坏的。然而实际上,那90箱是87好3坏,那10箱里有8好2坏。
我们将这个例子与混淆矩阵进行对应,可知:
TP(我认为是好的并且确实是好的)= 87;
FP(我认为是好的但实际上是坏的)= 3;
FN(我认为是坏的但实际上是好的)= 8;
TN(我认为是坏的并且确实是坏的)= 2。

准确率 = 87/(87+3);
召回率 = 87/(87+8)
这两个式子分子都是TP(预计对了的好的苹果),分母分别是我认为的所有的好的苹果、实际上所有的好的苹果。

2、准确率与错误率
在这里插入图片描述
这个很好理解,准确率就是你区分对了的概率(区分对了包括两种情况——将好苹果分到了好的那一堆(TP)以及将坏苹果分到了坏的那堆(TN)),错误率就是区分错了的。
仍以上面的例子做演示:
准确率 = (87+2)/100;
错误率 = (3+8)/ 100 。

3、F函数
F1函数是一个常用指标,F1值是精确率和召回率的调和均值,即
在这里插入图片描述
F值也可泛化为对精确率和召回率赋不同权值进行加权调和,通过调节alpha来改变F值,
alpha == 1时即上式中F1。
在这里插入图片描述

2、区别与应用

区别:
理想情况下,精确率和召回率两者都越高越好。然而事实上这两者在某些情况下是矛盾的,精确率高时,召回率往往比较低;精确率低时,召回率往往比较高。
仍以苹果为例子:如果我只取一箱好的苹果,那我的准确率为1/1,是100%。但我的召回率只有1/95,就极低。
所以我们往往会根据具体需求来做取舍,比如预测流行病毒,我宁可预测1000次,哪怕只有十次被我成功预料到进而化解,也好过预测一次,然后遭受9次病毒扩散的后果。
但在另一种场景中,比如法官判案时要遵循“疑罪从无”的原则,那就要求召回率很高,精确率可以适当放低要求。

应用:
精确率和召回率是二分类指标,不适用多分类,由此得到P-R曲线以及ROC曲线均是二分类评估指标(因为其横纵轴指标均为二分类混淆矩阵计算得到)。
而准确率和错误率适用于多分类评估。(可以将多分类问题转换为二分类问题进行求解,将关注的类化为一类,其他所有类化为一类)。

二、ROC曲线、P-R曲线、AUC

1、P-R曲线

PR曲线就是以准确率P为纵轴,以召回率R为横轴的曲线。
在这里插入图片描述
从上图不难发现,对precision与Recall,曲线越靠近右上角性能越好,曲线下的面积叫 AP 分数,能在一定程度上反应模型的精确率和召回率都很高的比例。但这个值不方便计算,综合考虑精度与召回率一般使用 F1 函数或者 AUC 值(因为ROC曲线很容易画,ROC曲线下的面积也比较容易计算)。

应用场景:
因为 Precision 与 Recall 都是二分类指标,所以PR 曲线也必然是二分类指标。
那多分类问题能不能处理呢?
事实上可以将precision、Recall及PR曲线应用到多分类,但是这种情况实际上不过是将多分类转换为二分类问题进行分析,即将关注的类视为一类,将其他所有类化为另一类。

2、ROC曲线

引入原因:
在众多的机器学习模型中,很多模型输出的是预测概率,而使用精确率、召回率这类指标进行模型评估时,还需要对预测概率设分类阈值,比如预测概率大于阈值为正例,反之为负例。这使得模型多了一个超参数,并且这超参数会影响模型的泛化能力。而ROC曲线不需要设定阈值,所以不会此影响。

ROC(接受者操作特征Receiver Operating Characteristic)曲线纵坐标是真正率,横坐标是假正率,其对应的计算公式如下:
在这里插入图片描述
不难看出
真正率TPR = 召回率Recall = sensitivity(另一种表示),即真样本中被判断为真的概率。
假正率FPR = 1 - specificity(另一种表示),即假样本中被误判为真的概率。

所以有如下特点
在这里插入图片描述
可以看到sensitivity和specificity是条件于真实label Y的概率的条件概率,所以无论Y的真实概率是多少,都不会影响sensitivity和specificity。
也就是说,这两个metric是不会受不平衡数据影响的!
而precision则不是,所以会随着你的测试集里面的正反比例而发生改变。

ROC曲线如下图所示:
在这里插入图片描述
ROC曲线纵坐标是真正率,横坐标是假正率。
所以越靠近左上角性能越好。左上角坐标为(0, 1),即FPR=0,TPR=1,根据FPR和TPR公可以得知,此时FN=0, FP=0,模型对所有样本分类正确。

如何绘制ROC曲线?
首先对所有样本按预测概率排序,以每条样本的预测概率为阈值,计算相应的FPR和TPR,然后线段连接。

ROC曲线优势:
ROC曲线能很容易的查出任意阈值对学习器的泛化性能影响。

有助于选择最佳的阈值。ROC曲线越靠近左上角,模型的查全率就越高。最靠近左上角的ROC曲线上的点是分类错误最少的最好阈值,其假正例和假反例总数最少。

可以对不同的学习器比较性能。将各个学习器的ROC曲线绘制到同一坐标中,直观地鉴别优劣,靠近左上角的ROC曲所代表的学习器准确性最高。

3、AUC

定义:
AUC(Area under curve)顾名思义就是ROC曲线下的面积,衡量学习器优劣的一种性能指标。 从定义可知,AUC可通过对ROC曲线下各部分的面积求和而得。

AUC计算公式:
在这里插入图片描述
AUC的意义:
AUC和Mann–Whitney U test有密切的联系。
从Mann–Whitney U statistic的角度来解释,AUC就是从所有1样本中随机选取一个样本, 从所有0样本中随机选取一个样本,然后根据你的分类器对两个随机样本进行预测,把1样本预测为1的概率为p1,把0样本预测为1的概率为p0,p1>p0的概率就等于AUC

AUC是指随机给定一个正样本和一个负样本,分类器输出该正样本为正的那个概率值比分类器输出该负样本为正的那个概率值要大的可能性

所以AUC反应的是分类器对样本的排序能力。 如果我们完全随机的对样本分类,那么AUC应该接近0.5。
所以一般训练出的模型,AUC>0.5。如果AUC=0.5,这个分类器等于没有效果,效果与完全随机一样,如果AUC<0.5,则可能是标签标注错误等情况造成。

AUC优点:
因为AUC利用的是ROC曲线,所以在样本不平衡的情况下,依然能够对分类器做出合理的评价。
举个例子:
在癌症预测的场景中,假设没有患癌症的样本为正例,患癌症样本为负例,负例占比很少(大概0.1%),如果使用准确率评估,把所有的样本预测为正例便可以获得99.9%的准确率。但是如果使用AUC,把所有样本预测为正例,TPR为1,FPR为1。这种情况下学习器的AUC值将等于0.5,成功规避了样本不均衡带来的问题。

AUC缺点:

只反映了模型的整体性能,看不出在不同点击率区间上的误差情况;
只反映了排序能力,关注的是概率值的相对大小,与阈值和概率值的绝对大小没有关系,没有反映预测精度;(简单说,如果对一个模型的点击率统一乘以2,AUC不会变化,但显然模型预测的值和真实值之间的offset扩大了。)
AUC只关注正负样本之间的排序,并不关心正样本内部,或者负样本内部的排序。这也体现了AUC的本质:任意个正样本的概率都大于负样本的概率的能力。

然而,ROC 曲线不会随着类别分布的改变而改变的优点在一定程度上也是其缺点。因为 ROC 曲线这种不变性其实影响着的是 AUC 值,或者说是评估分类器的整体性能。但是在某些场景下,我们会更关注正样本,这时候就要用到 PR 曲线了。

比如说信用卡欺诈检测,我们会更关注 precision 和 recall,比如说如果要求预测出为欺诈的人尽可能准确,那么就是要提高 precision;而如果要尽可能多地预测出潜在的欺诈人群,那么就是要提高 recall。一般来说,提高二分类的 threshold 就能提高 precision,降低 threshold 就能提高 recall,这时便可观察 PR 曲线,得到最优的 threshold。

后续又整理了一份关羽推荐系统的常用评价指标,可以点击这里查看
https://editor.csdn.net/md/?articleId=105215286

参考:
https://blog.csdn.net/Dby_freedom/article/details/82251398
https://blog.csdn.net/b876144622/article/details/80009867


版权声明:本文为weixin_45459911原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。