机器学习分类模型评价指标之ROC 曲线、 ROC 的 AUC 、 ROI 和 KS

news2024/10/7 2:22:40

前文回顾:

  1. 机器学习模型评价指标之混淆矩阵
  2. 机器学习模型评价指标之Accuracy、Precision、Recall、F-Score、P-R Curve、AUC、AP 和 mAP

1. 基本指标

1.1 True Positive Rate(TPR)

T P R = T P T P + F N TPR = \frac{TP}{TP+FN} TPR=TP+FNTP

中文:真正率、灵敏度、召回率、查全率。显然这个就是查准率。

TPR 表示 “实际为正的样本”中,有多少预测是正确的。

TPR 越高越好,越高意味着模型对“正样本”的误判越少。

1.2 False Negative Rate(FNR)

F N R = F N T P + F N FNR = \frac{FN}{TP+FN} FNR=TP+FNFN

中文:假负率。

1.3 False Positive Rate(FPR)

F P R = F P T N + F P FPR = \frac{FP}{TN+FP} FPR=TN+FPFP

中文:假正率

FPR 表示 “实际为负的样本”中,有多少预测是错误的。

FPR 越低越好,越低意味着模型对“负样本”的误判越少。

1.4 True Negative Rate(TNR)

F P R = T N T N + F P FPR = \frac{TN}{TN+FP} FPR=TN+FPTN

中文:真负率、特异度。

灵敏度(真正率)TPR 是正样本的召回率,特异度(真负率)TNR是负样本的召回率,而 假负率 F N R = 1 − T P R FNR = 1−TPR FNR=1TPR、假正率 F P R = 1 − T N R FPR = 1−TNR FPR=1TNR,上述四个量都是针对单一类别的预测结果而言的,所以对整体样本是否均衡并不敏感。举个例子:

假设总样本中,90% 是正样本,10% 是负样本。在这种情况下我们如果使用 Accuracy 进行评价是不科学的,但是用 TPR 和 TNR 却是可以的,因为 TPR 只关注 90% 正样本中有多少是被预测正确的,而与那 10% 负样本毫无关系,同理,FPR 只关注 10% 负样本中有多少是被预测错误的,也与那 90% 正样本毫无关系。这样就避免了样本不平衡的问题。

2. Receiver Operating Characteristic Curve ( ROC 曲线)

中文:接受者操作特性曲线。

问题:前文的评价体系当中,并没有用上所有的可用信息;P 和 R ,都没有考虑 真负(TN)样本的影响。

假设现有模型对“深圳市孕产妇是否参与医疗保健”进行预测,预测的 P 为 98%,R 为100%。请问这个模型效果如何?是否可用?

答:很难说。因为仅通过 P 和 R ,我们不知道 假正(FP)和真负(TN)的样本量有多少,以及占比如何。实际上,2020年,深圳市的孕产妇保健覆盖率已经达到了98.44%。模型只要推测所有的孕妇都参加了医疗保健,就可以达到 98% 的 P,与 100% 的 R。但这个预测,对于我们而言,并没有带来任何的增量信息。

解决方案:同时使用 真正率(True Positive Rate)和假正率(False Positive Rate)两个指标,那么有什么好处?

  1. 可以考虑到整个混淆矩阵的信息。
  2. 不会受样本的不平衡程度的影响

条件概率来重写一下 TPR 和 FPR。假设 Y Y Y 为真实情况, Y ^ \hat{Y} Y^ 为预测情况,则有:

T P R = Prob ⁡ ( Y ^ = 1 ∣ Y = 1 ) TPR=\operatorname{Prob}(\hat{Y}=1 \mid Y=1) TPR=Prob(Y^=1Y=1)

F P R = Prob ⁡ ( Y ^ = 1 ∣ Y = 0 ) FPR=\operatorname{Prob}(\hat{Y}=1 \mid Y=0) FPR=Prob(Y^=1Y=0)

TPR 和 FPR 的条件概率都是基于真实样本的,而且 TPR 只基于正样本,而 FPR 只基于负样本。这就使得 TPR 和 FPR 不会受 样本不平衡(Class Imbalance) 问题(即 负样本比正样本多很多(或者相反))的影响。

 Precision  = Prob ⁡ ( Y = 1 ∣ Y ^ = 1 ) \text { Precision } = \operatorname{Prob}(Y = 1 \mid \hat{Y} = 1)  Precision =Prob(Y=1Y^=1)

