机器学习模型评估

news2024/12/23 2:17:13

前言

承接上篇讲述了机器学习有哪些常见的模型算法,以及适用的场景,本篇将继续讲述如何评估模型。模型评估的目的是选出泛化能力强的模型。泛化能力强表示模型能很好地适用于未知的样本,模型的错误率低、精度高。本文将从评估方法和评估指标两方面进行阐述。

几个概念了解一下:

  • 经验误差:模型在训练集上的误差称之为经验误差;
  • 过拟合:模型在训练集上表现的很好,但是在交叉验证集合测试集上表现一般,也就是说模型对未知样本的预测表现一般,泛化(Generalization)能力较差
  • 偏差:通常指的是模型拟合的偏差程度,是真实模型和模型多次拟合出来的平均模型差异。

1. 模型评估方法

1.1 留出法

会从训练数据中保留出验证样本集,这部分数据不用于训练,而用于模型评估。留出法需要注意:

  • 随机划分不一定有效。 如果测试集正好只取到某一种特殊类型数据,会带来额外的误差。一般会对数据分析,尽量保证测试数据的平衡。
  • 单次划分不一定能得到合适的测试集,一般多次重复「划分 - 训练 - 测试求误差」的步骤,取误差的平均值。
  • 划分的验证集,太大或者太小都不合适,常用比例是1/5到1/3。

1.2 交叉验证法(cross validation)

对数据进行K个分组,第i次模型迭代训练用第i组数据作为测试集,其余作为训练集,最终模型损失函数是K次迭代的均值。通常k取10,可跟随数据量大小做调整。

1.3 自助法(Boostrap)

在本身数据量就很小的时候,采用数据截取作为testing,会导致模型失真。这种情况下,Bootstrap通过有放回抽样生成大量的伪样本,通过对伪样本进行计算,获得统计量的分布,从而估计数据的整体分布。自助法极限抽样值约为1/e=0.368

2. 模型评估指标

根据模型算法的不同,评估指标选取也不一样。比如,逻辑回归输出是连续值,分类问题输出的有限分类,聚类问题则输出的是聚类指标等。

2.1 回归指标

2.1.1 平均绝对误差MAE

MAE的计算公式为

MAE= \frac{1}{m}\sum_{i=1}^{m}|f(x_{i})-y_{i}|

优点是可以直观的反应预测值和真实值之间的差异,缺点是不能反映预测的无偏性(无偏就要求估计值的期望就是真实值)。

2.1.2 平均绝对百分误差MAPE

MAPE=\frac{100}{m}\sum_{m=1}^{m}|\frac{f(x_{i})-y_{i}}{y_{i}}|

是对MAE的一种改进,考虑了预测值与真实值的误差。

2.1.3 均方误差MSE

MSE= \frac{1}{m}\sum_{i=1}^{m}|f(x_{i})-y_{i}|^{2}

MAE是绝对值求解,在不光滑函数情况下,某些点上不能求导,所以演进了MSE。MSE同样不能反映预测的无偏性。

2.1.4 RMSE标准误差

RMSE=\sqrt{MSE}

可以更直观的反应观测值同真值之间的偏差。

2.1.5 决定系数R

R表征的是因变量y的变化中有多少可以用自变量x来解释,是回归方程对观测值拟合程度的一种体现。R平方越接近1,说明回归模型的性能越好,即能够解释大部分的因变量变化。

R^{2} = \frac{SSR}{SST} = \frac{SSR}{SSR+SSE}

SSR=\sum_{i}^{m}(f(x_{i})-\tilde{y})^{2}

SST=\sum_{i}^{m}(y_{i}-\tilde{y})^{2}

SSE=\sum_{i}^{m}(f(x_{i})-y_{i})^{2}

SST: 原始数据和均值之差的平方和,反映的是原始数据相对均值的离散程度.

SSR: 预测数据与原始数据均值之差的平方和,反映的是模型相对原始数据均值的离散程度

SSE:残差平方和,原始数据和预测数据之差的平方和

2.1.6 校正决定系数

决定系数无法反应样本数和特征数量的影响,所以衍生出了校正决定系数。

R^{2}_{adjust} = 1-\frac{(1-R^{2})(m-1)}{m-n-1}

其中,m是样本数量,n是特征数量。

2.2 分类问题评估

2.2.1 混淆矩阵

混淆矩阵构成如下表所示:

  • 每一列代表了预测类别,每一列的总数表示预测为该类别的数据的数目。
  • 每一行代表了数据的真实归属类别,每一行的数据总数表示该类别的数据实例的数目。
total population

predict positive(预测为真)

