机器学习模型的过拟合与欠拟合

机器学习模型的训练过程中,可能会出现3种情况:模型欠拟合、模型正常拟合与模型过拟合。其中模型欠拟合与模型过拟合都是不好的情况。下面将会从不同的角度介绍如何判断模型属于哪种拟合情况。

(1)欠拟合与过拟合表现方式

欠拟合:欠拟合是指不能很好的从训练数据中,学习到有用的数据模式,从而针对训练数据和待预测的数据,均不能获得很好的预测效果。如果使用的训练样本过少,较容易获得欠拟合的训练模型。

正常拟合:模型的正常拟合是指训练得到的模型,可以从训练数据集上学习得到了泛化能力强、预测误差小的模型,同时该模型还可以针对待测试的数据进行良好的预测,获得令人满意的预测效果。

过拟合:过拟合是指过于精确地匹配了特定数据集,导致获得的模型不能良好地拟合其他数据或预测未来的观察结果的现象。模型如果过拟合,会导致模型的偏差很小,但是方差会很大。

上面的介绍可能不能直观的快速了解数据的三种拟合情况,下面分别介绍针对分类问题和回归问题,不同任务下的拟合效果,获得的模型对数据训练后的表示形式。针对二分类问题可以使用分界面,表示所获得的模型与训练数据的表现形式,图1表示三种情况下的数据分界面。

图1 分类问题的三种数据拟合情况

从图1可以发现:欠拟合的数据模型较为简单,因此获得的预测误差也会较大,而过拟合的模型则正相反,其分界面完美的将训练数据全部分类正确,获得的模型过于复杂,虽然训练数据能够百分百预测正确,但是当预测新的测试数据时会有较高的错误率。而数据正常拟合的模型,对数据的拟合效果则是介于欠拟合和过拟合之间,训练获得不那么复杂的模型,保证在测试数据集上的泛化能力。三种情况在训练数据集上的预测误差的表现形式为:欠拟合>正常拟合>过拟合;而在测试集上的预测误差形式为:欠拟合>过拟合>正常拟合。

针对回归问题,在对连续变量进行预测时,三种数据拟合情况可以使用图2来表示。三幅图分别表示对一组连续变量进行数据拟合时,可能出现的欠拟合、正常拟合与过拟合的三种情形。

图2 回归问题的三种数据拟合情况

很多时候面对高维的数据,很难可视化出分类模型的分界面与回归模型的预测效果,那么如何判断模型的拟合情况呢?针对这种情况,通常可以使用两种判断方案。第一种是,判断在训练集和测试集上的预测误差的差异大小,正常拟合的模型通常在训练集和测试集上的预测误差相差不大,而且预测的效果均较好;欠拟合模型在训练集和测试集上的预测效果均较差;过拟合模型则会在训练数据集上获得很小的预测误差,但是在测试集上会获得较大的预测误差。另一种方式,是可视化出模型在的训练过程中,三种不同的数据拟合情况,在训练数据和测试数据(或验证数据)上的损失函数变化情况,如图3所示。

图3三种数据拟合情况的损失函数变化情况

(2)避免欠拟合与过拟合的方法

实践过程中,如果发现训练的模型对数据进行了欠拟合或者过拟合,通常要对模型进行调整,解决这些问题是一个复杂综合的过程,而且很多时候要进行多项的调整,下面介绍一些可以采用的相关解决方法。

增加数据量:如果训练数据较少,通常可能会导致数据的欠拟合,也会发生在训练集上的过拟合问题。因此更多的训练样本通常会使模型更加的稳定,所以训练样本的增加不仅可以得到更有效的训练结果,也能在一定程度上调整模型的拟合效果,增强其泛化能力。但是如果训练样本有限,也可以利用数据增强技术对现有的数据集进行扩充。

合理的数据切分:针对现有的数据集,在训练模型时,可以将数据集进行切分为训练集、验证集和测试集(或者使用交叉验证的方法)。在对数据进行切分后,可以使用训练集来训练模型,并且通过验证集来监督模型的学习过程,也可以在网络过拟合之前提前终止模型的训练。在模型训练结束后,可以利用测试集来测试训练结果的泛化能力。

