机器学习中分类模型的常用评价指标

news2025/5/14 15:57:56

评价指标是针对模型性能优劣的一个定量指标。

一种评价指标只能反映模型一部分性能,如果选择的评价指标不合理,那么可能会得出错误的结论,故而应该针对具体的数据、模型选取不同的的评价指标。

本文将详细介绍机器学习分类任务的常用评价指标:混淆矩阵(Confuse Matrix)、准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1 Score、P-R曲线(Precision-Recall Curve)、ROC、AUC

二分类

准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1 Score

混淆矩阵(Confuse Matrix)

针对一个二分类问题,即将实例分成正类(positive)或负类(negative),在实际分类中会出现以下四种情况:
(1)若一个实例是正类,并且被预测为正类,即为真正类TP(True Positive )
(2)若一个实例是正类,但是被预测为负类,即为假负类FN(False Negative )
(3)若一个实例是负类,但是被预测为正类,即为假正类FP(False Positive )
(4)若一个实例是负类,并且被预测为负类,即为真负类TN(True Negative )

将上面说的几种情况列出来,就是一个混淆矩阵:
在这里插入图片描述
当然混淆矩阵也可以推广到多分类:
在这里插入图片描述
通过混淆矩阵可以大致看出预测正确的数量和预测错误的数量。

准确率(Accuracy)

预测正确的样本数量占总量的百分比,具体的公式如下:
A c c u r a c y = T P + T N T P + F N + F P + T N Accuracy=\frac{TP+TN}{TP+FN+FP+TN} Accuracy=TP+FN+FP+TNTP+TN
准确率有一个缺点,就是数据的样本不均衡,这个指标是不能评价模型的性能优劣的。假如一个测试集有正样本99个,负样本1个。模型把所有的样本都预测为正样本,那么模型的Accuracy为99%,看评价指标,模型的效果很好,但实际上模型没有任何预测能力。

精准率(Precision)

又称为查准率,是针对预测结果而言的一个评价指标。在模型预测为正样本的结果中,真正是正样本所占的百分比,具体公式如下:
P r e c i s i o n = T P T P + F P Precision=\frac{TP}{TP+FP} Precision=TP+FPTP

召回率(Recall)

又称为查全率,是针对原始样本而言的一个评价指标。在实际为正样本中,被预测为正样本所占的百分比。具体公式如下:
R e c a l l = T P T P + F N Recall=\frac{TP}{TP+FN} Recall=TP+FNTP

在不同的应用场景下,我们的关注点不同,例如,在预测股票的时候,我们更关心精准率,即我们预测升的那些股票里,真的升了有多少,因为那些我们预测升的股票都是我们投钱的。而在预测病患的场景下,我们更关注召回率,即真的患病的那些人里我们预测错了情况应该越少越好。

F1 Score

精确率和召回率是一对此消彼长的度量。例如在推荐系统中,我们想让推送的内容尽可能用户全都感兴趣,那只能推送我们把握高的内容,这样就漏掉了一些用户感兴趣的内容,召回率就低了;如果想让用户感兴趣的内容都被推送,那只有将所有内容都推送上,宁可错杀一千,不可放过一个,这样准确率就很低了。

所以在实际工程中,我们往往需要结合两个指标的结果,去寻找一个平衡点,使综合性能最大化。这时就会用到F1 Score
1 F 1 = 1 2 ⋅ ( 1 P + 1 R ) \frac{1}{F 1}=\frac{1}{2} \cdot\left(\frac{1}{P}+\frac{1}{R}\right) F11=21(P1+R1)
F 1 = 2 × P × R P + R = 2 × T P 样例总数 + T P − T N F1=\frac{2 \times P \times R}{P+R} = \frac{2 \times TP}{样例总数+TP-TN} F1=P+R2×P×R=样例总数+TPTN2×TP
其中P和R即代表精准率(Precision)和召回率(Recall)

P-R曲线

P-R曲线(Precision Recall Curve)是描述精确率/召回率变化的曲线。绘制P-R曲线时将预测结果按照预测为正类概率值排序,然后将概率阈值由1开始逐渐降低,按此顺序逐个把样本作为正例进行预测,每次可以计算出当前的P,R值;.以P为纵坐标,R为横坐标绘制点,将所有点连成曲线即可得到P-R曲线,如下图所示:

