在机器学习领域,如果把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在以下几个方面会很有用

  1. 可以利用ROC曲线对不同模型进行比较,如果一个模型的ROC曲线被另一个模型的曲线完全包住,则可断言后者的性能由于前者
  2. 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曲线的更多相关文章

  1. PR曲线 ROC曲线的 计算及绘制

    在linear model中,我们对各个特征线性组合,得到linear score,然后确定一个threshold,linear score < threshold 判为负类,linear sc ...

  2. ROC曲线、PR曲线

    在论文的结果分析中,ROC和PR曲线是经常用到的两个有力的展示图. 1.ROC曲线 ROC曲线(receiver operating characteristic)是一种对于灵敏度进行描述的功能图像. ...

  3. ROC曲线 VS PR曲线

    python机器学习-乳腺癌细胞挖掘(博主亲自录制视频)https://study.163.com/course/introduction.htm?courseId=1005269003&ut ...

  4. [机器学习]-分类问题常用评价指标、混淆矩阵及ROC曲线绘制方法

    分类问题 分类问题是人工智能领域中最常见的一类问题之一,掌握合适的评价指标,对模型进行恰当的评价,是至关重要的. 同样地,分割问题是像素级别的分类,除了mAcc.mIoU之外,也可以采用分类问题的一些 ...

  5. 绘制ROC曲线

    什么是ROC曲线 ROC曲线是什么意思,书面表述为: "ROC 曲线(接收者操作特征曲线)是一种显示分类模型在所有分类阈值下的效果的图表." 好吧,这很不直观.其实就是一个二维曲线 ...

  6. 分类问题(四)ROC曲线

    ROC曲线 ROC曲线是二元分类器中常用的工具,它的全称是 Receiver Operating Characteristic,接收者操作特征曲线.它与precision/recall 曲线特别相似, ...

  7. ROC曲线、KS曲线

    一.ROC曲线 ROC曲线由混淆矩阵为基础数据生成. 纵坐标:真阳性比率TPR,预测为正占真正为正的比例. 横坐标:假阳性比率FPR,预测为正占真正为负的比例. 除了roc曲线的纵横坐标外,还有一个准 ...

  8. 精确率与召回率,RoC曲线与PR曲线

    在机器学习的算法评估中,尤其是分类算法评估中,我们经常听到精确率(precision)与召回率(recall),RoC曲线与PR曲线这些概念,那这些概念到底有什么用处呢? 首先,我们需要搞清楚几个拗口 ...

  9. PR曲线,ROC曲线,AUC指标等,Accuracy vs Precision

    作为机器学习重要的评价指标,标题中的三个内容,在下面读书笔记里面都有讲: http://www.cnblogs.com/charlesblc/p/6188562.html 但是讲的不细,不太懂.今天又 ...

随机推荐

  1. DeFi里的灰度?每月获得高收益?BGV代币初探

    2020年已经接近了尾声,但是DeFi市场的热闹场面并没有停止,或者说,一直在延续.资本市场不断将大批的资金投入到DeFi市场中,以求在这波热潮中赚得一波又一波红利. 美国时间12月21日,Bacca ...

  2. LoveWord

    个人喜欢的句子汇总! 我告诉你我喜欢你,并不是一定要和你在一起,只是希望今后的你,在遭遇人生低谷的时候,不要灰心,至少曾经有人被你的魅力所吸引,曾经是,以后也会是----村上村树

  3. postman功能介绍

  4. 系统错误,MSVCP100D.dll找不到或丢失!

    文章首发 | 公众号:lunvey 今日研究c++,找了一些示例程序,发现无法打开.弹出如下的报错提示: 作为新时代人类,遇见问题第一件事情就是问度娘.然而眼花缭乱的检索数据,大家众说纷纭,不知道如何 ...

  5. 【HTB靶场系列】靶机Carrier的渗透测试

    出品|MS08067实验室(www.ms08067.com) 本文作者:大方子(Ms08067实验室核心成员) Hack The Box是一个CTF挑战靶机平台,在线渗透测试平台.它能帮助你提升渗透测 ...

  6. 微信小程序:app.json中通过使用扩展库userExtendedLib的方式,引入并使用weui

    微信小程序  PK  APP: 1.微信有海量⽤⼾,⽽且粘性很⾼,在微信⾥开发产品更容易触达⽤⼾:而推⼴app的成本太⾼. 2.微信小程序也可以跨平台(Android和IOS). 一.project. ...

  7. 读懂框架设计的灵魂—Java反射机制

    尽人事,听天命.博主东南大学硕士在读,热爱健身和篮球,乐于分享技术相关的所见所得,关注公众号 @ 飞天小牛肉,第一时间获取文章更新,成长的路上我们一起进步 本文已收录于 CS-Wiki(Gitee 官 ...

  8. 后端程序员之路 45、nginx CORS 跨域

    在提供api给其它应用使用时,有时我们会要限制它的跨域使用,而有时,我们又要用CORS来打破AJAX只能同源使用的限制 跨域资源共享 CORS 详解 - 阮一峰的网络日志http://www.ruan ...

  9. react入个门

    起步 react 特点 不使用模板 不是一个mvc框架 响应式 轻量级的js库 原理 虚拟dom 将dom抽象成js对象 diff算法 搭建开发环境 react.js 核心文件 react-dom.j ...

  10. vue核心---虚拟dom的实现

    生成dom的过程 由vue模板生成虚拟dom 虚拟dom转换成真实dom渲染到html页面 代码实现 要实现的真实dom <div id="box"> <p cl ...