当然在保证数据尽可能的来自同一分布的情况下,如何有效的对数据集进行切分也很重要,传统的数据切分方法通常是按照60:20:20的比例拆分,但是针对数据量的不同,数据切分的比例也不尽相同,尤其在大数据时代,如果数据集有几百万甚至上亿级条目时,这种60:20:20比例的划分已经不再合适,更好的方式是将数据集的98%用于训练,保证尽可能多的样本接受训练,使用1%的样本用于验证集,这1%的数据已经有足够多的样本来监督模型是否过拟合,最后使用1%的样本测试网络的泛化能力。所以针对数据量的大小、网络参数的数量,数据的切分比例可以根据实际的需要来确定。

正则化方法:正则化方式是解决模型过拟合问题的一种手段,其通常会在损失函数上添加对训练参数的惩罚范数,通过添加的范数惩罚对需要训练的参数进行约束,防止模型过拟合。常用的正则化参数有L1和L2范数,范数惩罚项的目的是将参数的绝对值最小化,范数惩罚项的目的是将参数的平方和最小化。使用正则化防止过拟合非常有效,如在经典的线性回归模型中,使用L1范数正则化的模型叫做Lasso回归,使用L2范数正则化的模型叫做Ridge回归。

参考书籍:《Python机器学习算法与实战》——孙玉林,余本国 著

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

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

相关文章

GSVA -- 学习记录

文章目录 1.原理简介2. 注意事项3. 功能实现代码实现部分 4.可视化5.与GSEA比较 1.原理简介 Gene Set Variation Analysis (GSVA) 基因集变异分析。可以简单认为是样本数据中的基因根据表达量排序后形成了一个rank list,这个rank list 与 预设的gene sets&#xff…

第三百七十回

文章目录 1. 概念介绍2. 使用方法2.1 获取所有时区2.2 转换时区时间 3. 示例代码4. 内容总结 我们在上一章回中介绍了"分享一些好的Flutter站点"相关的内容,本章回中将介绍timezone包.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在…

如何让网页APP化 渐进式Web应用(PWA)

前言 大家上网应该发现有的网页说可以安装对应应用,结果这个应用好像就是个web,不像是应用,因为这里采用了PWA相关技术。 PWA,全称为渐进式Web应用(Progressive Web Apps),是一种可以提供类似…

【C++】树形关联式容器set、multiset、map和multimap的介绍与使用

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.关联式容器 2.键…

vue项目build 静态文件部署到fastapi后台中访问白屏,访问不到?

正常创建VUE项目那些应该都会,到项目最后 npm run build然后会生成一个dist文件夹 然后把这个文件夹的东西复制去到fastapi项目根目录创建一个static文件夹 然后开始写点代码 # main.py绑定静态文件目录 app.mount("/static", StaticFiles(directory&…

4核8g服务器能支持多少人访问?

腾讯云4核8G服务器支持多少人在线访问?支持25人同时访问。实际上程序效率不同支持人数在线人数不同,公网带宽也是影响4核8G服务器并发数的一大因素,假设公网带宽太小,流量直接卡在入口,4核8G配置的CPU内存也会造成计算…

广和通发布基于骁龙460移动平台的智能模组SC208,加速移动终端智能化

世界移动通信大会MWC 2024期间,广和通发布基于骁龙460移动平台开发的LTE智能模组SC208,旨在为智慧零售、智能手持、车载后装、多媒体等领域提供稳定高效的智能联网体验,加速行业应用创新与变革。 高通CDMA技术亚太有限公司副总裁ST Liew表示&…

代码遗产:探索祖传代码的历史、挑战与现代融合艺术

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua,在这里我会分享我的知识和经验。&#x…

【代码解读】OpenCOOD框架之model模块(以PointPillarFCooper为例)