在这里插入图片描述
如果一个机器的P-R曲线被另一个机器的P-R曲线完全包住,则后者的性能优于前者,例如上面的黑色曲线和黄色曲线所代表的机器优于蓝色曲线代表的机器。
PR曲线发生了交叉时:以PR曲线下的面积作为衡量指标,但这个指标通常难以计算,所以一般采用 “平衡点”(Break-Even Point),即查准率=查全率时的取值来判断,值越大代表效果越优。

ROC曲线和AUC

在正式介绍ROC之前,我们还要再介绍两个指标,这两个指标的选择使得ROC可以无视样本的不平衡。这两个指标分别是:灵敏度(sensitivity)和特异度(specificity),也叫做真正率(TPR)和 真负率(TNR),具体公式如下。

  • 真正率(True Positive Rate , TPR),又称灵敏度:
    T P R = 正样本预测正确数 正样本总数 = T P T P + F N TPR = \frac{正样本预测正确数}{正样本总数} = \frac{TP}{TP+FN} TPR=正样本总数正样本预测正确数=TP+FNTP
    其实我们可以发现灵敏度和召回率是一模一样的,只是名字换了而已

  • 假负率(False Negative Rate , FNR) :
    F N R = 正样本预测错误数 正样本总数 = F N T P + F N FNR = \frac{正样本预测错误数}{正样本总数} = \frac{FN}{TP+FN} FNR=正样本总数正样本预测错误数=TP+FNFN

  • 假正率(False Positive Rate , FPR) :
    F P R = 负样本预测错误数 负样本总数 = F P T N + F P FPR = \frac{负样本预测错误数}{负样本总数} = \frac{FP}{TN+FP} FPR=负样本总数负样本预测错误数=TN+FPFP

  • 真负率(True Negative Rate , TNR),又称特异度:
    T N R = 负样本预测正确数 负样本总数 = T N T N + F P TNR = \frac{负样本预测正确数}{负样本总数} = \frac{TN}{TN+FP} TNR=负样本总数负样本预测正确数=TN+FPTN

其中假负率FNR=1−TPR、假正率FPR=1−TNR

ROC

ROC(Receiver Operating Characteristic)曲线,又称接受者操作特征曲线。曲线对应的纵坐标是TPR,横坐标是FPR。如下就是一个ROC曲线:
在这里插入图片描述

与前面的P-R曲线类似,ROC曲线也是通过遍历所有阈值来绘制整条曲线的。如果我们不断的遍历所有阈值,预测的正样本和负样本是在不断变化的,相应的在ROC曲线图中也会沿着曲线滑动。
在这里插入图片描述

那么如何判断一个模型的ROC曲线是好的呢?这个还是要回归到我们的目的:FPR表示模型对于负样本误判的程度,而TPR表示模型对正样本召回的程度。我们所希望的当然是:负样本误判的越少越好,正样本召回的越多越好。所以总结一下就是TPR越高,同时FPR越低(即ROC曲线越陡),那么模型的性能就越好。参考如下动态图进行理解。
在这里插入图片描述

AUC

AUC(Area Under Curve)是处于ROC曲线下方的那部分面积的大小。AUC越大,代表模型的性能越好。

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

多分类问题

对于多分类问题,可以将其分为多个二分类问题,得到多组混淆矩阵。估算全局性能的方法有两种,分为宏平均(macro-average)和微平均(micro-average)。简单理解,宏平均就是先算出每个混淆矩阵的P值和R值,然后取得平均P值 m a c r o − P macro-P macroP和平均R值 m a c r o − R macro-R macroR,再算出F1值等。而微平均则是计算出混淆矩阵的平均TP、FP、TN、FN,接着进行计算P、R,进而求出F1等数据。其它分类指标同理,均可以通过宏平均/微平均计算得出。

macro ⁡ P = 1 n ∑ i = 1 n P i \operatorname{macro}P=\frac{1}{n} \sum_{i=1}^{n} P_{i} macroP=n1i=1nPi
macro ⁡ R = 1 n ∑ i = 1 n R i \operatorname{macro}R=\frac{1}{n} \sum_{i=1}^{n} R_{i} macroR=n1i=1nRi
macro ⁡ F 1 = 2 × macro ⁡ P × macro ⁡ R macro ⁡ P + macro ⁡ R \operatorname{macro} F 1=\frac{2 \times \operatorname{macro} P \times \operatorname{macro} R}{\operatorname{macro} P+\operatorname{macro}R} macroF1=macroP+macroR2×macroP×macroR