而 Precision 的条件概率是基于模型的预测结果,而不是基于真实样本。预测结果中 Y ^ = 1 \hat{Y}=1 Y^=1 混杂了正、负两种样本。

什么是 ROC 曲线?

ROC曲线是由 FPR 与 TPR 构成的曲线。该曲线最早应用于雷达信号检测领域,用于区分信号与噪声。后来人们将其用于评价模型的预测能力。与 P-R 曲线类似,通过设定不同的模型参数,模型的预测结果会对应不同 TPR 与 FPR。将不同的(FPR,TPR)构成的点绘制成曲线,就得到了 ROC 曲线。

优点:

  1. 不受样本类别不平衡问题的影响
  2. 与 P-R 曲线一样,不依赖阈值。如果仅使用ACC、P、R 作为评价指标进行模型对比时,都必须时基于某一个给定阈值的,对于不同的阈值,各模型的指标结果也会有所不同,这样就很难得出一个很置信的结果。

ROC 曲线的 横坐标为假正率(FPR),纵坐标为真正率(TPR)。如下图:

image

怎么生成一个给定模型的 ROC 曲线?

与 P-R 曲线一样,训练好一个模型后,给定不同的阈值生成 每个 阈值下的 假正率(FPR)和 真正率(TPR)。如下图:

image

这里的 横坐标是表示不同阈值,纵坐标表示概率,左边的曲线是正负样本的概率密度函数。该图来自自闭症的研究,Controis 表示正常人,Autism 表示自闭症,其实就是正负样本的两个分布(橙色和紫色)。

灵敏度(TPR)和 FPR 都取决于所选的阈值。如果我们降低自闭症的阈值,就会有更多的自闭症患者检测呈阳性,敏感性也会增加。但这也意味着要抓住更多没有自闭症的人,从而增加误报率。

如何根据 ROC 判断不同模型的性能?

TPR 越高越好,FPR 越低越好。进行模型的性能比较时,与 P-R 曲线类似,若一个模型 A 的 ROC 曲线被另一个模型 B 的 ROC 曲线完全包住,则称B的性能优于A。若A和B的曲线发生了交叉,则谁的曲线下的面积大,谁的性能更优。曲线下的面积叫做 AUC。

image

上图表示,在给定阈值下,不同的模型对于正负样本的分类情况,分类效果越好,那么 TPR 越高, FPR 越低,因此该 点 越靠近 (0,1) 坐标。

为什么样本不平衡问题不影响 ROC 曲线?

上文已经解释了 样本不平衡问题 不影响 TPR 和 FPR,那么也就不会影响 ROC 曲线。

image

碰撞曲线: 在假设测试中,自闭症患者(紫色)和正常人(橙色)的分数分布重叠。

该文章是说明对人进行分类是否有自闭症。下面就是模型输出的 Test Score,橙色分布是 正常人概率密度函数,紫色是 自闭症的概率密度函数。二者是有一定重合的。我们给定一个阈值,大于该阈值的是自闭症患者(positive),小于的是正常人(Negative)。

给定了阈值我们就可以得到 TPR 和 FPR。

然而,问题是,TPR 和 FPR 只有在我们一开始就知道谁患有自闭症谁没有的情况下才有意义。例如,TPR 告诉我们,模型在多大程度上识别出我们已知的自闭症患者。

在现实生活中,我们通常事先不知道病人的真实诊断——这就是需要进行检测是否是自闭症的原因。

image

上面的条表示,总的样本中,模型预测的自闭症占样本总数的百分比。
下面的条表示,模型预测为自闭症的样本中,多少是真的有自闭症(这里是 81%),其实就是 Precision。

image

上图的意思是,实验时候测试集一半的人实际都是自闭症(1 in 2),那么这时候 这些检测为自闭症阳性的人中有 81% 确实有自闭症(TP),19% 的人被误分类为 自闭症(FP)。而当测试机变为 68 个人中有一个自闭症时,模型预测为自闭症阳性的人中有 6% 的人确实有自闭症,那么 94% 的人就被误分类为 自闭症(FP)。下面的条其实就表示 Precision 由 81% 变成了 6%。

