是不是对一堆PR曲线、ROC曲线、AUC、AP傻傻分不清楚?是不是学完就忘忘了又学?希望这篇文章能帮你梳理清楚一坨乱麻。

1、混淆矩阵

每次在重温理解AUC、PR曲线、ROC曲线的时候,第一步就是在纸上画出来这个混淆矩阵,方便后序进阶。

预测/真实 1(Postive) 0(Negative)
1 (Postive) TP(True Postive:真阳) FP (False Postive:假阳)
0 (Negative FN (False Negative:假阴) TN (True Negative:真阴)

2、ROC曲线 & AUC

真阳率:

TPR=TPTP+FN=TPPTPR=\frac{TP}{TP+FN}=\frac{TP}{P}TPR=TP+FNTP​=PTP​
含义:TP除以第一列,即预测为1实际为1的样本在所有真实1类别中的占比。

假阳率:

FPR=FPFP+TN=FPNFPR=\frac{FP}{FP+TN}=\frac{FP}{N}FPR=FP+TNFP​=NFP​
含义:FP除以第二列,即预测为1实际为0的样本在所有真实0类别中的占比。

ROC曲线:

在模型预测的时候,我们输出的预测结果是一堆[0,1]之间的数值,怎么把数值变成二分类?设置一个阈值,大于这个阈值的值分类为1,小于这个阈值的值分类为0。ROC曲线就是我们从[0,1]设置一堆阈值,每个阈值得到一个(TPR,FPR)对,纵轴为TPR,横轴为FPR,把所有的(TPR,FPR)对连起来就得到了ROC曲线。

AUC(area under the curve):
(1)计算方法一

AUC即ROC曲线下的面积。曲线越靠近左上角,意味着TPR>FPR,模型的整体表现也就越好。所以我们可以断言,ROC曲线下的面积越大,模型效果越好。

最坏的情况是,总是有TPR=FPR,如下图,表示对于不论真实类别是1还是0的样本,分类器预测为1的概率是相等的。换句话说,分类器对于正例和负例毫无区分能力。如果AUC小于0.5,那么只要把预测类别取反,便得到了一个AUC大于0.5的分类器。

(2)计算方法二

AUC还有一种解释就是任取一对正负样本,正样本的预测值大于负样本的预测值的概率。
显然可以写出计算AUC伪代码为:
1.统计所有正样本个数P,负样本个数N;
2.遍历所有正负样本对,统计正样本预测值大于负样本预测值的样本总个数number
3.AUC=numberP∗NAUC = \frac{number }{P * N}AUC=P∗Nnumber​
一些计算细节是当正负样本预测值刚好相等时,该样本记为0.5个。
PS: 在实际代码实现过程中其实可以和第一种方法一样进一步优化,可以先对正负样本排序,利用dp的思想迭代计算个数,可以将复杂度从O(N^2)降低为O(NlogN)。
具体参考:https://blog.csdn.net/weixin_43264415/article/details/99072092

3、PR曲线 & AP

Recall召回率(查全率):

Recall=TPTP+FNRecall=\frac{TP}{TP+FN}Recall=TP+FNTP​
含义:TP除以第一列,即预测为1实际为1的样本在所有真实为1类别中的占比。等价于真阳率。

Presession精准率(查准率):

Presession=TPTP+FPPresession=\frac{TP}{TP+FP}Presession=TP+FPTP​
含义:FP除以第一行,即预测为1实际为1的样本在所有预测为1类别中的占比。

PR曲线:

同理ROC曲线。在模型预测的时候,我们输出的预测结果是一堆[0,1]之间的数值,怎么把数值变成二分类?设置一个阈值,大于这个阈值的值分类为1,小于这个阈值的值分类为0。ROC曲线就是我们从[0,1]设置一堆阈值,每个阈值得到一个(Presession,Recall)对,纵轴为Presession,横轴为Recall,把所有的(Presession,Recall)对对连起来就得到了PR曲线。

AP(PR曲线下的面积):

跟TPR和FPR不一样的是,在PR关系中,是一个此消彼长的关系,但往往我们希望二者都是越高越好,所以PR曲线是右上凸效果越好(也有例外,有比如在风险场景当预测为1实际为0时需要赔付时,大致会要求Recall接近100%,可以损失Precision)。所以除了特殊情况,通常情况都会使用Precision-recall曲线,来寻找分类器在Precision与Recall之间的权衡。

AP就是Precision-recall 曲线下面的面积,通常来说一个越好的分类器,AP值越高。
mAP是多个类别AP的平均值。这个mean的意思是对每个类的AP再求平均,得到的就是mAP的值,mAP的大小一定在[0,1]区间,越大越好。该指标是目标检测算法中最重要的一个。

4、ROC曲线、PR曲线优缺点

ROC曲线:
(1)优点

A.兼顾正例和负例的权衡。因为TPR聚焦于正例,FPR聚焦于与负例,使其成为一个比较均衡的评估方法。适用于评估分类器的整体性能。
B.ROC曲线的两个指标, TPR的分母是所有正例,FPR的分母是所有负例,故都不依赖于具体的类别分布。

(2)缺点

在类别不平衡的背景下,当负例N的数量远超正例P时,FP的大幅增长只能换来FPR的增长不明显,导致ROC曲线呈现一个过分乐观的效果估计。
如果主要关心正例的预测准确性的话,这就不太可接受了。

PR曲线:
(1)优点

PR曲线的两个指标都聚焦于正例。类别不平衡问题中由于主要关心正例,所以在此情况下PR曲线被广泛认为优于ROC曲线。

(2)缺点

只关注正例,不关注负例

ROC&PR曲线使用场景

(1)如果想兼顾正例与负例,则选用ROC曲线;如果在类别不平衡中,或者更看重正例的场景中比如推荐信息检索,则选用PR曲线
(2)如果有多份数据且存在不同的类别分布,比如信用卡欺诈问题中每个月正例和负例的比例可能都不相同,这时候如果只想单纯地比较分类器的性能且剔除类别分布改变的影响,则ROC曲线比较适合,因为类别分布改变可能使得PR曲线发生变化时好时坏,这种时候难以进行模型比较;反之,如果想测试不同类别分布下对分类器的性能的影响,则PR曲线比较适合。

【Reference】

周志华西瓜书
https://www.zhihu.com/question/39840928/answer/241440370
https://zhuanlan.zhihu.com/p/34655990
https://blog.csdn.net/weixin_43264415/article/details/99072092

PR曲线、ROC曲线、AUC、AP简单梳理相关推荐

  1. PR,ROC,AUC计算方法

    转载           PR,ROC,AUC计算方法 受试者工作特征曲线 (receiver operating characteristic curve,简称ROC曲线),又称为感受性曲线(sen ...

  2. 关于肺结节检测相关的FROC曲线和目标检测中Precision-Recall曲线,ROC曲线,mAP,AP,APs,APm,APl,AP0.5等的理解。

    ps自己之前也不理解这个FROC是什么鬼,连mAP,AP也不太理解(还有APs,APm,APl,AP0.5等等)后来花了挺长时间的,今天又有人问我FORC是什么,这里我就稍微总结下: 1.Precis ...

  3. 数据分析-分类评价-PR与ROC曲线

    目录 前言 一.PR曲线 1.引入库 2.计算概率值 3.计算不同阈值的precision,recall 4.绘制P-R曲线 二.ROC曲线 1.引入库 2.计算慨率 3.计算不同阈值的fpr,tpr ...

  4. 用matlab画出M1和M2的ROC曲线,ROC曲线及其matlab实现ROC曲线的绘画

    ROC曲线(Receiver Operating Characteristic Curve)是利用Classification模型真正率(True Positive Rate)和假正率(False P ...

  5. cv曲线面积的意义_评价标准专题:常见的TP、TN、FP、FN和PR、ROC曲线到底是什么...

    评价标准 True positives(TP,真正) : 预测为正,实际为正 True negatives(TN,真负):预测为负,实际为负 False positives(FP,假正): 预测为正, ...

  6. 查准率,查全率,PR曲线,ROC 曲线的含义

  7. det曲线_11565 P-R、ROC、DET 曲线及 AP、AUC 指标全解析(上)

    机器学习中,最「简单」的一种任务就是二分类任务了.比如,说话人验证(speaker verification)就是一个二分类任务:判断一句话是否是给定说话人说的.再比如,信息检索(informatio ...

  8. 分类模型性能评价指标:混淆矩阵、F Score、ROC曲线与AUC面积、PR曲线

    以二分类模型为例:二分类模型最终需要判断样本的结果是1还是0,或者说是positive还是negative. 评价分类模型性能的场景: 采集一个称之为测试集的数据集: 测试集的每一个样本由特征数据及其 ...

  9. ROC曲线,AUC,和P-R曲线的关系

    ROC曲线,AUC,和P-R曲线的关系 前言:二值分类器的指标很多,比如precision.recall.F1 score.P-R曲线 等 发现这些指标或多或少只能反映模型在某一方面的性能.相比而言, ...

  10. 机器学习中的性能指标:精度、召回率,PR曲线,ROC曲线和AUC,及示例代码

    机器学习中的性能指标:精度.召回率.PR曲线,ROC曲线和AUC 精度.召回率 基本概念 F-Score 度量曲线 PR曲线 ROC曲线 PR曲线和ROC曲线的比较 AUC 精度.召回率 基本概念 可 ...

最新文章

  1. ASP.Net TextBox只读时不能通过后台赋值取值
  2. ML之SVM:基于sklearn的svm算法实现对支持向量的数据进行标注
  3. SAP HR模块复制PA30的人员
  4. 【小白学PyTorch】5.torchvision预训练模型与数据集全览
  5. JS不同类型之间运算与转换
  6. Spring中Bean的定义继承
  7. Windows10/11安装Linux子系统Ubuntu 20.04LTS,轻松使用生信软件,效率秒杀虚拟机
  8. Mysql学习总结(45)——Mysql视图和事务
  9. 关于小微商户反欺诈监控指标的内容参考
  10. android 广播 event,无法接收android.intent.action.EVENT_REMINDER广播
  11. 字节大牛教你手撕Java学习,Java核心知识点
  12. 自动档汽车正确的操作方法和习惯---请教贴
  13. python turtle_Python:turtle画粽子
  14. 可视化技巧:DataFrame画图并利用matplotlib保存(pandas)
  15. mysql 写出高性能sql 防止索引失效总结
  16. CSAPP第四章家庭作业参考答案
  17. 痛失阵地,又一家热门BT种子观影网站关停
  18. 《图像处理、分析与机器视觉 第四版》数学形态学基本概念——学习笔记
  19. 进阶的阿牛哥之给数据添加趋势线
  20. 百度地图API跨域问题解决

热门文章

  1. 【WiFi】wifi信道
  2. 省一级计算机操作题,江苏省计算机一级操作题大全
  3. 马尔科夫matlab程序,马尔科夫链matlab代码
  4. MPS的DCDC国产代换件
  5. Matlab仿真偶极子天线激励
  6. 怎么样学习Java?
  7. cad统计面积长度插件vlx_cad计算面积插件免费版
  8. 阿里云短信接口方法使用
  9. xp无线网卡开启的服务器,无线网卡在 Windows XP 系统下的安装与使用过程
  10. smb协议讲解_SMB/CIFS协议解析一概述