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

news2024/11/14 6:12:29

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.coloradmin.cn/o/1946027.html

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

相关文章

谣言检测文献阅读十二—A Convolutional Approach for Misinformation Identification

系列文章目录 谣言检测文献阅读一—A Review on Rumour Prediction and Veracity Assessment in Online Social Network谣言检测文献阅读二—Earlier detection of rumors in online social networks using certainty‑factor‑based convolutional neural networks谣言检测文…

FreeModbus学习——读输入寄存器eMBFuncReadInputRegister

FreeModbus版本:1.6 当功能码为04时,也就是读输入寄存器MB_FUNC_READ_INPUT_REGISTER 看一下它是怎么调用读输入寄存器处理函数的 当功能码为04时,调用读输入寄存器处理函数 这个函数在数组xFuncHandlers中,也就是eMBFuncRead…

Mysql数据库第四次作业

mysql> create table student(sno int primary key auto_increment,sname varchar(30) not null unique,Ssex varchar(2) check (Ssex男 or Ssex女) not null,Sage int not null,Sdept varchar(10) default计算机 not null); mysql> create table Course(Con int primar…

【通信协议-RTCM】MSM语句(2) - RINEXMSM7语句总结(重要!自动化开发计算卫星状态常用)

注释: 在工作中主要负责的是RTCM-MSM7语句相关开发工作,所以主要介绍的就是MSM7语句相关内容 1. 相位校准参考信号 2. MSM1、MSM2、MSM3、MSM4、MSM5、MSM6和MSM7的消息头内容 DATA FIELDDF NUMBERDATA TYPENO. OF BITSNOTES Message Number - 消息编…

1. Docker的介绍和安装 (二)

5 Docker的原理 5.1 Namespace Namespace(命名空间)提供了一个独立的工作环境,Docker使用Namespace来隔离容器,使得每个容器都有自己独立的系统资源(如进程ID、主机名、网络等)。 PID Namespace&#xf…

SBTI科学碳目标认证是什么?SBTI科学碳目标的重要性

SBTI科学碳目标认证,作为企业在应对气候变化和追求可持续发展道路上的重要里程碑,其认证过程严谨而系统。以下是获得SBTI科学碳目标认证的详细步骤: 首先,企业需要在线注册并提交承诺书,郑重承诺在未来24个月内提交科学…

Linux网络-配置IP

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 本来IP配置应该放在Linux安装完成的就要配置的,但是由于那个时候对Linux不怎么熟悉,所以单独列了一个…

每日一题 LeetCode03 无重复字符的最长字串

1.题目描述 给定一个字符串 s ,请你找出其中不含有重复字符的最长字串的长度。 2 思路 可以用两个指针, 滑动窗口的思想来做这道题,即定义两个指针.一个left和一个right 并且用一个set容器,一个length , 一个maxlength来记录, 让right往右走,并且用一个set容器来…

扫雷-C语言

一、前言: 众所周知,扫雷是一款大众类的益智小游戏,它的游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷,踩到一个雷即全盘皆输。 今天,我们的目的就是通过C语言来实现一个简…

Open函数使用 Json与pickle Os模块

一. 文件操作与 open() 函数 Open函数是Python中用于打开文件的内置函数,其基本语法如下: open(file, moder, buffering-1, encodingNone, errorsNone, newlineNone, closefdTrue, openerNone) 各参数说明: file: 要打开的文件…

34_YOLOv5网络详解

1.1 简介 YOLOV5是YOLO(You Only Look Once)系列目标检测模型的一个重要版本,由 Ultralytics 公司的Glenn Jocher开发并维护。YOLO系列以其快速、准确的目标检测能力而闻名,尤其适合实时应用。YOLOV5在保持高效的同时&#xff0c…

El-Table 表格的表头字段切换

最近写了一个小功能,比较有意思,特此博客记录。 提出需求:需要表头字段变化,但是我在官网上的表格相关上查找,没有发现便捷方法。 于是我有两个想法:1.做三个不同的表格。2.做一个表格使用不同的表头字段。…

2024.7.24 远程连接到另一设备(win)上的vrep时无响应(防火墙!)

Windows防火墙禁止了软件的端口的通信,打开即可 如何设置Windows 7 防火墙端口规则

字典集合案例

1.统计字符 统计字符串中每个字符出现的次数 s l like summer very much #去掉空格 s s.replace(" ","") d dict() for i in s:if i in d:d[i] 1else:d[i] 1 for i in d:print(i,d[i]) 2.求不重复的随机数 #导入随机数 import random a int(input(&q…

VMware 上安装 CentOS 7 教程 (包含网络设置)

**建议先看一些我安装VMware的教程,有些网络配置需要做一下 1.打开VMware,创建虚拟机 2.勾选自定义,点击下一步 3.点击下一步 4.勾选“稍后安装操作系统”,点击下一步 5.勾选linux,勾选centos7,点击下一步…

每日Attention学习12——Exterior Contextual-Relation Module

模块出处 [ISBI 22] [link] [code] Duplex Contextual Relation Network for Polyp Segmentation 模块名称 Exterior Contextual-Relation Module (ECRM) 模块作用 内存型特征增强模块 模块结构 模块思想 原文表述:在临床环境中,不同样本之间存在息肉…

Python算法基础:解锁冒泡排序与选择排序的奥秘

在数据处理和算法设计中,排序是一项基础且重要的操作。本文将介绍两种经典的排序算法:冒泡排序(Bubble Sort)和选择排序(Selection Sort)。我们将通过示例代码来演示这两种算法如何对列表进行升序排列。 一…

BGP选路之Local Preference

原理概述 当一台BGP路由器中存在多条去往同一目标网络的BGP路由时,BGP协议会对这些BGP路由的属性进行比较,以确定去往该目标网络的最优BGP路由。BGP首先比较的是路由信息的首选值(PrefVal),如果 PrefVal相同,就会比较本…

python-NLP:2词性标注与命名实体识别

文章目录 词性标注命名实体识别时间命名实体(规则方法)CRF 命名实体识别方法 词性标注 词性是词汇基本的语法属性,通常也称为词类。词性标注是在给定句子中判定每个词的语法范畴,确定其词性并加以标注的过程。例如,表示…

爱回收严选买的二手iPad Air 4已经使用一周啦!

有多少人是跟我一样,手里一旦有点小钱就留不住,只想花出去的? 本24届应届生目前刚开始实习工作,虽然工资低的可怜,但是比起大学时期还是宽裕了不少。 于是发完工资的我就非常想消费!而我最近最想要的就是…