3. ROC 的 AUC

ROC 的 AUC 就是它曲线下面的面积。

AUC的值介于0.5到1.0之间。当AUC等于0.5时(连接对角线,它的面积正好是0.5),整个模型等价于一个随机分类器。AUC的面积越大,模型的整体表现越好。

另一种解读

AUC 对所有可能的分类阈值的效果进行综合衡量。首先AUC值是一个概率值,可以理解为随机挑选一个正样本以及一个负样本,分类器判定正样本分值高于负样本分值的概率就是AUC值。简言之,AUC 值越大,当前的分类算法越有可能将正样本分值高于负样本分值,即能够更好的分类。

image
图 . 预测按逻辑回归分数以升序排列。

ROC 的 AUC 的优点

  • AUC是尺度不变的。它衡量的是预测的排名,而不是预测的绝对值。
  • AUC是分类阈值不变的。它衡量模型预测的质量,而不考虑选择什么分类阈值。

ROC 的 AUC 的局限

然而,这两个原因都有需要注意的地方,这可能会限制AUC在某些用例中的作用:

  • 尺度不变性并不总是我们想要的。例如,有时我们确实需要良好 校准(calibrated) 概率输出,而 AUC 不会告诉我们这一点。
  • 分类阈值不变性并不总是理想的。在 false negatives vs. false positives 的代价存在很大差异的情况下,最小化一种分类错误可能至关重要。例如,在进行垃圾邮件检测时,你可能希望优先最小化 false positives (即使这会导致 false negatives 的显著增加)。对于这种类型的优化,AUC 不是一个有用的指标。

4. Return on Investment(ROI)

中文:投资回报率

假设现有模型C对某生产线生产的产品是否故障(如果故障则为P)进行预估:
● 在参数组设定为 i 时,模型的TPR为40%,FPR为2%,(0.4,0.2)和(0,1)间的距离为0.36。
● 在参数组设定为 j 时,模型的TPR为50%,FPR为4%,(0.4,0.2)和(0,1)间的距离为0.25。请问哪组参数的表现更好,应该采用哪组参数?
答:很难说。因为我们不知道FN和FP对于我们而言意味着什么。实际上对于该类的产品故障而言,如果漏检(FN),产品上市则某次故障会给公司带来的损失是5000元;而如果对负样本错检(FP),只需要二次重检查,成本是5元。PS:产品的平均故障率大约在百万分之十二左右。

那么如何综合考虑混沌矩阵中4类样本对应的影响,进而对模型的参数进行选择呢?

在此引入 ROI 的概念来解决这个问题。

投资回报率(ROI)是指通过模型应用成本与收益的比值;形式化而言: R O I = P r o f i t C o s t ROI = \frac {Profit} {Cost} ROI=CostProfit

我们可以通过比较不同参数对应模型的 ROI,来确定最优的参数。以上述的故障率检测为例:

image

根据图9的推演可得,从ROI的视角出发,参数组 i 要优于参数组 j 。

所以说在某些情况下,即使我们预测出1个正样本的代价,是要误测416个负样本,每个月的花费超过300万,我们依旧认为这是一个好模型。

5. Kolmogorov-Smirnov(KS)

KS 曲线是两条线,其横轴是 “阈值”(区间序号,按概率排序的等份),纵轴是 TPR(上面那条)与 FPR(下面那条)的值,值范围[0,1] 。两条曲线之间之间相距最远的地方对应的阈值,就是最能划分模型的阈值。

KS 取的是TPR和FPR差值的最大值,能够找到一个最优的阈值。

image

  • KS值<0.2,一般认为模型没有区分能力。
  • KS值[0.2,0.3],模型具有一定区分能力,勉强可以接受
  • KS值[0.3,0.5],模型具有较强的区分能力。
  • KS值大于0.75,往往表示模型有异常。

KS 曲线表示模型将正负样本区分开的能力,一般应用于金融风控领域。

随着阈值从大逐渐的变小,TPR的提升速度高于FPR的提升速度,直到一个临界阈值threshold,之后TPR提升速度低于FPR,这个临界threshold便是最佳阈值。在前期TPR越快提升,模型效果越好;反之,FPR越快提升,模型效果就越差。

