CV13_混淆矩阵、F1分数和ROC曲线

1.1 混淆矩阵Confusion Matrix

混淆矩阵(Confusion Matrix)是机器学习和统计学中用于描述监督学习算法性能的特定表格布局。它是一种特定类型的误差矩阵,可以非常直观地表示分类模型在测试数据集上的预测结果与实际结果之间的对比。

混淆矩阵通常用于二分类问题,但也可以扩展到多分类问题。

从混淆矩阵中可以计算出多个性能指标,包括但不限于:

  • 准确率(Accuracy) = (TP + TN) / (TP + TN + FP + FN) : 分类器正确分类的总实例数占总实例数的比例。
  • 精确率(Precision) = TP / (TP + FP) :在分类器预测为正类别的所有实例中,实际为正类别的比例。
  • 召回率(Recall/Sensitivity/True Positive Rate) = TP / (TP + FN) : 在所有实际为正类别的实例中,分类器正确识别的比例。
  • 特异度(Specificity/True Negative Rate) = TN / (TN + FP) : 在所有实际为负类别的实例中,分类器正确识别的比例。
  • F1分数 = 2 * (Precision * Recall) / (Precision + Recall) : 精确率和召回率的调和平均数,适用于不平衡数据集。
  • 误报率(False Positive Rate) = FP / (FP + TN) : 在所有实际为负类别的实例中,被错误分类为正类别的比例。

从混淆矩阵中,我们可以计算出各种评估指标,如准确率、精确率、召回率、F1分数等,这些指标帮助我们全面了解分类器的性能。例如:

  • 准确率(Accuracy)= (TP + TN) / (TP + TN + FP + FN)
  • 精确率(Precision)= TP / (TP + FP)
  • 召回率(Recall)= TP / (TP + FN)

1.2 F1分数

F1分数(F1 Score)是机器学习和信息检索领域中一个常用的评估指标,用于衡量分类器或检索系统的性能。它是精确率(Precision)和召回率(Recall)的调和平均数,特别适用于数据集不平衡或者错误类型成本不均等的情况。F1分数的公式如下:

其中,

  • 精确率(Precision) 是分类器预测为正类别的实例中,实际上确实为正类别的比例。
  • 召回率(Recall) 是所有实际为正类别的实例中,分类器正确识别为正类别的比例。

F1分数的范围是从0到1,其中1表示最优的性能,而0表示最差的性能。

F1分数的作用

  1. 平衡精确率和召回率:F1分数同时考虑了精确率和召回率,因此它提供了一个平衡这两者的方法。在某些情况下,仅优化其中一个指标可能不是最佳策略,因为这可能导致另一个指标的下降。

  2. 应对数据不平衡:当数据集中正例和负例的数量相差很大时,仅使用准确率作为评估指标可能会产生误导。在这种情况下,F1分数可以帮助我们更好地理解模型在少数类上的表现。

  3. 错误成本不等:在某些应用场景中,误报(假正例)和漏报(假负例)的成本可能不同。F1分数通过同时考虑精确率和召回率,帮助我们评估模型在这些不同成本下的综合性能。

  4. 比较模型:F1分数可以用于比较不同模型在相同数据集上的性能,特别是在那些分类任务中,模型的精确率和召回率可能有显著差异。

  5. 阈值调整:在使用概率输出的模型中,通过调整决策阈值,F1分数可以帮助找到精确率和召回率的最佳平衡点。

总之,F1分数是一个综合性的评估指标,尤其适合于那些分类错误具有不对称成本的场景,或者数据集严重不平衡的情况。通过优化F1分数,可以实现模型性能在不同评估标准间的有效折衷。

1.3 ROC曲线

ROC曲线(Receiver Operating Characteristic curve),即接收者操作特性曲线,是评估二分类模型性能的一种常用图形表示方法。

定义

ROC曲线是一种图表,它以假正例率(False Positive Rate, FPR)为横轴,真正例率(True Positive Rate, TPR)为纵轴,展示了所有可能的分类决策阈值下模型的性能。FPR定义为所有实际为负类的实例中被错误地预测为正类的比例,而TPR定义为所有实际为正类的实例中被正确预测为正类的比例。

