在机器学习建模中,模型评估指标用于评估不同模型的优劣。

在分类任务中,最简单的评估指标莫过于错误率和精度了,错误率表示的是错误分类的样本个数占总样本个数的比例,精度则是1减去错误率。

错误率和精度的优点是:它们不仅仅适用于二分类问题,也同样适用于多分类问题。

但是单单看错误率和精度两个指标无法很好的对模型进行合适的评估。一方面,现在不少的模型最终都是预测一个类别的概率值,为了计算错误率和精度,得设定一个阈值,以便确定预测的正例和反例。这样相当于引入了一个新的超参数,会增加复杂性和不确定行。

另一方面,以周志华老师在《机器学习》[1]书中的西瓜为例,我们挑选西瓜往往关注的不是有多少比例的西瓜判断错了,而是关注:我挑选的瓜有多少比例是好瓜,或者有多少比例的好瓜被我挑选出来了。错误率和精度无法评估这方面的比例。

准确率(Precision)和召回率(Recall),以及真正率(Ture Positive Rate)和假正率(False Positive Rate)更加的适合用于模型的评估。

本篇博文首先介绍各种指标的数学公式和基本含义,然后介绍P-R曲线和ROC曲线,最后分析两者的联系和差异,以及如何选择。

一:基本定义

对于二分类问题,样本点的实际类别和预测的类别两辆组合,会产生4种情况:(1)实际为正,预测为正;(2)实际为正,预测为负;(3)实际为负,预测为正;(4)实际为负,预测为负。四种情况,可以组成如下的混淆矩阵(Confusion Matrix)。

然后,准确率P和召回率R定义如下:

准确率表示的是,预测为正例的样本中,有多少比例是预测对的。对应前面例子,类似挑的瓜里面多少比例是好瓜。

召回率表示的是,真实为正例的样本中,有多少比例被预测对了。类似,好瓜有多少比例被我挑中了。

一般会综合考虑P和R,定义两者的调和平均值为F1。表示如下:

调和平均相比较于算数平均,更加重视较小值。也可以给P和R加上权重,表示如下:

更加重视准确率,就意味着“宁缺毋滥”,适用于对精度要求高的场景,如商品推荐。

而重视召回率,意味着“宁可错杀一百,不能放过一个”,适用于类似反欺诈等场景。

真正率(TPR)和假正率(FPR)定义如下:

TPR表示的是,正例的样本被正确预测为正例的比例。

FPR表示的是,反例的样本中被错误预测为正例的比例。

二:P-R曲线和ROC曲线

将样本按照按照预测为正例的概率值从大到小进行排序,从第一个开始,逐个将当前样本点的预测值设置为阈值,有了阈值之后,即可得出混淆矩阵各项的数值,然后计算出P和R,以R为横坐标,P为纵坐标,绘制于图中,即可得出P-R曲线,示意图如下。

当一个模型a的P-R曲线完全包住另一个模型b的P-R曲线时,即可认为a优于b。其他情况下,可以使用平衡点,也即F1值,或者曲线下的面积来评估模型的好坏。

类似的,将样本排好序后,从第一个开始,逐渐的将其和其之前的点预测为正例,其他的预测为反例,这样就能计算出TPR和FPR,以FPR为横坐标,TPR为纵坐标,即可绘制出ROC(Receiver Operating Characteristic)曲线,示意图如下。ROC曲线下面覆盖的面积称为AUC(Area Under ROC Curve)。用于评估模型的好坏,面积的计算可以通过梯形去插值计算,公式和示意图如下:

三:两者的联系

P-R曲线和ROC曲线都能对模型进行评估,两个曲线也自然有着千丝万缕的联系。

文章[2]中就提出了几个论点并且进行了证明,这里进行简单描述下。

  • 当召回率不等于0时,P-R曲线的点和ROC曲线的点都能一一对应。

原因也很简单,两个曲线的点都能对应一个数值确定的混淆矩阵,当召回率不为0时,可以通过P和R的数值,加上样本中正例和反例的个数组方程组,便可计算出混淆矩阵中各项的数值,进而计算真正率和假正率,这样,ROC对应的点也就找到了。

  • 当一个模型a在P-R上优于b时,a在ROC曲线上也同样会优于b,反过来也同样成立。

