回归、分类模型的评估指标
1. 分类模型的评估指标
评估机器学习模型的好坏至关重要,它帮助我们判断模型的性能、稳定性以及在实际问题中的应用效果。不同类型的机器学习任务(分类、回归、聚类等)有不同的评估指标。以下是详细介绍常见的模型评估指标,尤其针对分类和回归任务。
1. 分类模型的评估指标
分类模型的目标是将输入数据分配到某个离散的类别中,常见的分类模型包括逻辑回归、决策树、支持向量机等。常用的分类模型评估指标如下:
1.0 混淆矩阵
定义:混淆矩阵是一种表格,用于展示分类模型在各个类别上的正确预测和误分类的数量情况。它能够详细描述分类器的表现,尤其在多分类任务中。
| 预测正类 | 预测负类 | |
|---|---|---|
| 实际正类 (Positive) | TP | FN |
| 实际负类 (Negative) | FP | TN |
通过混淆矩阵可以计算出模型的精确率、召回率、F1 分数等指标。
1.1 准确率(Accuracy)
定义:准确率是分类正确的样本数占总样本数的比例。
Accuracy = TP + TN TP + TN + FP + FN \text{Accuracy} = \frac{\text{TP} + \text{TN}}{\text{TP} + \text{TN} + \text{FP} + \text{FN}} Accuracy=TP+TN+FP+FNTP+TN
其中:
- TP(True Positive):正确分类为正类的样本数。
- TN(True Negative):正确分类为负类的样本数。
- FP(False Positive):被错误分类为正类的负类样本数。
- FN(False Negative):被错误分类为负类的正类样本数。
适用场景:在类别均衡且误分类代价相似时,准确率是常用指标。然而,在类别不均衡的情况下,准确率可能会产生误导效果。
局限性: 当数据集不平衡(某类数据占比非常高)时,准确率可能会掩盖模型对小类别的误判。
1.2 精确率(Precision)
定义:精确率衡量模型对正类预测的准确性,即模型预测为正类的样本中,真正为正类的比例。正确预测正类
Precision = TP TP + FP \text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}} Precision=TP+FPTP
适用场景:精确率适用于关注误报成本较高的场景,如垃圾邮件过滤中,将正常邮件错误识别为垃圾邮件的代价较大。
1.3 召回率(Recall)
定义:召回率衡量模型能够找出所有正类样本的能力,即所有正类样本中被正确识别为正类的比例。实际的正类标签
Recall = TP TP + FN \text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}} Recall=TP+FNTP
适用场景:召回率适用于希望捕捉到尽可能多的正类样本的场景,如癌症检测中,漏诊比误诊代价更高。
1.4 F1 分数
定义:F1 分数是精确率和召回率的调和平均数,是它们之间的平衡度量,特别适用于类别不均衡时。
F1 Score = 2 × Precision × Recall Precision + Recall \text{F1 Score} = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} F1 Score=2×Precision+RecallPrecision×Recall
适用场景:当希望在精确率和召回率之间找到平衡时,F1 分数是理想的评估指标。
1.5 AUC-ROC 曲线
定义:AUC(Area Under the Curve)是 ROC 曲线(Receiver Operating Characteristic Curve)下的面积,用于评估分类器的综合表现。ROC 曲线反映了不同阈值下的 TPR(True Positive Rate,真正类率)和 FPR(False Positive Rate,假正类率)的变化。
- TPR(召回率):( TP TP + FN \frac{\text{TP}}{\text{TP} + \text{FN}} TP+FNTP)
- FPR:( FP FP + TN \frac{\text{FP}}{\text{FP} + \text{TN}} FP+TNFP)
AUC 的值在 0 到 1 之间,越接近 1,分类器性能越好。
适用场景:AUC-ROC 曲线适用于二分类任务,尤其在处理类别不均衡问题时,能更好地反映模型的整体表现。
2. 回归模型的评估指标
回归模型用于预测连续变量,如线性回归、决策树回归、随机森林回归等。常用的回归模型评估指标包括:
2.1 均方误差(MSE)
定义:均方误差是预测值与真实值差值的平方的平均值。
MSE = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 MSE=n1i=1∑n(yi−y^i)2
其中,( y i y_i yi ) 是实际值,( y ^ i \hat{y}_i y^i ) 是预测值, n n n 是样本数。
适用场景:MSE 对于大误差更加敏感,因此更关注模型在预测值偏差较大的情况下的表现。
2.2 均绝对误差(MAE)
定义:均绝对误差是预测值与真实值差值的绝对值的平均值。
MAE = 1 n ∑ i = 1 n ∣ y i − y ^ i ∣ \text{MAE} = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| MAE=n1i=1∑n∣yi−y^i∣
适用场景:MAE 对于异常值(outliers)不如 MSE 敏感,因此更加平滑,适合异常值较多的场景。
2.3 决定系数(( R^2 ))
定义:决定系数衡量模型对数据方差的解释能力,取值范围为 0 到 1,接近 1 表示模型能较好地解释数据。
R 2 = 1 − ∑ i = 1 n ( y i − y ^ i ) 2 ∑ i = 1 n ( y i − y ˉ ) 2 R^2 = 1 - \frac{\sum_{i=1}^{n} (y_i - \hat{y}_i)^2}{\sum_{i=1}^{n} (y_i - \bar{y})^2} R2=1−∑i=1n(yi−yˉ)2∑i=1n(yi−y^i)2
其中,( y ˉ \bar{y} yˉ ) 是实际值的均值。 ( R 2 R^2 R2 ) 的值越大,模型的预测能力越强。
适用场景:( R 2 R^2 R2 ) 是回归模型的标准指标,尤其在比较不同回归模型的解释能力时很有用。
2.4 均方根误差(RMSE)
定义:均方根误差是均方误差的平方根。
RMSE = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 \text{RMSE} = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2} RMSE=n1i=1∑n(yi−y^i)2
适用场景:RMSE 与 MSE 类似,但更具有直观的物理解释(与实际值单位相同),在衡量误差时较为常用。
3. 模型评估方法
3.1 训练集/测试集划分
将数据集拆分为训练集和测试集,通过在测试集上评估模型的性能,可以判断模型的泛化能力。常用方法有:
train_test_split:用于将数据随机拆分成训练集和测试集。- 交叉验证:如 K 折交叉验证,模型会在多个数据子集上进行训练和评估,从而获得稳定的评估结果。
3.2 交叉验证(Cross Validation)
交叉验证将数据集分为 K 份,进行 K 次训练,每次用其中 K-1 份作为训练集,剩下一份作为验证集。交叉验证能有效减少过拟合,并提升模型的评估稳定性。
from sklearn.model_selection import cross_val_score
scores = cross_val_score(model, X, y, cv=5, scoring='accuracy')
print("交叉验证平均准确率:", scores.mean())
3.3 网格搜索(Grid Search)
网格搜索用于自动调参,通过穷举法遍历参数空间,找到使模型性能最优的参数组合。
from sklearn.model_selection import GridSearchCVparam_grid = {'C': [0.1, 1, 10], 'penalty': ['l1', 'l2']}
grid = GridSearchCV(LogisticRegression(), param_grid, cv=5)
grid.fit(X_train, y_train)
print("最佳参数:", grid.best_params_)
4. 总结
- 分类模型的评估主要使用准确率、精确率、召回率、F1 分数、AUC-ROC 曲线等指标,具体选择要根据实际业务场景的需求决定。
- 回归模型的评估常用 MSE、RMSE、MAE 和 R² 来衡量模型的拟合程度,MSE 对异常值更敏感。
相关文章:
回归、分类模型的评估指标
1. 分类模型的评估指标 评估机器学习模型的好坏至关重要,它帮助我们判断模型的性能、稳定性以及在实际问题中的应用效果。不同类型的机器学习任务(分类、回归、聚类等)有不同的评估指标。以下是详细介绍常见的模型评估指标,尤其针…...
k8s中如何将pod的标准输出日志输出到一个文件
假设容器的启动命令是 grpcserver,我们将通过修改启动命令,将 grpcserver 的标准输出重定向到指定的日志文件 /var/log/app/grpcserver.log,同时保留标准输出以便 Kubernetes 日志系统仍然能够捕获日志。 目标: 将 grpcserver 的…...
软件工程文档规范要点总结
需求分析文档 1.目标用户应该体现为用例图里的执行者(执行者要标明是哪一类用户) 2.用例模型由功能概述得到,用例顺序图由基本交互过程得到,分析类图由顺序图得到 3.执行者和用例之间的关系:执行、触发、驱动 用例…...
Django 序列化serializers
在Django中,序列化通常指的是将数据库中的模型数据转换为JSON、XML或其他格式的过程。Django提供了内置的序列化工具,可以通过django.core.serializers模块进行序列化操作。 当你使用Django的序列化功能时,可以序列化以下两种对象类型&#…...
混个1024勋章
一眨眼毕业工作已经一年了,偶然进了游戏公司成了一名初级游戏服务器开发。前两天总结的时候,本来以为自己这一年没学到多少东西,但是看看自己的博客其实也有在进步,虽然比不上博客里的众多大佬,但是回头看也算是自己的…...
Java Spring Boot 项目开发示例指南
开发和扩展一个 Java Spring Boot 项目可以分为几个步骤。以下是一个简单的指南,涵盖项目的创建、基本功能的实现、以及扩展的示例。 第一步:创建 Spring Boot 项目 使用 Spring Initializr 创建项目: 访问 Spring Initializr选择项目的配置(…...
Python学习路线:从新手到专家
引言 Python 是一种高级编程语言,以其简洁清晰的语法而闻名,被广泛应用于Web开发、数据科学、人工智能、自动化脚本等领域。无论你是编程初学者还是有经验的开发者,Python 都是一个值得学习的语言。本文将提供一份详细的Python学习路线图&am…...
R实验——logistic回归、LDA、QDAKNN
数据集介绍: mpg,miles per gallon即油耗,这个数据集来自卡内基梅隆大学维护的StatLib库。1983年美国统计协会博览会使用了该数据集。这个数据集是对StatLib库中提供的数据集稍加修改的版本。根据Ross Quinlan(1993)在预测属性“mpg”中的使…...
Java 使用 itextpdf 自定义 生成 pdf
Java 使用 itextpdf 自定义 生成 pdf maven 依赖实现docker 服务 字体文件找不到问题 maven 依赖 <!-- iText 7 --> <dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>7.2.3</version…...
Rust小练习,编写井字棋
画叉画圈的游戏通常指的是 井字棋(Tic-Tac-Toe),是一个简单的两人游戏,规则如下: 游戏规则 棋盘:游戏在一个3x3的方格上进行。玩家:有两个玩家,一个用“X”表示,另一个…...
RabbitMQ 入门(八)SpringAMQP消息转换器
一、消息转换器 Spring会把你发送的消息序列化为字节发送给MQ,接收消息的时候,还会把字节反序列化为Java对象。 只不过,默认情况下Spring采用的序列化方式是JDK序列化。众所周知,JDK序列化存在下列问题: - 数…...
【C++】一文带你深入理解C++异常机制
⭐️个人主页:小羊 ⭐️所属专栏:C 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 前言一、C语言处理错误的方式二、C异常三、异常的使用3.1 异常的抛出和捕获3.2 异常的重新抛出3.3 异常安全3.4 异常规范 四、自定义异…...
Qt之QObject
简介 QObject是qt中所有对象的基类,也是信号槽的基础 结构 #mermaid-svg-mpp2FHEcRCzUK75S {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-mpp2FHEcRCzUK75S .error-icon{fill:#552222;}#mermaid-svg-…...
鸿蒙到底是不是纯血?到底能不能走向世界?
关注卢松松,会经常给你分享一些我的经验和观点。 2016年5月鸿蒙系统开始立项。 2018年美国开始经济战争,其中一项就是制裁华为,不让华为用安卓。 2019年8月9日华为正式发布鸿蒙系统。问题就出在这里,大家可以仔细看。 安卓一…...
【Android】MVP架构
MVP架构简介 MVP(Model-View-Presenter)是一种常见的软件架构模式,尤其在Android应用开发中被广泛使用。它将应用程序分为三层:Model、View 和 Presenter,以实现职责分离,提高代码的可维护性和可测试性。 …...
Web服务器之Nginx
Nginx(发音为Engine X)是一款开源的高性能HTTP和反向代理服务器,同时也提供了IMAP/POP3/SMTP服务。由伊戈尔赛索耶夫(Igor Sysoev)为俄罗斯访问量第二的Rambler.ru站点开发,Nginx自发布以来,凭借…...
【大模型实战篇】大模型分词算法Unigram及代码示例
1. 算法原理介绍 与 BPE 分词(参考《BPE原理及代码示例》)和 WordPiece 分词(参考《WordPiece原理及代码示例》)不同,Unigram 分词方法【1】是从一个包含足够多字符串或词元的初始集合开始,迭代地删除其中的…...
Dockerfile搭建ELK
使用 Dockerfile 安装 ELK 一、引言 ELK Stack(Elasticsearch, Logstash, Kibana)是一种流行的日志管理和分析解决方案。它允许用户实时搜索、分析和可视化日志数据。通过 Docker,可以方便地部署 ELK ,快速获取一个功能齐全的日…...
在合规的地方怎么用EACO地球链兑换交换价值?
地球链EACO(EarthChain,简称$E)是一种虚拟数字资产。 目前在中国大陆,虚拟资产相关业务活动属于金融活动,包括虚拟资产的交易、兑换等操作,因此应该谨慎去寻求如何用它来交换价值。 虚拟资产交易炒作活动&…...
VS无法安装Win10SDK_10.0.2200,快捷方法
Visual Studio无法安装Win10SDK_10.0.2200,我在安装VS2019、2022提示,软件就不能编译。 因为之前安装过VS软件,重新安装软件提示“无法安装”。 原因 之前安装在D盘,现在没有D盘了 说明 因为电脑第一次安装VS,会自动安…...
利用Perturb and Observe(PO)实现光伏供电的直流-直流升压变换器的最大功率跟踪(Simulink仿真实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
GD32F470驱动LCD1602A字符液晶模块实战指南
1. 1602字符型液晶显示模块硬件接口与GD32F470平台驱动实现1.1 模块选型与电气特性分析LCD1602A是一款经典的字符型点阵液晶显示模块,采用ST7066U或兼容控制器,支持58点阵字符显示,具备16列2行的文本显示能力。该模块在工业控制、仪器仪表及教…...
GLM-OCR入门:3步完成CSDN星图GPU平台一键部署与测试
GLM-OCR入门:3步完成CSDN星图GPU平台一键部署与测试 你是不是经常遇到需要从图片里提取文字的情况?比如整理扫描的文档、识别截图里的信息,或者处理一些带文字的图片。手动输入不仅慢,还容易出错。 今天要聊的GLM-OCR࿰…...
生产环境MCP采样成功率骤降37%?资深架构师亲授:基于eBPF实时观测Sampling Request Body截断问题的5分钟定位法
第一章:生产环境MCP采样成功率骤降37%的现象确认与影响评估现象确认路径 通过实时监控平台(Prometheus Grafana)回溯过去72小时指标,定位到MCP(Metric Collection Protocol)采样成功率从98.2%断崖式下跌至…...
Adobe Photoshop隐藏技巧:用图牛助理插件5分钟批量生成电商主图(附模板调用教程)
Adobe Photoshop电商设计效率革命:图牛助理插件深度实战指南 电商视觉设计领域正经历一场效率革命。传统Photoshop操作流程中,设计师需要反复调整图层、修改文字、替换素材,一个简单的主图设计往往耗费半小时以上。而如今,借助图牛…...
YOLOv8改进:引入ECA高效通道注意力机制,轻量级涨点神器!
摘要 在目标检测领域,注意力机制已成为提升模型性能的关键技术之一。然而,传统的通道注意力机制(如SENet)虽然有效,但引入了大量的额外参数和计算量,导致模型复杂度增加。本文详细介绍了一种轻量高效的通道注意力机制——ECA(Efficient Channel Attention),并手把手教…...
comsol仿真超表面复现:多级分解通用,适用各种形状,以下是两篇文献(六面体阵列、圆柱体阵列)
comsol仿真超表面复现:多级分解通用,适用各种形状,以下是两篇文献(六面体阵列、圆柱体阵列)深夜的实验室键盘声里,突然意识到超表面设计有个隐藏的bug——当你费劲调出完美谐振曲线时,根本说不清…...
STM32CubeMX实战:Fatfs文件系统与SDMMC驱动深度集成
1. 为什么需要Fatfs文件系统? 在嵌入式开发中,SD卡存储是个常见需求。想象一下,你的STM32设备需要记录传感器数据、存储配置文件或者保存日志文件,这时候就需要一个可靠的文件系统来管理这些数据。Fatfs就像是一个"文件管家&…...
手把手教你用OpenCV实现张正友相机标定(附Python代码)
从零掌握OpenCV相机标定:张正友法的Python实战指南 在计算机视觉领域,相机标定是构建三维感知系统的基石。无论是工业检测、自动驾驶还是增强现实应用,精确的相机参数都是实现空间测量的前提。本文将带您用Python和OpenCV一步步实现经典的张正…...
电力公司如何用CMDP优化发电策略?一个真实案例带你理解约束马尔可夫决策过程
电力公司如何用CMDP优化发电策略?一个真实案例带你理解约束马尔可夫决策过程 在能源行业,电力公司每天面临的核心挑战是如何在复杂约束条件下实现发电资源的最优分配。传统调度方法往往难以兼顾经济性、环保性和稳定性,而**约束马尔可夫决策过…...