构造

  • ROC曲线通过改变分类器的决策阈值来绘制。对于概率输出的分类器,不同的阈值会导致不同的预测结果,从而影响FPR和TPR的值。
  • 曲线从左下角(0,0)开始,向右上角(1,1)移动。理想情况下,曲线应尽可能地靠近左上角,表明模型有高TPR和低FPR。

解读

  • 完美分类器:如果ROC曲线完全贴合左侧和顶部边界,然后直接到达右上角,那么这是一个完美的分类器,因为它在任何阈值下都能达到100%的TPR和0%的FPR。
  • 随机分类器:一条从左下角到右上角的对角线代表随机猜测的结果。如果模型的ROC曲线与这条对角线重合,那么模型的性能与随机猜测无异。
  • AUC(Area Under the Curve):这是ROC曲线下方的面积,其值范围从0到1。AUC越大,模型的性能越好。AUC等于1意味着完美分类,而0.5则意味着模型的性能与随机猜测相当。

用途

  • 模型比较:可以使用ROC曲线来比较不同模型的性能,特别是在面对数据集不平衡时,ROC曲线比准确率更具洞察力。
  • 阈值选择:通过观察ROC曲线,可以确定一个合适的决策阈值,以达到特定的性能需求,如最大化TPR同时保持较低的FPR。
  • 诊断模型性能:ROC曲线可以帮助识别模型是否偏向于某一类预测,从而揭示潜在的偏差或过拟合问题。

局限性

尽管ROC曲线在许多情况下都是一个强大的评估工具,但它也有局限性:

  • 对正负样本比率敏感:在极端不平衡的数据集中,即使模型在正样本上的表现很好,ROC曲线也可能因大量负样本而显得平缓。
  • 没有直接反映成本:ROC曲线不直接反映不同错误类型的成本,这在某些应用中可能是一个重要考虑因素。

总结

ROC曲线是一种可视化工具,用于评估和比较二分类模型的性能,特别是在处理不平衡数据集时。它通过展示不同决策阈值下模型的TPR和FPR,帮助我们理解模型的综合分类能力,并作出基于性能的决策。

举个简单的例子:我们用一个能够分类图片是否为汉堡的二分类器,分类器会计算得到某张图片是否为汉堡的概率,进而对类别进行预测。如果我们用概率表示横坐标,真实类别表示纵坐标,那么分类器在测试集上的效果就可以用散点图来表示:

那么怎么样通过概率得到预测的类别呢?通常我们会设定一个阈值,以0.5为例。当概率大于0.5时分类器认为是汉堡,当小于0.5时认为不是汉堡。这样我们就得到了一个混淆矩阵。

实际上,设定不同的阈值能到不同的混淆矩阵。

那么我们有没有一种方法能把所有的混淆矩阵表示在同一个二维空间中呢?ROC曲线就可以做到。

对于多分类问题怎么计算AUC值呢?其实它与F1值一样,求得宏观的AUC和微观的AUC。

对于宏观AUC来说对于每一个类别我们都可以画一个ROC曲线,求出对应的AUC值,最后对所有的AUC值求某种平均作为整个模型所有类别的宏观AUC。

对于微观AUC,假设我们概率预测结果如下表所示。每一行表示一个样本在预测成各个类别的概率,例如第一行表示样本1预测称C1类的概率为P(1,1),预测成C2类的概率为P(1,2).橙色方块表示该样本所属的真实类别,例如样本1真是类别为C1,样本2真是类别为C3,每行所有的概率和为1,至此我们可以得到一个经过转化的预测结果。

根据这个表我们得到一个新的针对整个模型的ROC曲线,以及它对应的AUC值。

1.4 ROC曲线与PR曲线的关系

ROC曲线(Receiver Operating Characteristic curve)和PR曲线(Precision-Recall curve)都是评估二分类模型性能的图形表示,但它们关注的焦点和应用场景有所不同。

ROC曲线