micro ⁡ P = T P ‾ T P ‾ + F P ‾ \operatorname{micro} P=\frac{\overline{T P}}{\overline{T P}+\overline{F P}} microP=TP+FPTP
micro ⁡ R = T P ‾ T P ‾ + F N ‾ \operatorname{micro}R=\frac{\overline{T P}}{\overline{T P}+\overline{F N}} microR=TP+FNTP
micro ⁡ F 1 = 2 × micro ⁡ P × micro ⁡ R micro ⁡ P + micro ⁡ R \operatorname{micro} F 1=\frac{2 \times \operatorname{micro} P \times \operatorname{micro} R}{\operatorname{micro} P+\operatorname{micro}R} microF1=microP+microR2×microP×microR

需要注意的是,在多分类任务场景中,如果非要用一个综合考量的metric的话,宏平均会比微平均更好一些,因为宏平均受稀有类别影响更大。宏平均平等对待每一个类别,所以它的值主要受到稀有类别的影响,而微平均平等考虑数据集中的每一个样本,所以它的值受到常见类别的影响比较大。

参考文章:
https://www.cnblogs.com/guoyaohua/p/classification-metrics.html

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

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

相关文章

MySQL的Docker版本,部署在ubantu系统

前言 MySQL的Docker版本,部署在ubantu系统,出现问题: 1.执行一个SQL,只有错误编码,没有错误提示信息,主要影响排查SQL运行问题; 2.这个问题,并不影响实际的MySQL运行,如…

Mac QT水平布局和垂直布局

首先上代码 #include "mainwindow.h" #include "ui_mainwindow.h" #include <QPushButton> #include<QVBoxLayout>//垂直布局 #include<QHBoxLayout>//水平布局头文件 MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), …

回答 | 图形数据库neo4j社区版可以应用小型企业嘛?

刚在知乎上看到了一个提问&#xff0c;挺有意思&#xff0c;于是乎&#xff0c;贴到这里再简聊一二。 转自知乎提问 当然可以&#xff0c;不过成本问题不容小觑。另外还有性能上的考量。 就在最近&#xff0c;米国国家航空航天局——NASA因为人力成本问题&#xff0c;摒弃了使…

Linux操作系统从入门到实战(二)手把手教你安装VMware17pro与CentOS 9 stream,实现Vim配置,并配置C++环境

Linux操作系统从入门到实战&#xff08;二&#xff09;手把手教你安装VMware17pro与CentOS 9.0 stream&#xff0c;实现Vim配置&#xff0c;并编译C文件 前言一、安装VMware17pro二、安装CentOS9.02.1 为什么选择CentOS9&#xff0c;与CentOS7对比2.1 官网下载CentOS9.02.2 国内…

软考架构师考试-UML图总结

考点 选择题 2-4分 案例分析0~1题和面向对象结合考察&#xff0c;前几年固定一题。近3次考试没有出现。但还是有可能考。 UML图概述 1.用例图&#xff1a;描述系统功能需求和用户&#xff08;参与者&#xff09;与系统之间的交互关系&#xff0c;聚焦于“做什么”。 2.类图&…

论文学习_Trex: Learning Execution Semantics from Micro-Traces for Binary Similarity

摘要&#xff1a;检测语义相似的函数在漏洞发现、恶意软件分析及取证等安全领域至关重要&#xff0c;但该任务面临实现差异大、跨架构、多编译优化及混淆等挑战。现有方法多依赖语法特征&#xff0c;难以捕捉函数的执行语义。对此&#xff0c;TREX 提出了一种基于迁移学习的框架…

在VirtualBox中安装虚拟机后不能全屏显示的问题及解决办法

在VirtualBox中安装Windows或Linux虚拟机后&#xff0c;将遇到启动虚拟机后&#xff0c;只能在屏幕中的一块区域里显示虚拟机桌面&#xff0c;却不能全屏显示的问题。要解决此问题&#xff0c;需要在虚拟机中安装与VirtualBox版本相对应的VBox GuestAdditons软件。 这里…

element-ui分页的使用及修改样式

1.安装 npm install element-ui -S 2.在main.js中引入,这里是全部引入&#xff0c;也可以按需引入 import ElementUI from element-ui import element-ui/lib/theme-chalk/index.css Vue.use(ElementUI) 3.使用 layout"prev, pager, next, jumper" &#xff1a;jumpe…

从数据中台到数据飞轮:数字化转型的演进之路

从数据中台到数据飞轮&#xff1a;数字化转型的演进之路 数据中台 数据中台是企业为整合内部和外部数据资源而构建的中介层&#xff0c;实现数据的统一管理、共享和高效利用&#xff0c;目标是打破信息孤岛&#xff0c;提高数据使用效率&#xff0c;支持业务决策和创新 实施成本…