参考

  1. https://www.zhihu.com/question/321998017/answer/2303096310
  2. https://laurenoakdenrayner.com/2018/01/07/the-philosophical-argument-for-using-roc-curves/
  3. https://www.spectrumnews.org/opinion/viewpoint/quest-autism-biomarkers-faces-steep-statistical-challenges/
  4. https://machinelearningmastery.com/roc-curves-and-precision-recall-curves-for-imbalanced-classification/
  5. https://developers.google.com/machine-learning/crash-course/classification/roc-and-auc
  6. https://zhuanlan.zhihu.com/p/36305931
  7. https://www.cnblogs.com/gczr/p/10354646.html

新知识:如何校准概率?

https://machinelearningmastery.com/probability-calibration-for-imbalanced-classification/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/25399.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一天快速掌握Mybaits[一]

一、搭环境 Spring Initializr的搭建 创建完毕后的项目结构 此时application的后缀更名为yml&#xff0c;因为这样&#xff0c;看起来更简洁明了&#xff0c;而作用上&#xff0c;无差别 数据库环境的搭建 新建数据库 执行SQL语句 use mybatis-demo; CREATE TABLE user (id…

珠海航展有图扑 | 数字孪生方案助力智慧航天

2022 年 11 月 8 日~11 月 15 日&#xff0c;在第十四届中国国际航空航天博览会&#xff08;简称中国航展&#xff09;中&#xff0c;图扑先进的数字孪生解决方案&#xff0c;支撑合作伙伴实现人机交互场景。 图扑助力航展数字化 在本届国际航空航天博览会中&#xff0c;图扑…

Word控件Spire.Doc 【图像形状】教程(2) ;在 C#、VB.NET 中从 Word 中提取图像

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

代码演示GC回收

JVM配置 -XX:NewSize5m 初始新生代大小 -XX:MaxNewSize5m 最大新生代大小 -XX:InitialHeapSize10m 初始堆大小 等同于Xms -XX:MaxHeapSize10m 最大堆大小 等同于Xmx -XX:SurvivorRatio8 Eden区占80% -XX:PretenureSizeThreshold10m 大对象阈值 -XX:UseParNewGC 新生代使用ParN…

最新最全面的Spring详解(五)——事务管理

前言 本文为 【Spring】事务管理 相关知识&#xff0c;下边将对Spring框架事务支持模型的优点&#xff0c;Spring框架的事务抽象的理解&#xff08;包含TransactionManager、TransactionDefinition、TransactionStatus&#xff0c;编程式事务管理&#xff08;包含使用 Transact…

(七)笔记.net core学习之反射、加载dll、读取moudle、类、方法、特性

1.反射加载dll、读取moudle、类、方法、特性 &#xff08;1&#xff09;模块信息获取 &#xff08;2&#xff09;方法调用 2.反射创建对象、反射简单工厂配置文件&#xff08;破坏单例&#xff0c;创建泛型&#xff09; &#xff08;1&#xff09;程序的可配置可扩展&#xf…

【MEIF:ℓ1-ℓ0混合分解】

Multimodal Medical Image Fusion Using Hybrid Layer Decomposition With CNN-Based Feature Mapping and Structural Clustering &#xff08;基于CNN的特征映射和结构聚类的混合层分解的多模态医学图像融合&#xff09; 本文提出了一种特征级多模态医学图像融合&#xff0c…

springboot获取不到客户端ip问题排查

一、现象 springboot从2.0.2升级到 2.5.7后线上环境无法通过request.getHeader("x-forwarded-for")获取客户端ip地址&#xff0c;测试环境正常&#xff0c;开发环境也异常 二、结论 springboot 2.5.7版本中CloudPlatform多了Kubernetes platform的类型识别&#x…

SpringCloud整合Nacos最全教程(简介及安装部署整合)

目录 一、Nacos简介 Nacos与eureka的共同点 Nacos与Eureka的区别 二、Nacos安装配置 在windows中的安装教程 1.首先将windows安装版本的zip解压&#xff1a; 2.如果8848端口被占用&#xff0c;可以修改端口 3.进入到bin目录下&#xff0c;在cmd中运行以下命令启动 4.启…

Webpack 5 超详细解读(二)