point_pillar_fcooper PointPillarFCooperPointPillarsPillarVFEPFNLayerPointPillarScatterBaseBEVBackboneDownsampleConvDoubleConv SpatialFusion检测头 (紧扣PointPillarFCooper的框架结构,一点一点看代码) PointPillarFCooper # -*- c…

Linux环境安装jira

jira 是项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。 jira 软件安装包直接搜官网,然后可以选择免费的来下载: 安装 jira 之前,需要 Java 和 mysql 环境的…

时隔一年的测评:gpt3.5发展到什么程度了?

名人说:一花独放不是春,百花齐放花满园。——《增广贤文》 作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、简要介绍1、chatgpt是什么?2、主要特点3、工作原理4、应用限制5、使…

亚信安慧AntDB助力全链路实时化

实时数据平台,快速实现企业全链路实时化 引入数据仓库、数据挖掘、HTAP等先进理念,通过实时数据应用平台来装载庞大的信息量,进行实时分析处理,克服数据处理过程中的困难,是当下各企事业单位、互联网、金融&#xff0c…

大数据集群管理软件 CDH、Ambari、DataSophon 对比

文章目录 引言工具介绍CDHAmbariDataSophon 对比分析 引言 大数据集群管理方式分为手工方式和工具方式,手工方式一般指的是手动维护平台各个组件,工具方式是靠大数据集群管理软件对集群进行管理维护。本文针对于常见的方法和工具进行比较,帮助…

早产儿视网膜病变分期,自动化+半监督(无需大量医生标注数据)

早产儿视网膜病变 ROP 分期 提出背景解法框架解法步骤一致性正则化算法构建思路 实验 提出背景 论文:https://www.cell.com/action/showPdf?piiS2589-0042%2823%2902593-2 早产儿视网膜病变(ROP)目前是全球婴儿失明的主要原因之一。 这是…

Dledger部署RocketMQ高可用集群(9节点集群)

文章目录 🔊博主介绍🥤本文内容规划集群准备工作节点0配置(ip地址为192.168.80.101的机器)节点1配置(ip地址为192.168.80.102的机器)节点2配置(ip地址为192.168.80.103的机器)在所有…

C语言--- 指针(3)

一.字符指针变量 在指针的类型中&#xff0c;我们知道有一种指针类型为字符指针char * 一般使用&#xff1a; #include<stdio.h> int main() {char ch a;char* p &ch;*p b;printf("%c\n",ch);return 0; } 其实还有一种使用方式 &#xff1a; #inc…

用了这么久的python,这些零碎的基础知识,你还记得多少?

python内置的数据类型 Python3.7内置的关键字 [False, None, True, and, as, assert, async, await, break, class, continue, def, del, elif, else, except, finally, for, from, global, if, import, in, is, lambda,nonlocal, not, or, pass, raise, return, try, while, …

vue专栏总纲

博主个人小程序已经上线&#xff1a;【中二少年工具箱】 小程序二维如下&#xff1a; 正文开始 专栏简介专栏初衷 专栏简介 本系列文章由浅入深&#xff0c;从基础知识到实战开发&#xff0c;非常适合入门同学。 零基础读者也能成功由本系列文章入门&#xff0c;但如果您具…

Unity中字符串拼接0GC方案

本文主要分析C#字符串拼接产生GC的原因&#xff0c;以及介绍名为ZString的库&#xff0c;它可以将字符串生成的内存分配为零。 在C#中&#xff0c;字符串拼接通常有三种方式&#xff1a; 直接使用号连接&#xff1b;string.format;使用StringBuilder&#xff1b; 下面分别细…

新版极狐gitlab安装+配置详细版

这里安装的服务器环境是centos7.9系统&#xff0c;安装极狐版本16.9。 极狐地址&#xff1a;https://gitlab.cn/install/ 1. 安装和配置所需的依赖 在 CentOS 7 上&#xff0c;下面的命令会在系统防火墙中打开 HTTP、HTTPS 和 SSH 访问。这是一个可选步骤&#xff0c;如果您…