回归、分类模型的评估指标
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,会自动安…...
github多个账号配置多个SSH秘钥
背景 对于有多个github账号的同学,需要配置多个ssh秘钥分别管理多个账号。 方法 1、生成多个SSH秘钥 # 为第一个 GitHub 账号生成密钥 ssh-keygen -t ed25519 -C "your_email_1example.com" -f ~/.ssh/id_ed25519_github_work# 为第二个 GitHub 账号生…...
静态/动态代理详解,一次性看完再也不会搞不清!
代理官方原文翻译: 给其他对象提供一个代理或者占位符,来控制对这个对象的访问。 代理最核心的思想: 在客户端和目标对象之间创建一个“中介”,用于保护目标对象和增强目标对象 静态代理: 该代理对象需要我们手动…...
Webserver(2)GCC
目录 安装GCCVScode远程连接到虚拟机编写代码gcc编译过程gcc与g的区别Xftp连接虚拟机上传文件 安装GCC sudo apt install gcc g查看版本是7.5 touch test.c创建代码 但是在虚拟机中写代码很不方便 VScode远程连接到虚拟机编写代码 gcc test.c -o app在虚拟机中用gcc编译的…...
mac电脑设置chrome浏览器语言切换为日语英语等不生效问题
在chrome中设置了语言,并且已经置顶了,但是不生效,在windows上直接有设置当前语言为chrome显示语言,但是mac上没有。 解决办法 在系统里面有一个单独给chrome设置语言的: 单独给它设定成指定的语言,然后重…...
Python中的人工智能框架与实例
在人工智能(AI)领域,Python因其简洁的语法、丰富的库和强大的社区支持,成为了最受欢迎的编程语言之一。本文将详细介绍Python中的人工智能框架,并通过具体实例展示如何使用这些框架来实现不同的人工智能应用。 一、Python中的人工智能框架 …...
论文阅读(二十六):Dual Attention Network for Scene Segmentation
文章目录 1.Introduction3.DANet3.1Position Attention Module3.2Channel Attention Module 论文:Dual Attention Network for Scene Segmentation 论文链接:Dual Attention Network for Scene Segmentation 代码链接:Github 1.Intr…...
Stack和Queue(3)
Stack和Queue(3) priority_queue的模拟实现 priority_queue.h #include <vector>namespace soobin {template<class T, class Container vector<T>>class priority_queue{public://强制生成默认构造priority_queue() default;temp…...
怎样把学生的成绩单独告知家长?
期中考试季的到来让校园里的气氛似乎也变得紧张起来。家长们开始频繁地联系老师,希望了解孩子的表现;孩子们则在考试后,绞尽脑汁地想出各种理由,以期在成绩不理想时能减轻家长的失望。老师们更是忙得不可开交,不仅要批…...
vue3父组件控制子组件表单验证及获取子组件数值方法
1、关键部分的代码如下,我努力交代清楚了,希望能让大家看懂。 <template><KeepAlive><component ref"comp" :is"compNames[steps[compIndex].comp]" /></KeepAlive><el-button click"prevBtn"…...
【JavaEE】【多线程】单例模式
目录 一、设计模式1.1 单例模式1.1.1 饿汉模式1.1.2 懒汉模式 1.2 线程安全问题1.3 懒汉模式线程安全问题的解决方法1.3.1 原子性问题解决1.3.2 解决效率问题1.3.3 解决内存可见性问题和指令重排序问题 一、设计模式 在讲解案例前,先介绍一个概念设计模式ÿ…...
东至县住房和城乡建设网站/seo工具下载
前言 继荣凯同学写的tomcat间Session共享时,tomcat的配置: http://blog.csdn.net/srk950606/article/details/72867537 我来总结一下nginx如何来配置; 文档概述 本文档适用于开始了解Tomcat Session共享技术、需要配置nginx的人使用&…...
西宁网站开发/seo效果最好的是
之前一直对于integration的xml配置感到很无力,首先不知道可以用什么 节点名,然后又不知道节点内部的参数的作用。这两个问题一问出来会很模糊,看官方文档当然是你可以的,但是如果你忘记了或者不知道xml中命名空间 别名的声明和sch…...
了解网站开发的背景/百度快照推广是什么意思
API介绍MediaStream.addTrack()向流媒体中加入轨MediaStream.removeTrack()从流媒体中将轨移除MediaStream.getVideoTracks()获取流媒体中所有视频轨MediaStream.getAudioTracks()获取流媒体中所有音频轨MediaStream.onaddTrack向流媒体中加入轨时触发的事件MediaStream.onremo…...
教做美食网站源码/2023年6月份又封城了
最近不停的在考虑C#读取数据性能问题第一种使用ado拼接sql连接数据库第二种使用ado调用存储过程第三种使用entityframework加linq第四种使用反射IList<T>1.从开发速度上面来看的话,entityframework加linq可以很容易实现数据库的读取,将大量的时间放…...
网站seo搜索引擎优化教程/百度招聘2022年最新招聘
【题目】A. A String Game 【题意】给定目标串S和n个子串Ti,Alice和Bob轮流选择一个子串操作,必须且只能在子串末尾添加一个字符使得新串也是S的子串,不能操作即输,求胜利者。|S|<10^5,n<100。多组数据,保证Σ|S…...
大连网站前端制作公司/百度推广怎么找客户
除了使用 <router-link> 创建 a 标签来定义导航链接,我们还可以借助 router 的实例方法,通过编写代码来实现。在 Vue 实例内部,可以通过 $router 访问路由实例。因此可以调用 this.$router.push。 Router实例方法 1. router.push(参数…...