11.importLoaders 属性 问题&#xff1a; test.css的内容如下&#xff1a; .title {transition: all .5s;user-select: none; }login.css的内容如下&#xff1a; /* 导入test.css */ import ./test.css; .title {color: #12345678; }再次npm run build发现运行之后的test.c…

外汇天眼:想通过外汇交易在几个月内成为亿万富翁吗?你必须知道的七大交易法则

WikiFX 策略 -这里有七个交易规则&#xff0c;将在不同程度上让您受益。 1.交易不是儿戏 这是一项业务&#xff0c;如果没有适当的计划、战略和有效的运营&#xff0c;就不可能取得长期的成功。 2.损失不可避免 由于市场始终存在风险&#xff0c;因此在您的交易中从多头转为…

C++:项目相互依赖调用解决方法两种方法

Bmodel依赖于Amodel&#xff0c;但是Amodel又需要BModel的信息。这样就会导致相互依赖。 方法一&#xff1a;采用静态变量static 链接&#xff1a;C开发中一个解决方案里&#xff0c;两个项目的相互引用&#xff0c;相互依赖的实现方法&#xff08;解决方法&#xff09;_Capri…

P物质肽[DArg1, DTrp5, 7, 9, Leu11]

这种物质P类似物是一种非常有效的小细胞肺癌(SCLC)细胞体外生长的广谱神经肽抑制剂(IC₅₀ 5M)。此外&#xff0c;它在体外有效地抑制信号转导通路&#xff0c;并在体内显著延缓SCLC异种移植物的生长。因此&#xff0c;它可能对SCLC有治疗价值。 编号: 139994中文名称: P物质肽…

数据结构学习笔记(Ⅰ):绪论

课程链接:【旧版】1.0_开篇_数据结构在学什么_哔哩哔哩_bilibili 目录 1 数据结构的基本概念 2 算法 2.1 算法的基本概念 1.算法概念 2.算法的特性 3.好算法特质 2.2 算法的时间复杂度 2.3 算法的空间复杂度 1 数据结构的基本概念 数据&#xff1a;能输入到计算机中并…

Android StudioJNI开发之NDK环境的搭建以及添加JNI支持(图文解释 简单易懂)

有问题可以评论区留言讨论~~~ 一、NDK环境搭建 Android系统的所谓原生开发是在App中调用C/C代码&#xff0c;鉴于这两个语言具有跨平台的特性&#xff0c;如果某项功能使用C/C实现&#xff0c;就很容易在不同平台之间移植。 完整的Android环境包括三个开发工具。分别是JDK SD…

如何缩减layout电路面积?减少晶体管的数量——以全加器为例【VLSI】

如何缩减layout电路面积&#xff1f;减少晶体管的数量——以全加器为例【VLSI】What is Full adder ?全加器的设计方法1. 32T 原始表达式不经过化简的电路图2. 28个晶体管 最基本的静态互补CMOS电路的全加器静态互补CMOS静态互补CMOS的优势与劣势28T 电路图28T的棒状图Stick D…

彻底搞明白概率论:随机事件,样本空间,必然事件,不可能事件

文章目录样本空间样本点随机事件&#xff0c;必然事件&#xff0c;不可能事件参考视频样本空间 随机试验E的一切可能基本结果&#xff08;或实验过程如取法或分配法&#xff09;组成的集合称为E的样本空间&#xff0c;记为S 注意&#xff0c;对于不同的实验&#xff0c;样本空间…

【构建ML驱动的应用程序】第 3 章 :构建您的第一个端到端管道

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

FastDFS安装

fastdfs架构图 准备安装包 libfastcommon-1.0.43.tar.gz fastdfs-6.06.tar.gz fastdfs-nginx-module-1.22.tar.gz 一 、FastDFS--tracker安装 FastDFS安装环境 FastDFS是C语言开发&#xff0c;建议在linux上运行&#xff0c;本教程使用Centos7.4作为安装环境。 安装gcc …

如何使用做一个弹幕效果

效果展示 前置准备 背景图 图片素材 具体步骤 添加一个图片背景 添加一个水平滚动容器 添加一个容器 制作弹幕字体 制作弹幕动画效果 步骤分解 添加一个图片背景 拖拽 图片组件 到 编辑区 选中 图片组件 点击 检查面板 中的 样式 调整 图片组件 的 样式 添加一个水平滚动容…