机器学习--PR曲线, ROC曲线
在机器学习领域,如果把Accuracy作为衡量模型性能好坏的唯一指标,可能会使我们对模型性能产生误解,尤其是当我们模型输出值是一个概率值时,更不适宜只采取Accuracy作为衡量模型性泛化能的指标.这篇博文会为大家介绍两种比较二分决策模型性能的方法PR曲线, ROC曲线
预测概率
对于分类问题我们可以直接预测输入数据的类别,或者我们也可以为测试样本产生一个实值或概率预测,并将这个预测值与一个分类阈值作比较,比如说默认阈值为0.5,那么对于输出概率在[0.0.49]的样本会被预测为负,对于输出概率在 [0.5,1.0]之间的样本会被预测为正.同时我们可以通过更改阈值来调整模型在某个问题上的预测性能.
对于二分类问题,主要有两类错误
- False Negative(假反例):一个正例被错误的预测为反例
- False Positive(假正例):一个反例给错误的预测为正例
利用概率预测结果并设置合适的阈值我们就可以在这两种错误之间取得平衡.具体来说我们先根据这个实值或者是概率预测结果对测试样本进行排序,"最可能"是正例的排在最前边或者说最左边,"最不可能"是正例的排在最后边或者说最右边,通过调整阈值在这个排序数组中的位置将样本分为两个部分,阈值左边被预测为正例,阈值右侧被预测为反例.如果我们希望提高模型的查准率/降低假正率,即提高预测为正例的样本里实际结果也为正例的样本的占比,我们就可以把这个阈值向左移;如果我们希望提高模型的查全率/降低假反例,即提高实际为正例的样本中预测结果也为正例的样本的占比,那么我们就可以把这个阈值向左移.
排序本身的好坏体现了综合考虑学习器在一般情况下泛化性能的好坏.ROC则是从这个角度出发来研究学习器泛化性能的有力工具. --<机器学习> 周志华
ROC曲线
什么是ROC
接收器操做特征曲线,也叫ROC曲线,根据wikipedia的解释:
在信号检测理论中,接收者操作特征曲线(receiver operating characteristic curve,或者叫ROC曲线)是一种坐标图式的分析工具,用于 (1) 选择最佳的信号侦测模型、舍弃次佳的模型。 (2) 在同一模型中设定最佳阈值。
ROC曲线首先是由二战中的电子工程师和雷达工程师发明的,用来侦测战场上的敌军载具(飞机、船舰),也就是信号检测理论。之后很快就被引入了心理学来进行信号的知觉检测。数十年来,ROC分析被用于医学、无线电、生物学、犯罪心理学领域中,而且最近在机器学习(machine learning)和数据挖掘(data mining)领域也得到了很好的发展。
如何理解ROC
在衡量学习器的泛化性能时,根据学习器的预测结果对样本排序,按此顺序逐个把样本作为正例进行输出,每次计算测试样本的真正率TPR,和假正率FPR并把这两项作为ROC的纵轴和横轴.其中真正率衡量实际值为正例的样本中被正确预测为正例的样本的比例,假正率表示实际值为负例的样本中被错误的预测为正例的样本的比例


具体来说,假设有一个逻辑回归分类器,根据它的预测结果对样例排序,我们设初始阈值为最大, 此时所有样本都被预测为反例,没有样本被预测为正例即TP = 0, FP = 0, TPR = 0, FPR = 0; 之后我们不断调小阈值,在这个过程中被正确预测为正例的样本和被错误预测为正例的样本都在不断增多 , 同时被正确预测为反例的样本和被错误预测为反例的样本不断减小.因此TPR和FPR会不断变大.当阈值为最小时,所有样本被预测为正,没有样本被预测为负即FN =0, TN = 0, TPR = 1, FPR = 1; 根据这一系列阈值我们可以得到一系列一一对应的真正率和假正率.

当上图中的ROC曲线接近于(1,0)点,表明模型泛化性能越好,越接近对角线的时候,表明此时模型的预测结果为随机预测结果.
在实际中ROC曲线没有这么光滑,更多的会接近下图的样子,下图中的橙色曲线上每一个点对应于一个阈值下的真正率和假正率(图片来自网络)