证明如下,假定算法1优于算法2。先证明ROC => P-R,固定TPR画条平行横轴的直线,直线和算法1交于点B,和算法2交于点A。示意图如下:

两个点的TPR相等,结合TPR的定义可以得出两者的TP相等,因为算法1优于2,所以B点的FPR小于等于A点的FPR,根据FPR定义,可以得出FP1 <= FP2,最后根据准确率P的定义可以得出,P1 >= P2。两点的TPR相等,也即两点的P-R曲线中,横坐标召回率相等,P1 >= P2,即可得出算法1在P-R曲线中也优于算法2。

反方向的证明思路一样,通过固定召回率,这里就不证明了。

四:两者的区别,如何选择

一般情况下,两者都能很好的完成模型的评估工作,效果相差也不大。但是,当正样本个数严重小于负样本个数,收据严重倾斜时,P-R曲线相比较于ROC曲线更加适合[3]。P-R曲线能够更加的明显直观的表现出模型之间的好坏,示意图如下[4]:

观察图能够发现,当正样本比例减小时,ROC曲线变化不明显,但是P-R曲线的纵坐标,即准确率出现了明显的衰减。

原因是,当样本严重倾斜时,我们假定召回率不变,那么表现较差的模型必然会召回更多的负样本,那么FP(假正例)就会迅速增加,准确率就会大幅衰减。

下面通过简单的数据直观的表示,假设样本总数10万个,正样本100个,负样本99900个。算法1召回了100个样本,90个为正样本。算法2召回了200个样本,90个正样本。通过上面的公式能计算出:

P(algo1) = 0.9, R(algo1) = 0.9, TPR(algo1) = 0.9, FPR(algo1) = 0.0001

P(algo2) = 0.45, R(algo2) = 0.9, TPR(algo2) = 0.9, FPR(algo2) = 0.001

diff(P) = 0.45, 但是diff(FPR)=0.0009。因此P-R曲线能够更加直观的表现两个算法的差异。

五:结论

通过上面的分析,我相信大家对P-R曲线,和ROC曲线都有了深入的理解。

我们可以得出如下结论:一般情况下,模型评估选择P-R或者ROC没啥区别,但是当正样本的个数严重少于负样本个数时,P-R曲线相比较于ROC曲线能够更加直观的表现模型之间的差异,更加合适。

参考文献:

[1] 机器学习 - 周志华

[2] The Relationship Between Precision-Recall and ROC Curves. - Jesse Davis

[3] What is the difference between a ROC curve and a precision-recall curve? When should I use each? – Quora

[4] P-R曲线及与ROC曲线区别. – 光彩照人(博客园)