ROC曲线是以假正例率(False Positive Rate, FPR)为横轴,真正例率(True Positive Rate, TPR)为纵轴绘制的曲线。FPR是负例中被错误分类为正例的比例,而TPR是正例中被正确分类为正例的比例。ROC曲线展示了在不同分类阈值下模型的敏感性和特异性之间的权衡。

  • 优点:ROC曲线适用于正负样本比例变化较大的情况,因为它不依赖于样本的具体比例。
  • 缺点:当正例远少于负例时,ROC曲线可能无法很好地反映模型在正例上的表现。

PR曲线

PR曲线是以精确率(Precision)为纵轴,召回率(Recall)为横轴绘制的曲线。精确率是被预测为正例的样本中实际为正例的比例,而召回率是所有实际正例中被正确预测为正例的比例。

  • 优点:PR曲线更适合于正例样本非常稀少的情况,因为它直接关注模型在少数正例上的表现。
  • 缺点:PR曲线受到正负样本比例的影响较大,如果正例和负例的比例变化,PR曲线可能会发生较大的变化。

关系

ROC曲线和PR曲线都反映了模型在不同决策阈值下的性能,但它们强调的方面不同。ROC曲线更注重整体的分类性能,尤其是对于正例和负例比例不确定或变化的情况;而PR曲线更关注于模型对正例的检测能力,尤其是在正例数量很少的场景中。

在正负样本比例严重不平衡的场景下,PR曲线往往比ROC曲线更有用,因为它能更准确地反映出模型在正例上的性能。此外,AUC(Area Under the Curve)在两种曲线中都有定义,但AUC-PR通常被认为比AUC-ROC更能反映模型在不平衡数据集上的性能。

总的来说,ROC曲线和PR曲线提供了互补的信息,根据具体的应用场景和数据分布特点,选择适当的曲线进行模型性能评估是非常重要的。

1.5 ROC与PR曲线的使用场景

ROC曲线(Receiver Operating Characteristic curve)和PR曲线(Precision-Recall curve)的选择取决于你的具体应用场景和关注点。以下是使用这两种曲线的一些指导原则:

使用ROC曲线的情况:

  1. 当关注点在于综合考虑真阳性率和假阳性率:ROC曲线通过展示不同阈值下的真阳性率(TPR)和假阳性率(FPR),帮助评估模型在不同决策阈值下的性能。如果你关心的是模型的整体性能,并且想了解模型在控制误报方面的表现,那么ROC曲线是个好选择。

  2. 当样本类别均衡或接近均衡:ROC曲线适用于正类和负类样本数量大致相等或相差不大的情况。在这种情况下,ROC曲线可以提供一个较为全面的模型性能视图。

  3. 当决策成本未知或对两类错误同等重视:如果不清楚误报和漏报的成本,或者两者被视为同等重要,ROC曲线可以帮助平衡这两者之间的关系。

使用PR曲线的情况:

  1. 当关注点在于正例的精确度和召回率:PR曲线通过展示不同阈值下的精确率(Precision)和召回率(Recall),特别关注模型在识别正例时的准确性以及找到所有正例的能力。如果你的主要目标是在确保高精确度的同时尽可能多地找到正例,那么PR曲线更为合适。

  2. 当正例样本极为稀少:在正例数量远远少于负例的情况下,PR曲线能够更好地反映模型在稀有事件检测中的性能。此时,ROC曲线可能不能充分揭示模型在正例上的表现,因为即使模型完全忽略了所有的正例,只要它能正确地分类大部分的负例,ROC曲线也可能显示较高的AUC值。

  3. 当决策成本倾向于避免漏报:如果在你的应用中,漏报的代价远高于误报,那么优化召回率就变得非常重要,此时PR曲线能更好地帮助你评估模型的表现。

总之,如果你的数据集是平衡的或者你想要一个总体的性能指标,使用ROC曲线。如果你的数据集是不平衡的,特别是正例非常少,或者你对模型的精确度和召回率特别感兴趣,那么PR曲线会更加适合。在实践中,你可能会同时查看这两种曲线,以便从不同的角度理解模型的性能。

