roc曲线怎么绘制_文本分类任务的常用评价指标:Accuracy/Recall/Precision/F1/ROC/AUC

9df2af247360a1f6fb5fe4772fb5c7c0.png

声明:本帖子专为个人面试所写,本身只是为了加深自己的记忆,写完想着分享出来万一有人也需要呢。所以内容较浅,也比较基础,欢迎大佬们批评指正!


一. 准确率(Accuracy):

  • 什么是:分类问题中最基本的评价指标,正确分类样本所占的比列,即正确分类的测试样本/全部测试样本
  • 优点:计算简单,易于理解/即可以用于二分类,也可以用于多分类
  • 缺点:当数据不均衡时,无法很好的衡量分类器的好坏

二. 精确率(Precision):

  • 注意:只能用于二分类(多分类时,只能两两计算,然后求平均)
  • 什么是:公式不能死记硬背,给个什么TP,FP,TN,FN的表格,我看着都要好半天更别说记了,还总是容易跟recall记反。准确率的分母是所有被分为正类的所有测试样本,分子是被分为正类测试样本中,真正是正类的测试样本数量

  • 怎么理解这个精确:精确就是指既然已经预测出了正类,那就有对不对之说,预测的不一定都对,精确指的就是要找到预测正确的正类。
  • 再补充一句:精确率追求精,什么是精,上学的时候老师经常说一句话,学习不在于多,而在于精,啥意思呢,意思就是不在乎你是不是把所有正类都找出来了,但在乎在你找出来的基础上,正类一定要多。

三. 召回率(Recall):

  • 注意:只能用于二分类(多分类时,只能两两计算,然后求平均)
  • 什么是:公式不能死记硬背,总是容易跟precision记反。召回率的分母是所有正真是正类的测试样本,这里面就包括了把正真是正类样本预测正确+把正真是正类样本预测错误(即把正的预测成负的了),分子和precision一样,都是被分为正类测试样本中,真正是正类的测试样本数量。

  • 和precision区分:分子是一样的,主要理解分母部分,其实召回率只有分子和模型有关,需要送进模型才能得到,分母不送进模型,拿到数据的时候就知道了,因为它统计的是所有正类测试样本。而precision的分母就需要通过模型才能得到,因为它要统计这个模型把在分类正类的时候,把多少测试样本分类对了。
  • 再补充一句:召回率追求召回,可以记为找回,就是从所有正类样本中找回通过分类器之后仍是正类的样本。

四. Recall和Precision的应用场景:

  • 我的描述:取决于任务的目的,如果要求预测的要精准,那就precision高,就比如说,10个预测样本,5个正类,5个负类,预测结果为正类的就是那5个正类,那precision就高达100%;如果要求预测的多,那就recall高,比如说,同样的例子,我把10个全预测成正类,虽然里面有负类我给预测成了正类,可召回率高达100%,因为我只要求正类。
  • 别人的例子:
    • 地震的预测对于地震的预测,我们希望的是RECALL非常高,也就是说每次地震我们都希望预测出来。这个时候我们可以牺牲PRECISION。情愿发出1000次警报,把10次地震都预测正确了;也不要预测100次对了8次漏了两次。
    • 嫌疑人定罪基于不错怪一个好人的原则,对于嫌疑人的定罪我们希望是非常准确的。及时有时候放过了一些罪犯(recall低),但也是值得的。对于分类器来说,本质上是给一个概率,此时,我们再选择一个CUTOFF点(阀值),高于这个点的判正,低于的判负。那么这个点的选择就需要结合你的具体场景去选择。反过来,场景会决定训练模型时的标准,比如第一个场景中,我们就只看RECALL=99.9999%(地震全中)时的PRECISION,其他指标就变得没有了意义。

五. F1值(F1-score):

  • 原因:我们期望当然是精确率和召回率都高,但现实中往往不能两者兼得,所以,就搞了个结合它俩的东西就是F1值了,这个值越大越好。
  • 计算:

  • 再补充一句:这个记住就好了,没什么好说的,没有哪不好理解的,就是它俩的调和均值

六. PR曲线:

  • 什么是:召回率R为横轴、精确率P为纵轴画的曲线,如图