模型评估指标:P-R曲线和ROC曲线相关推荐

  1. 分类模型-评估指标(2):ROC曲线、 AUC值(ROC曲线下的面积)【只能用于二分类模型的评价】【不受类别数量不平衡的影响;不受阈值取值的影响】【AUC的计算方式:统计所有正负样本对中的正序对】

    评价二值分类器的指标很多,比如precision.recall.F1 score.P-R曲线等.但这些指标或多或少只能反映模型在某一方面的性能.相比而言,ROC曲线则有很多优点,经常作为评估二值分类器 ...

  2. 【机器学习】--模型评估指标之混淆矩阵,ROC曲线和AUC面积

    一.前述 怎么样对训练出来的模型进行评估是有一定指标的,本文就相关指标做一个总结. 二.具体 1.混淆矩阵 混淆矩阵如图:  第一个参数true,false是指预测的正确性.  第二个参数true,p ...

  3. 模型评估指标(Confusion Matrix、ROC、AUC)

    文章目录 1.选择合适的模型评估指标的依据 2.混淆矩阵(Confusion Matrix) 2.1 模型整体效果:准确率 2.2 捕捉少数类:精确率(Precision).召回率(Recall)和F ...

  4. 模型评估与选择(中篇)-ROC曲线与AUC曲线

    P-R曲线 以二分类问题为例进行说明.分类结果的混淆矩阵如下图所示. 假设,现在我们用某一算法h对样本进行二分类(划分为正例.反例).由于算法可能与理想方法存在误差,因此在划分结果中,划分为正例的那部 ...

  5. 模型评估准确率、召回率、ROC曲线、AUC总结

    实际上非常简单,精确率是针对我们预测结果而言的,它表示的是预测为正的样本中有多少是对的.那么预测为正就有两种可能了,一种就是把正类预测为正类(TP),另一种就是把负类预测为正类(FP). P = TP ...

  6. SVC模型评估指标与ROC曲线

    目录 1.解决二分类SVC中的样本不均衡问题 1.1 概述 1.2 SVC参数class_weight 1.3 参数class_weight的使用 2.SVC模型评估指标 2.1 混淆矩阵(Confu ...

  7. (8) 支持向量机(下)(模型评估指标、ROC曲线)

    文章目录 1 二分类SVC的进阶 1.1 参数C的理解进阶 1.2 二分类SVC中的样本不均衡问题:重要参数class_weight 2 SVC的模型评估指标 2.1 混淆矩阵 2.1.1 模型整体效 ...

  8. 数据挖掘:模型评估指标

    数据挖掘:模型评估 一般在比赛中,我们会看到对于回归(分类)问题,不同的比赛会有不同的评价指标.我们在训练模型时,不能只记住回归问题用均方误差,而不去在意比赛目标的评价指标,这样我们往往会得到比较差的 ...

  9. 你真的了解分类模型评估指标都有哪些吗?【附Python代码实现】

    大家早上好,本人姓吴,如果觉得文章写得还行的话也可以叫我吴老师.欢迎大家跟我一起走进数据分析的世界,一起学习! 感兴趣的朋友可以关注我或者我的数据分析专栏,里面有许多优质的文章跟大家分享哦. 必看前言 ...

  10. P-R曲线与ROC曲线使用总结

    P-R曲线与ROC曲线总结 作者:jliang https://blog.csdn.net/jliang3 1.P-R曲线 1)实际预测时二分类的四种情况 真阳性/真正类(True Positive, ...

最新文章

  1. php的方向,PHP面试方向
  2. 计算机无法打开策略,windows电脑本地计算机策略打不开该怎么解决?
  3. 线上squid防火墙配置
  4. 直接用IP访问知乎,我发现了一个秘密···
  5. 针对《等保2.0》要求的云上最佳实践——网络安全篇
  6. 制作巴士电台彩蛋一枚
  7. 回顾一年的工作历程_【设备管理公司】召开20202021年度总结计划表彰暨工作述职会议...
  8. maven不配置环境变量可以使用吗_哪些土地可以不缴纳土地使用税?包括农村地吗?...
  9. mysql 偏移量是什么_数据块内部偏移量的基本计算方法
  10. bzoj5194: [Usaco2018 Feb]Snow Boots
  11. size()计算jquery对象中元素的个数
  12. “CEPH浅析”系列之一——前言
  13. php教程 TTP中GET与POST的区别
  14. springboot整合mybatis-pluss、sharding-JDBC 水平分表demo
  15. CorelDRAWX4的VBA插件开发(二十六)深度转曲之包含容器内文字转曲
  16. jQuery 前端操作
  17. Smart Thief 问题
  18. 蓝桥杯练习题 Fibonacci数列
  19. VBA按列名称或是按表格标题给EXCEL表格做排序
  20. 【转载】深入浅出的讲解傅里叶变换

热门文章

  1. java场次时间冲突,解决使用@Scheduled创建任务时无法在同一时间执行多个任务的BUG...
  2. js 手机号、姓名、身份证号脱敏(打星号)
  3. 小程序测试版和正式版的区别
  4. 5g的八大关键指标_2019百度沸点十大科技热词出炉,AI、5G、智能家居......实力霸榜!...
  5. C# 定义一个描述学生基本信息的类,属性包括姓名、学以及C#、英语和数学成绩,方法包括设置姓名和学号、设置三门课的成绩和输出相关学生的信息,最后求出总成绩和平均成绩。
  6. 在线客服的回复技巧有哪些,如何提高回复效率
  7. JDK默认GC算法是个谜
  8. 借助金融科技差异化发展,不一样的“破茧”手法
  9. layer.confirm弹窗垂直居中问题
  10. JavaScript的表格注册