2025年5月-信息系统项目管理师高级-软考高项一般计算题

决策树和期望货币值 加权算法 自制和外购分析 沟通渠道 三点估算PERT 当其他条件一样时&#xff0c;npv越大越好

zst-2001 上午题-历年真题 算法(5个内容)

回溯 算法 - 第1题 找合适的位置&#xff0c;如果没有位置就按B回家 d 分治 算法 - 第2题 b 算法 - 第3题 a 算法 - 第4题 划分一般就是分治 a 算法 - 第5题 分治 a 0-1背包 算法 - 第6题 c 算法 - 第7题 最小的为c 3100 c 算法 - 第8题 …

udp多点通信和心跳包

刷题 # UDP多点通信核心要点## 基础通信模式### 单播通信- 一对一通信方式- UDP默认通信模式- 地址指向具体目标主机### 广播通信- 一对多通信机制- 地址范围&#xff1a;xxx.xxx.xxx.255- 仅限局域网传输- 需设置SO_BROADCAST标志### 组播通信- 多对多群组通信- 地址范围&…

音视频学习:使用NDK编译FFmpeg动态库

1. 环境 1.1 基础配置 NDK 22b (r22b)FFmpeg 4.4Ubuntu 22.04 1.2 下载ffmpeg 官网提供了 .tar.xz 包&#xff0c;可以直接下载解压&#xff1a; wget https://ffmpeg.org/releases/ffmpeg-4.4.tar.xz tar -xvf ffmpeg-4.4.tar.xz cd ffmpeg-4.41.3 安装基础工具链 sudo …

如何使用 Qwen3 实现 Agentic RAG?

今天&#xff0c;我们将学习如何部署由阿里巴巴最新Qwen 3驱动的Agentic RAG。 这里是我们的工具栈&#xff1a; CrewAI用于代理编排。 Firecrawl用于网络搜索。 LightningAI的LitServe用于部署。 顶部的视频展示了这一过程。 图表显示了我们的Agentic RAG流程&#xff1…

相机、雷达标定工具,以及雷达自动标定的思路

本篇我们来看一下自动驾驶传感器配置一个非常重要的模块&#xff0c;也就是传感器的标定。这里主要是对我之前修改的功能包的使用进行一个介绍. 对应的资源也已经上传了&#xff0c;0积分下载 安装 首先整个项目是使用ros1来进行启动的,但是要想正常编译,需要先安装三个对应的…

vsomeip环境搭建保姆级教程

vsomeip环境搭建保姆级教程 ubuntu环境搭建 {% links %} site: VMware搭建ubuntu保姆级教程 url: https://zhuanlan.zhihu.com/p/1903219373906327339 desc: flechazo image: https://q1.qlogo.cn/g?b=qq&nk=2861099&s=5 color: “#9d5b8b” {% endlinks %} vsomei…

我的MCP相关配置记录

1.VSCode的Cline中的MCP {"mcpServers": {"github.com/modelcontextprotocol/servers/tree/main/src/github": {"autoApprove": [],"disabled": false,"timeout": 60,"command": "cmd","args&quo…

我们来学nacos -- 集群nacos2.5.1mysql8.4

2.5.1集群搭建 架构下载解压到3个文件夹初始化数据库&数据迁移检查端口可用配置cluster.confapplication.properties 使用mysql8.4的jar启动db.num is null报错datasource错误成功 nginx反向代理集群查看 架构 其中包含3个nacos节点&#xff0c;然后一个负载均衡器代理3个…

Rollup入门与进阶:为现代Web应用构建超小的打包文件

我们常常面临Webpack复杂配置或是Babel转译后的冗余代码&#xff0c;结果导致最终的包体积居高不下加载速度也变得异常缓慢&#xff0c;而在众多打包工具中Rollup作为一个轻量且高效的选择&#xff0c;正悄然改变着这一切&#xff0c;本文将带你深入了解这个令人惊艳的打包工具…

专题四:综合练习( 找出所有子集的异或总和再求和)

以leetcode1863题为例 题目分析&#xff1a; 找到每个子集&#xff0c;然后子集中的元素异或之后全部相加 算法原理分析&#xff1a; 画决策树&#xff1a;第一层为这个子集有一个元素 第二层这个子集有两个元素 从上往下罗列&#xff0c;把所有子集都罗列出来&#xf…