当正负样本数量差距极大时,ROC曲线不敏感,所以要用PR曲线。但同时也揭示了ROC的一个优点,当样本数量变化时,ROC具有稳定性。

如果数据正负样本极度不平衡,如下图所示,分类器表现极差,但从ROC曲线上并看不出来很差,而在PR曲线上就能看出来模型的好坏。

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

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

相关文章

【数据结构】初识集合框架

🎇🎉🎉🎉点进来你就是我的人了 博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 人生格言: 当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友…

Python爬虫(6) --深层爬取

深层爬取 在前面几篇的内容中,我们都是爬取网页表面的信息,这次我们通过表层内容,深度爬取内部数据。 接着按照之前的步骤,我们先访问表层页面: 指定url发送请求获取你想要的数据数据解析 我们试着将以下豆瓣读书页…

河南萌新联赛2024第(二)场:南阳理工学院

A 国际旅行Ⅰ D A*BBBB F 水灵灵的小学弟 H 狼狼的备忘录 I 重生之zbk要拿回属于他的一切 J 这是签到 ##A 国际旅行Ⅰ 链接:https://ac.nowcoder.com/acm/contest/87255/A 来源:牛客网 题目描述 很久很久以前,有 n n n 个国家,第…

字符的统计——423、657、551、696、467、535

423. 从英文中重建数字 最初思路 首先要有一个指针,对于3/4/5为一组地跳跃。起初想的是后瞻性,如果符合0-9任意,则更换index、跳跃。此时写了一个函数,用来判断s的截取段和0-9中有无符合。这个思路并没有进行下去,虽然…

昇思25天学习打卡营第九天|本地安装mindspore之一|Linux的系统在vmware上的安装以及mindspore的安装

课程已经学完了,打算再深入一些。初步的想法是,在本地安装,本地执行。 根据老师的指引,MindSpore官网,“https ://www.mindspore.cn/install/”,注意,因为csdn博客编辑器的原因,当我…

软考:软件设计师 — 6.信息安全

六. 信息安全 1. 加密技术与认证技术 (1)对称与非对称加密 关于对称与非对称加密算法的详细内容,可以参考文章:信息安全基础技术与原理 对称加密 对称加密也称为共享密钥加密。 对称加密中,加密和解密的密钥是同一…

【豆包Marscode体验官】揭秘MarsCode AI编辑助手:高效智能编辑新纪元之入门指导与最佳实践

文章目录 1. 概述2. 工具使用过程2.1 MarsCode插件简介2.2 安装和配置2.2.1 安装MarsCode插件2.2.2 配置MarsCode插件 2.3 各个功能的使用2.3.1 代码补全2.3.2 代码补全 Pro【操作提示,No suggestion from Model,不知道是不是版本的问题】2.3.3 代码生成…

从零开始构建你的第一个Python Web应用

在本文中,我们将带领你从零开始构建一个简单的Python Web应用。不需要任何先验知识,我们会一步步地指导你完成设置、框架选择、代码编写到部署的整个过程。无论你是Web开发新手还是希望扩展技能的老手,这篇文章都将为你提供一个实践操作的起点…

C语言 | Leetcode C语言题解之第278题第一个错误的版本

题目&#xff1a; 题解&#xff1a; int firstBadVersion(int n) {int left 1, right n;while (left < right) { // 循环直至区间左右端点相同int mid left (right - left) / 2; // 防止计算时溢出if (isBadVersion(mid)) {right mid; // 答案在区间 [left, mid] 中…

abc363+cf960div.2+牛客周赛49轮

C - Avoid K Palindrome 2 (atcoder.jp) 思路&#xff1a; 罗列出排列的每一种情况&#xff0c;再根据题目要求进行判断 代码&#xff1a; void solve() {ll n, k;cin >> n >> k;string s;vector<char>a;cin >> s;for (int i 0; i < n; i)a.pus…

C++与lua联合编程