优点
ROC在以下几个方面会很有用
- 可以利用ROC曲线对不同模型进行比较,如果一个模型的ROC曲线被另一个模型的曲线完全包住,则可断言后者的性能由于前者
- ROC曲线下方的面积(AUC)可以用来作为评估模型模型性能的指标.如当两个模型的ROC曲线发生交叉,则很难说哪一个模型更好,这时候可以用AUC来作为一个比较合理的判据
问题
尽管ROC用处很大但是如果我们的数据中类别分布非常不均衡的时候,ROC就不再适用了.
下图(a)代表ROC曲线图(b)代表PR曲线,图中的曲线都来为同样的模型在一个非均衡测试集上的预测结果.对于ROC曲线来说越靠近左上方表明模型性能越好,图(a)中的ROC曲线表明模型性能非常好;对于PR曲线来说越靠近右上方说明模型性能越好,但是看图(b)中的曲线,很显然这两个模型都还有很大的提升空间.同时从图(a)中我们可以看出两种算法性能接近,都表现优异,但是图(b)中Algorithm2的性能表现要明显优于Algorithm1.
造成这种情况的原因是我们的测试数据集中的反例数目远远多于正例的数目,假设负样本:正样本=1000:10.在这种情况下,当阈值为最大时,真正率和假正率还是都为0,随着我们不断调小阈值真正率和假正率还是在不断提高, 当阈值最小时真正率和假正率达到最大.因此ROC曲线没有很好地体现出样本类别分布不平衡对模型产生的影响,甚至导致对模型性能有错误的解释.这种情况下PR曲线可以给我们提供更精确的参考.

Precision-Recall (PR)
什么是PR曲线
PR曲线常被用在信息提取领域,同时当我们的数据集中类别分布不均衡时我们可以用PR曲线代替ROC.PR曲线的横轴代表查全率,实际上就是真正率,纵轴代表查准率,表示预测为正例的样本里实际也为正例的样本所占的比例.对于查准率和查全率的理解可以参考我的上一篇博文机器学习--如何理解Accuracy, Precision, Recall, F1 score
如何理解PR曲线
与ROC曲线类似,我们根据学习器的预测结果对样例排序,"最可能"是正例的排在最前边或者说最左边,"最不可能"是正例的排在最后边或者说最右边.按此顺序逐个把样本作为正例进行输出,每次计算测试样本的查准率和查全率并把这两项作为PR曲线的纵轴和横轴.