df1eb91933310ba0fbd99b39706bc4c1.png
  • 从上图不难发现,precision与Recall的折中(trade off),曲线越靠近右上角性能越好,曲线下的面积叫AP分数,能在一定程度上反应模型的精确率和召回率都很高的比例。但这个值不方便计算,综合考虑精度与召回率一般使用F1函数或者AUC值(因为ROC曲线很容易画,ROC曲线下的面积也比较容易计算)(参考链接:
杜博亚:机器学习分类模型评价指标详述​zhuanlan.zhihu.com
e17916d19215c46cef4fd8d2a3c1492a.png

  • 曲线下的面积越大,或者说曲线更接近右上角(precision=1, recall=1),那么模型就越理想,越好。

六. ROC曲线:

  • 什么是:全称为接受者操作特征(Receiver Operating Characteristic, ROC)
  • 为什么:在众多的机器学习模型中,很多模型输出的是预测概率,而使用精确率、召回率这类指标进行模型评估时,还需要对预测概率设分类阈值,比如预测概率大于阈值为正例,反之为负例。这使得模型多了一个超参数,并且这超参数会影响模型的泛化能力。而ROC曲线不需要这样一个设定阈值。ROC曲线纵坐标是真正率,横坐标是假正率。
  • 真正率(True Positive Rate):就是recall,上面已经说的很详细了。
  • 假正率(False Positive Rate):分母是所有的负类样本,预测时,包括预测成负的+预测成正的,分母就是预测时把本身是负类的样本预测成了正类。跟recall相反,recall说的是正类,假正率说的是负类。
  • 下图这个曲线就是以true positive rate 和 false positive rate为轴,取不同的threshold点画的。

8991f0c3ada3da34fca128aa958fbcf2.png
ROC 的计算方法同时考虑了学习器对于正例和负例的分类能力,在样本不平衡的情况下,依然能够对分类器做出合理的评价。ROC对样本类别是否均衡并不敏感,这也是不均衡样本通常用ROC评价学习器性能的一个原因。

例如在癌症预测的场景中,假设没有患癌症的样本为正例,患癌症样本为负例,负例占比很少(大概0.1%),如果使用准确率评估,把所有的样本预测为正例便可以获得99.9%的准确率。但是如果使用ROC,把所有样本预测为正例,TPR为1,FPR为1。这种情况下学习器的ROC值将等于0.5,成功规避了样本不均衡带来的问题。

  • ROC对样本类别是否均衡并不敏感原因:计算TPR和FDR是计算条件概率,以真实Y=0或Y=1为条件,所以跟Y的分布无关。
  • ROC曲线和P-R曲线有些类似:ROC曲线越靠近左上角性能越好。左上角坐标为(0, 1),即FPR=0,TPR=1,根据FPR和TPR公可以得知,此时FN=0, FP=0,模型对所有样本分类正确,绘制ROC曲线很简单,首先对所有样本按预测概率排序(预测概率指的是分类器一般不会直接给出类别,而是给出属于某个类的概率,然后需要手动设定阈值来确定大于多少概率属于哪一类,比如逻辑回归,预测出来在0-1之间是个概率,人为规定大于0.5是正类,小于是负类,在这的意思就是不预先设定阈值,而是拿每一个样本的概率都当作一边阈值来求FDR和TPR然后画图),以每条样本的预测概率为阈值,计算相应的FPR和TPR,然后线段连接(如图)。

f604ea6dbcedb00bb951a8ac64c5f7f4.png
当数据量少时,绘制的ROC曲线不平滑;当数据量大时,绘制的ROC曲线会趋于平滑。
  • 为什么左上角最好:首先要清楚横纵坐标分别是什么,横为FPR,纵为TPR,当然真正率越大,假正率越小越好咯。
  • ROC的作用:
    • ROC曲线能很容易的查出任意阈值对学习器的泛化性能影响。
    • 有助于选择最佳的阈值。ROC曲线越靠近左上角,模型的查全率就越高。最靠近左上角的ROC曲线上的点是分类错误最少的最好阈值,其假正例和假反例总数最少。
    • 可以对不同的学习器比较性能。将各个学习器的ROC曲线绘制到同一坐标中,直观地鉴别优劣,靠近左上角的ROC曲所代表的学习器准确性最高。
  • ROC的优点:
    • 该方法简单、直观、通过图示可观察分析方法的准确性,并可用肉眼作出判断。ROC曲线将真正例率和假正例率以图示方法结合在一起,可准确反映某种学习器真正例率和假正例率的关系,是检测准确性的综合代表。
    • 对数据平不平衡不敏感,可用来衡量不平衡数据

六. AUC(Area under curve):

AUC是一个模型评价指标,只能用于二分类模型的评价,对于二分类模型,还有很多其他评价指标,比如logloss,accuracy,precision。如果你经常关注数据挖掘比赛,比如kaggle,那你会发现AUC和logloss基本是最常见的模型评价指标。为什么AUC和logloss比accuracy更常用呢?因为很多机器学习的模型对分类问题的预测结果都是概率,如果要计算accuracy,需要先把概率转化成类别,这就需要手动设置一个阈值,如果对一个样本的预测概率高于这个预测,就把这个样本放进一个类别里面,低于这个阈值,放进另一个类别里面。所以这个阈值很大程度上影响了accuracy的计算。使用AUC或者logloss可以避免把预测概率转换成类别。(前面讲了ROC是怎么画图的,画图的时候用的就是概率,并没有转换成类别,AUC就是ROC曲线下的面积)

AUC就是ROC曲线下的面积,衡量学习器优劣的一种性能指标。

从定义可知,AUC可通过对ROC曲线下各部分的面积求和而得。假定ROC曲线是由坐标为

的点按序连接而形成,则AUC可估算为:

一个完美的分类器的AUC为1.0,而随机猜测的AUC为0.5,显然AUC值在0和1之间,并且数值越高,代表模型的性能越好

fb305673f7ce9e7685c122eac4f0aa43.png

七. 宏平均(Macro-averaging)和微平均(Micro-averaging):

  • 用途:用于多个类别的分类
  • 宏平均:把每个类别都当作正类计算一下precision,recall,f1然后求和求平均
  • 微平均:把每一个类别都当作正类,微平均不再计算每一个类别的precision,recall,f1,而是计算出需要计算precision,recall,f1的值,即TP、FP、TN、FN,一直不愿意提,但在这不得不提了,然后加起来求平均,然后用这平均值来计算precision,recall,f1

八. 混淆矩阵:

  • 混淆矩阵又被称为错误矩阵, 在每个类别下,模型预测错误的结果数量,以及错误预测的类别和正确预测的数量都在一个矩阵下面显示出来,方便直观的评估模型分类的结果。

ded0b39c1a8fadb2e9e6cfdbd078bd65.png

9365b702021116e5a87804cf32bbb67b.png

32b903035ca31ae3567bc9d818633593.png

来自:

混淆矩阵是什么意思?​www.zhihu.com
混淆矩阵的每一列代表了预测类别,每一列的总数表示预测为该类别的数据的数目; 每一行代表了数据的真实归属类别,每一行的数据总数表示该类别的数据实例的数目。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值