C与lua联合编程 一、环境配置二、lua基本语法1.第一个lua和C程序2.基本数据类型和变量2.1 Nil2.2 Booleans2.3 Numbers2.4 String(最常用) 3. 字符串处理3.1 错误处理3.2 字符串长度:string.len3.3 字符串子串 :string.sub3.4 字符串查找: string.find3.5字符串替换: string.gs…

sortablejs使用filter属性后,元素的默认事件失效了

在使用vue-draggable-plus或者sortablejs时。为了防止某个元素可以拖拽&#xff0c;一般会加上filter属性 但是加上后&#xff0c;会发现这个元素不能点击了&#xff0c;像我这里的滑块也不能滑动了。 查了很久才发现&#xff0c;还有一个属性是 preventOnFilter: true, // 在触…

安宝特方案|解放双手,解决死角,AR带来质量监督新体验

AR质量监督 解放双手&#xff0c;解决死角 在当今制造业快速发展的背景下&#xff0c;质量监督成为确保产品高质量和完善的管理制度的关键环节。然而&#xff0c;传统的质量监督方式存在诸多挑战&#xff0c;如人工操作带来的效率低下、查岗不及时、摄像头死角等问题。 为了解…

浅谈C语言整型类数据在内存中的存储

1、整型类数据 C语言中的整型类数据都归类在整型家族中&#xff0c;其中包括&#xff1a;char、short、int、long、long long这5个大类&#xff0c;而每个大类中又分为两类signed和unsigned,这些都是C语言中的内置类型。以下重点基于char和int这两种类型的数据进行阐述&#x…

C++学习笔记-C++11中的智能指针

1.智能指针介绍 智能指针是C的特性用法&#xff0c;是一个类似指针功能的类对象&#xff0c;其目的是为了更好的管理动态分配的内存&#xff0c;避免出现内存泄漏、悬空指针等问题。C11的标准库里提供了三种智能指针模板类&#xff0c;分别是std::unique_ptr、std::shared_ptr…

苹果笔记本电脑如何优化系统 苹果电脑系统优化软件哪个好 cleanmymac x怎么用

随着时间的推移&#xff0c;你可能会发现你的MacBook运行速度变慢&#xff0c;甚至在执行一些基本任务时也会感觉到卡顿。这不仅影响了工作效率&#xff0c;也大大降低了使用体验。但别担心&#xff0c;优化你的Mac系统比做早餐还简单。本文将用一种轻松的风格向你介绍7种简单易…

函数的介绍

目录 一、函数介绍 1、函数的介绍 2、自定义函数 3、函数的好处 二、函数的定义 1、函数的定义 2、函数的调用 3、快速入门案例 三、函数-调用机制 1、函数-调用过程 2、return语句 一、函数介绍 1、函数的介绍 1&#xff09;为了完成某一功能的程序指令(语句)的集…

【Postgres实战】Postgres的角色权限本地/在线不一致?

背景 Gin-Vue-Admin是开源的全栈开发平台&#xff0c;可以担任企业内部后台管理的职责。官网地址是&#xff1a;gin-vue-admin | GVA 文档站。上图为在线demo展示页面。 它的后台使用Golang&#xff08;The Go Programming Language (google.cn)&#xff09;&#xff0c;基于…

JSON 文件第一段飘红

问题 原因 这个问题通常发生在尝试用 ESLint 去解析 JSON 文件时。ESLint 主要设计用于检查 JavaScript 代码的语法和风格&#xff0c;而JSON是一种数据交换格式&#xff0c;不包含 JavaScript 的逻辑结构&#xff0c;如函数、变量声明等。 解释报错原因 当ESLint遇到它不能识…

让 AI 开发更高效、低成本,DigitalOcean 公布 GPU Droplet 云主机产品

全球知名云服务供应商 DigitalOcean 在近期举行的 Deploy 大会上公布了全新的 GPU Droplet 云主机服务&#xff0c;这标志着DigitalOcean 在支持AI和机器学习工作负载方面迈出了重要一步。 DigitalOcean 的 GPU Droplet&#xff08;云主机&#xff09; DigitalOcean 自 2023 …