图片来源于周志华老师的<机器学习>一书.
当PR曲线越靠近右上方时,表明模型性能越好,与ROC曲线类似,在对不同模型进行比较时,若一个模型的PR曲线被另一个模型的PR曲线完全包住则说明后者的性能优于前者.如上图中橘色线代表的模型要优于蓝色线代表的模型,若模型的PR曲线发生了交叉,则无法直接判断哪个模型更好.在周志华老师的机器学习上中提到了可以用平衡点.它是查准率=查全率时的取值,如上图黑色线代表的模型的平衡点要大于橘色线模型代表的平衡点,表明前者优于后者,除此之外更为常用的是F1 score,也就是查准率和查全率的加权平均,F1 = (2*查准率*查全率)/(查准率+查全率)
如何选择
- ROC曲线:如果我们的测试数据集类别分布大致均衡的时候我们可以用ROC曲线
- PR曲线:当数据集类别分布非常不均衡的时候采用PR曲线
reference The Relationship Between Precision-Recall and ROC Curves
How to Use ROC Curves and Precision-Recall Curves for Classification in Python
<机器学习> 周志华
机器学习--PR曲线, ROC曲线的更多相关文章
- PR曲线 ROC曲线的 计算及绘制
在linear model中,我们对各个特征线性组合,得到linear score,然后确定一个threshold,linear score < threshold 判为负类,linear sc ...
- ROC曲线、PR曲线
在论文的结果分析中,ROC和PR曲线是经常用到的两个有力的展示图. 1.ROC曲线 ROC曲线(receiver operating characteristic)是一种对于灵敏度进行描述的功能图像. ...
- ROC曲线 VS PR曲线
python机器学习-乳腺癌细胞挖掘(博主亲自录制视频)https://study.163.com/course/introduction.htm?courseId=1005269003&ut ...
- [机器学习]-分类问题常用评价指标、混淆矩阵及ROC曲线绘制方法
分类问题 分类问题是人工智能领域中最常见的一类问题之一,掌握合适的评价指标,对模型进行恰当的评价,是至关重要的. 同样地,分割问题是像素级别的分类,除了mAcc.mIoU之外,也可以采用分类问题的一些 ...
- 绘制ROC曲线
什么是ROC曲线 ROC曲线是什么意思,书面表述为: "ROC 曲线(接收者操作特征曲线)是一种显示分类模型在所有分类阈值下的效果的图表." 好吧,这很不直观.其实就是一个二维曲线 ...
- 分类问题(四)ROC曲线
ROC曲线 ROC曲线是二元分类器中常用的工具,它的全称是 Receiver Operating Characteristic,接收者操作特征曲线.它与precision/recall 曲线特别相似, ...
- ROC曲线、KS曲线
一.ROC曲线 ROC曲线由混淆矩阵为基础数据生成. 纵坐标:真阳性比率TPR,预测为正占真正为正的比例. 横坐标:假阳性比率FPR,预测为正占真正为负的比例. 除了roc曲线的纵横坐标外,还有一个准 ...
- 精确率与召回率,RoC曲线与PR曲线
在机器学习的算法评估中,尤其是分类算法评估中,我们经常听到精确率(precision)与召回率(recall),RoC曲线与PR曲线这些概念,那这些概念到底有什么用处呢? 首先,我们需要搞清楚几个拗口 ...
- PR曲线,ROC曲线,AUC指标等,Accuracy vs Precision
作为机器学习重要的评价指标,标题中的三个内容,在下面读书笔记里面都有讲: http://www.cnblogs.com/charlesblc/p/6188562.html 但是讲的不细,不太懂.今天又 ...
随机推荐
- 1月加密货币交易所访问量破3亿!NGK生态星空计划、NGK生态所带来双重利好!
据最新数据显示,2021年一月份,加密货币交易所网站的访问量急剧上升.约有3.44亿访问者涌入了加密货币交易所,超过2020年12月的1.96亿访问者总数,创2018年1月以来新高. 加密货币交易所网 ...
- USDN稳定币应用区块链旅游业
比特币是区块链1.0时代的标志性产品,稳定币则是区块链2.0时代的标志性产品.在稳定币鼻祖USDT爆出"超发"新闻后曾引发市场的动荡,之后新兴稳定币如春笋般涌现.据不完全同济,目前 ...
- np.mean(img, axis=(0, 1))
np.mean(img, axis=(0, 1)) img 是shape为(H,W,3)的图片 np.mean(img, axis=(0, 1)) 是求出各个通道的平均值,shape是 (3, ) ...
- MySQL的简单使用方法备忘
这只是一篇我的个人备忘录,写的是我常用的命令.具体可以参考"菜鸟教程" https://www.runoob.com/mysql/mysql-tutorial.html 登录(用户 ...
- 最佳搭档:利用 SSH 及其配置文件节省你的生命
本文转载自最佳搭档:利用 SSH 及其配置文件节省你的生命 导语 SSH 协议是事实上的互联网基石之一.在 SSH 协议出现之前(1995 年由 Tatu Ylonen 设计),通过互联网远程登录其他 ...
- [信号与系统]傅里叶变换、DFT、FFT分析与理解
目录 一.前言 二.傅里叶变换 1.傅里叶级数 2.傅里叶级数系数求解 2.1.求解方法 2.2.三角函数的正交性 2.3.系数求解过程 2.4.关于傅里叶级数的个人感悟 3.引入复指数 4.总结 三 ...
- 微信小程序优化:实现picker组件中input输入框禁止输入,而只能通过picker组件选择日期
原来的代码如下: <view class="right"> <picker mode="date" value="{{mat ...
- 解决异常: Execution default-cli of goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.7:generate failed: Cannot instantiate object of type tk.mybatis.mapper.generator.MapperPlugin -> [Help 1]
mybatis-generator整合通用mapper使用generator插件生成model.mapper时报错: 产生以下错误:↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 解决办法: ...
- Java常用类:Arrays类
一.简介 全类名:java.util.Arrays 描述: 此类包含用来操作数组(比如排序和搜索)的各种方法. 此类还包含一个允许将数组作为列表来查看的静态工厂. 注意: 除非特别注明,否则如果指定数 ...
- SpringCloud(四):服务注册中心Eureka Eureka高可用集群搭建 Eureka自我保护机制
第四章:服务注册中心 Eureka 4-1. Eureka 注册中心高可用集群概述在微服务架构的这种分布式系统中,我们要充分考虑各个微服务组件的高可用性 问题,不能有单点故障,由于注册中心 eurek ...