predict negative(预测为假)
condition positive(实际为真)TPFN
condition negative(实际为假)FPTN

 2.2.2 准确率Accuracy

准确率是指预测的结果和实际的结果匹配的占比。

Accuracy=\frac{TP+TN}{TP+TN+FP+FN}

通常情况下,准确率越高,表示模型预测越准确。

2.2.3  精确率Precision

在数据类别严重不均衡的情况下,准确率评估指标并不合理,比如发病率0.1%医疗场景下,如果只追求 Accuracy,模型可以直接预测所有的人都是病人,Accuracy高达99.9%,因此引申出了精确率。

Presicion=\frac{TP}{FP+TP}

2.2.4 Recall 召回率

在金融场景,系统希望筛选出所有的风险用户或行为,宁愿错杀,不可漏掉.

Recall = \frac{TP}{TP+FN}

2.2.5 F1 Score

通常情况下,精确率和召回率都是越高越好,但这两个指标是矛盾的,因此诞生了F1 score来衡量二正的平衡。

F1=\frac{2*Precision*Recall}{Precision+Recall}

2.2.6 ROC曲线

用FPR作为横轴,TPR作为纵轴的曲线图成为ROC曲线,主要用来判断模型是否有过拟合现象。其中FPR=FP/(FP+TN), TPR=TP/(TP+FN)。通常ROC曲线光滑表明模型没有太大的overlifting。

2.2.7 AUC

ROC曲线不能很直观反映模型的性能,而AUC作为ROC曲线的面积值,AUC越大,可直接表明模型的性能越好,排序能力越强。

2.2.8 PRC

以Recall作为横轴,Precision作为纵轴的曲线成为RPC曲线,也是能直接反映分类问题的排序能力。

Accuracy准确率适用于政府样本相当情况
Precision适用于正负样本相差很大情况,不能用于抽样
Recall适用于正负样本相差很大,抽样不敏感
ROC对不平衡数据集不敏感
AUC排序敏感
PRC负样本数量远大于正样本数量时,PRC比AUC更好

参考文献:ShowMeAI知识社区

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

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

相关文章

【开源鸿蒙】OpenHarmony 5.0.0 发布了,速来下载最新代码

【开源鸿蒙】OpenHarmony 5.0.0 发布了,速来下载最新代码 一、写在前面二、准备命令工具三、配置用户信息四、下载OpenHarmony源码4.1 使用ssh协议下载(推荐)4.2 使用https协议下载 五、下载编译工具链六、参考链接 今天是9月30号&#xff0c…

20道面试题001

常考语法就是指针,指针与数组、指针与字符串、指针与结构体、指针与函数之间的关系与使用, 以上课为准,辅助《深度理解C指针》这本书。 1. 指针与数组 定义: 数组名在表达式中通常被视为指向数组首元素的指针。 访问元素: 可以通过指针访问数…

计算机网络:计算机网络概述:网络、互联网与因特网的区别

文章目录 网络、互联网与因特网的区别网络分类 互联网因特网基于 ISP 的多层次结构的互连网络因特网的标准化工作因特网管理机构因特网的组成 网络、互联网与因特网的区别 若干节点和链路互连形成网络,若干网络通过路由器互连形成互联网 互联网是全球范围内的网络…

PWM驱动LED呼吸灯

背景知识:TIM输出比较-CSDN博客 stm32f10x_tim.h函数 // *** OC是Output Compare输出比较函数 void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct); void TI…

给Windows系统设置代理的操作方法

一、什么是代理 网络代理是一种特殊的网络服务,允许一个网络终端通过这个服务与另一个网络终端进行非直接的连接,而提供代理服务的电脑系统或其它类型的网络终端被称为代理服务器。 代理服务器是网络信息的中转站,代理服务器就像是一个很大的…

56. QTreeWidget的基本使用

1. 说明 在软件开发中会遇到将数据信息制作成一种树目录的形式进行展示,那么此时就可以借助QT提供的QTreeWidget控件来实现这种需求,本篇博客会做一个案例简要说明这个控件的基本使用方法,博客中代码能够实现的功能是将此项目代码所在文件夹中的内容展示出来,如下图所示:…

模式识别编程实践1:身高和/或体重数据进行性别分类

🌞欢迎莅临我的个人主页👈🏻这里是我专注于深度学习领域、用心分享知识精粹与智慧火花的独特角落!🍉 🌈如果大家喜欢文章,欢迎:关注🍷点赞👍🏻评论…

回溯大总结

目录 0、基础什么是回溯?回溯法解决的问题回溯模板 1、组合问题77. 组合216.组合总和III17. 电话号码的字母组合39. 组合总和:40.组合总和II 0、基础 什么是回溯? 回溯是一种穷举的搜索算法,并不是一个高效的算法,当…

高并发内存池(五):ThreadCache、CentralCache和PageCache的内存回收机制、阶段性代码展示和释放内存过程的调试

目录 ThreadCache的内存回收机制 补充内容1 补充内容2 补充内容3 补充内容4 ListTooLong函数的实现 CentralCache的内存回收机制 MapObjectToSpan函数的实现 ReleaseListToSpans函数的实现 PageCache的内存回收机制 补充内容1 补充内容2 ReleaseSpanToPageCache函…

【Spine】引入PhotoshopToSpine脚本

引入 右键Photoshop图标,选择属性 打开文件所在位置 找到目录下的\Presets\Scripts文件夹。 找到Spine目录下的\scripts\photoshop文件夹下的PhotoshopToSpine.jsx 复制它,丢到Photoshop刚才找的那个目录下。 使用 打开.psd文件,检查不要…

二叉树:总结篇!【需要掌握的二叉树技能都在这里啦】

文章目录 前言二叉树理论基础二叉树理论基础二叉树的遍历方式深度优先遍历广度优先遍历 N叉树的遍历方式求二叉树的属性二叉树:是否对称二叉树:求最大深度二叉树:求最小深度二叉树:求有多少个节点二叉树:是否平衡二叉树…

外贸财务软件精选,提升管理效率与精准度

ZohoBooks、QuickBooks等六款会计软件各具特色,支持多币种、国际化等功能,适合不同规模外贸企业。其中,ZohoBooks功能全面,QuickBooks操作简便,SageIntacct适合复杂业务,用友U8和金蝶K/3面向中大型企业&…

CommandLineRunner 和 ApplicationRunner

CommandLineRunner 和 ApplicationRunner 背景: 项目启动之前,预先加载数据。比如,权限容器、特殊用户数据等。通常我们可以使用监听器、事件来操作。但是,springboot提供了一个简单的方式来实现此类需求,即&#xf…

《Linux从小白到高手》理论篇(九):Linux的资源监控管理

本篇介绍Linux的资源监控管理。 1、CPU 资源管理 进程调度: Linux 采用公平的进程调度算法,确保每个进程都能获得合理的 CPU 时间。调度算法会根据进程的优先级、等待时间等因素来决定哪个进程获得 CPU 使用权。 可以通过调整进程的优先级来影响其获得…

C++继承实例讲解

C类继承的基本概念 base class,基类、父类 derived class,派生类、子类 C中的类可以扩展,创建保留基类特征的新类,这个过程称之为继承。类继承也可以描述为:派生类继承基类的成员,并在其上添加自己的成员…

【hot100-java】【单词搜索】

回溯 回溯可以使用DFS剪枝解决 class Solution {public boolean exist(char[][] board, String word) {char[] wordsword.toCharArray();for(int i0;i<board.length;i){for(int j0;j<board[0].length;j){if(dfs(board,words,i,j,0)) return true;}}return false;}boolean…

关于Elastic Search与MySQL之间的数据同步

目录 前言 思路分析 同步调用 异步通知 监听binlog 选择 实现数据同步 思路 运行项目 声明交换机、队列 1&#xff09;引入依赖 2&#xff09;声明队列交换机名称 3&#xff09;声明队列交换机 发送MQ消息 接收MQ消息 前言 Elastic Search中的酒店数据来自于MyS…

TypeScript 算法手册【插入排序】

文章目录 TypeScript 算法手册 - 插入排序1. 插入排序简介1.1 插入排序定义1.2 插入排序特点 2. 插入排序步骤过程拆解2.1 选择当前元素2.2 寻找插入位置2.3 插入元素 3. 插入排序的优化3.1 二分查找插入排序案例代码和动态图 4. 插入排序的优点5. 插入排序的缺点总结 【 已更新…

48.哀家要长脑子了!

1.376. 摆动序列 - 力扣&#xff08;LeetCode&#xff09; 看问题抓本质 本质&#xff01;&#xff01;识别和追踪数组中元素值的变化趋势。摆动序列是什么&#xff0c;什么是摆动序列&#xff0c;就是差值正负正负的来&#xff0c;最后要求摆动序列的子序列的长度的话&#x…

如何在KEIL的Debug模式下导出数据

我们知道&#xff0c;利用Keil编写程序时&#xff0c;可以实时显示数据的值&#xff0c;如上图所示&#xff0c;实时显示Voltage和fre的值&#xff0c;那如何导出该数据呢&#xff0c;下边进行详细说明。 首先&#xff0c;进入Debug模式&#xff0c;点击调试里边的函数编辑器。…