欠拟合、过拟合现象,及解决办法
@创建于:2022.05.27
@修改于:2022.05.27
文章目录
- 1、过拟合与欠拟合
- 2、欠拟合
- 2.1 出现的原因
- 2.2 解决的办法
- 3、过拟合
- 3.1 出现的原因
- 3.2 解决的办法
- 4. Early stopping
- 5、Dropout
- 6、L1 和 L2 正则化
- 7、参考资料
1、过拟合与欠拟合
机器学习中模型的泛化能力强的模型才是好模型。对于训练好的模型:
- 若在训练集表现差,不必说在测试集表现同样会很差,这可能是欠拟合导致;
- 若模型在训练集表现非常好,却在测试集上差强人意,则这便是过拟合导致的。
过拟合与欠拟合也可以用 Bias 与 Variance 的角度来解释:
- 欠拟合会导致高 Bias
- 过拟合会导致高 Variance
所以模型需要在 Bias 与 Variance 之间做出一个权衡。
现象 | 训练集表现 | 验证集表现 | 导致后果 |
---|---|---|---|
欠拟合 | 不好 | 不好 | 高 Bias |
过拟合 | 好 | 不好 | 高 Variance |
适度拟合 | 好 | 好 | Bias 和 Variance 的折中 |
2、欠拟合
2.1 出现的原因
使用的模型复杂度过低
使用的特征量过少
【其他的,如果您知道,请告诉我!感谢】
2.2 解决的办法
1、对于机器学习
- 增加新特征,可以考虑加入进特征组合、高次特征,来增大假设空间
- 添加多项式特征,这个在机器学习算法里面用的很普遍,例如将线性模型通过添加二次项或者三次项使模型泛化能力更强
- 减少正则化参数,正则化的目的是用来防止过拟合的,但是模型出现了欠拟合,则需要减少正则化参数
- 使用非线性模型,比如核SVM 、决策树、深度学习等模型
- 调整模型的容量(capacity),通俗地,模型的容量是指其拟合各种函数的能力。对于神经网络,这在很大程度上取决于它有多少神经元以及它们如何连接在一起。
- 容量低的模型可能很难拟合训练集;使用集成学习方法,如Bagging ,将多个弱学习器Bagging
2、对于深度学习
欠拟合的原因以及解决办法(深度学习)
- 对原始数据做归一化处理,这个会加速模型的收敛
- 减少使用正则化,减少的dropout
- 增加单层的神经元个数,加深网络层次
- 正确使用激活函数
3、过拟合
3.1 出现的原因
1、对于机器学习
建模样本选取有误,如样本数量太少,选样方法错误,样本标签错误等,导致选取的样本数据不足以代表预定的分类规则
样本噪音干扰过大,使得机器将部分噪音认为是特征从而扰乱了预设的分类规则
假设的模型无法合理存在,或者说是假设成立的条件实际并不成立
参数太多,模型复杂度过高对于决策树模型,如果我们对于其生长没有合理的限制,其自由生长有可能使节点只包含单纯的事件数据(event)或非事件数据(no event),使其虽然可以完美匹配(拟合)训练数据,但是无法适应其他数据集
2、对于神经网络模型
- a)对样本数据可能存在分类决策面不唯一,随着学习的进行,BP算法使权值可能收敛过于复杂的决策面;
- b)权值学习迭代次数足够多(Overtraining),拟合了训练数据中的噪声和训练样例中没有代表性的特征
3.2 解决的办法
- 正则化(Regularization)(L1和L2)
- 数据扩增,即增加训练数据样本(Data augmentation)
- Dropout
- Early stopping
- 降低模型复杂度
- 使用交叉验证
4. Early stopping
深度学习入门四----过拟合与欠拟合
在训练期间验证损失(validation loss)可能会开始增加,为了防止这种情况,在验证损失(validation loss)不再减少时停止训练。以这种方式中断训练称为early stopping。
一旦检测到验证损失开始再次上升,可以将权重重置为最小值出现的位置。这可确保模型不会继续学习噪声和过度拟合数据。
提前停止训练也意味着不太可能在网络完成学习信号之前过早停止训练。所以除了防止过拟合训练时间过长之外,提前停止还可以防止欠拟合训练时间不够长。只需将您的训练时期设置为一个较大的数字(比您需要的多),早期停止将处理其余部分。
5、Dropout
深度学习入门五----Dropout and Batch Normalization
过拟合的原因以及解决办法(深度学习)
在训练的每一步随机丢弃层输入单元的一部分,使网络更难学习训练数据中的那些虚假模式。相反,它必须搜索广泛的、通用的模式,其权重模式往往更加稳健。
6、L1 和 L2 正则化
L1正则化就是在loss function后边所加正则项为L1范数,加上L1范数容易得到稀疏解(0比较多)。L2正则化就是loss function后边所加正则项为L2范数的平方,加上L2正则相比于L1正则来说,得到的解比较平滑(不是稀疏),但是同样能够保证解中接近于0(但不是等于0,所以相对平滑)的维度比较多,降低模型的复杂度。
7、参考资料
机器学习防止欠拟合、过拟合方法
欠拟合和过拟合出现原因及解决方案
深度学习入门四----过拟合与欠拟合
深度学习入门五----Dropout and Batch Normalization
欠拟合的原因以及解决办法(深度学习)
过拟合的原因以及解决办法(深度学习)
机器学习中正则化项L1和L2的直观理解
L1正则化与L2正则化
欠拟合、过拟合现象,及解决办法相关推荐
- photoshop CS不能打字,出现死机等现象的解决办法!!
photoshop CS不能打字,程序出现没有响应死机等现象的解决办法!! 具体表现是: 使用文字工具时光标不闪,输入后不显示,删除也没有变化.几乎面临卡死机,程序没有响应的情况. 解好的解决办法:点 ...
- socket Php 粘包,python3 tcp的粘包现象和解决办法解析
这篇文章主要介绍了python3 tcp的粘包现象和解决办法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 服务器端 import socket ...
- java ee ide 假死_Eclipse编辑jsp、js文件时卡死现象的解决办法汇总
使用Eclipse编辑jsp.js文件时,经常出现卡死现象,在网上百度了N次,经过N次优化调整后,卡死现象逐步好转,具体那个方法起到作用,不太好讲.将所有用过的方法罗列如下: 1.取消验证 windo ...
- 苹果设置显示连接到服务器,iPhone升级更新至iOS9后显示连接到iCloud服务器错误现象的解决办法...
IOS9正式版系统已经推出了,很多用户也更新升级使用了,有部分伙伴发现将iPhone手机升级至IOS9后连接iCloud时出现错误的情况,那么,IOS9连接iCloud出错怎么办呢?针对此问题,本文就 ...
- mac 上php不可用,Mac_Mac蓝牙不可用怎么办?苹果电脑Mac蓝牙连不上iphone现象的解决办法介绍,Mac蓝牙不可用怎么办?有很多 - phpStudy...
Mac蓝牙不可用怎么办?苹果电脑Mac蓝牙连不上iphone现象的解决办法介绍 Mac蓝牙不可用怎么办?有很多的用户在升级Yosemite之后,一切正常.但是过了一天重新开机之后,却发现蓝牙不可用了! ...
- ubuntu文件管理器打不开,出现假死现象的解决办法记录
ubuntu文件管理器打不开,出现假死现象的解决办法记录 无论新建多少窗口,多少次双击一直出现这种文件管理器界面,一直进不去. 经了解, 一般是nautilus出错了,才出现假死现象,可以卸载之后重新 ...
- 过拟合和欠拟合以及相对应的解决办法
https://blog.csdn.net/qq_38462337/article/details/81777505 欠拟合:是指模型的学习能力比较低,以至于,只学到了很少的一部分信息,当进行预测的时 ...
- 全网最详细的Xshell或SecureCRT下spark-shell里出现无法退格或者删除的问题现象的解决办法(图文详解)...
不多说,直接上干货! 前言 打开spark的命令行后,发现输错字符了,但是无法退格或者删除,这是比较苦恼的问题. 这个问题,得看你是用Xshell,还是SecureCRT. 一般是出现在SecureC ...
- win7计算机u盘不显示盘符,win7 u盘不显示盘符怎么办?Win7 u盘盘符不显现象的解决办法介绍...
虽说win7系统相对于XP系统来说是一大进步,但它也有一些不良的地方.有时候,当你的U盘插入到电脑里面,却显示不出U盘的盘符,u盘盘符不显示怎么办.一般来说,电脑不显U盘盘符有两种情况,一种就是电脑本 ...
- ie浏览器下载门户网站的excel文档出现乱码现象的解决办法
1.有时候我们部署的网站的相关下载链接通过ie浏览器下载xls文档打开会出现乱码现象. 2.解决方法: 2.1 在部署包web.xml文档中加入如下配置: <!-- ie xls文件直接打开乱码 ...
最新文章
- linux清空文件内容
- 老外谈设计: 2015年WEB设计趋势
- Java NIO 系列教程 转
- 理解依赖注入(IOC)和学习Unity
- python 获取系统相关编码的函数
- Oracle归档日志与非归档日志的切换及路径设置
- __attribute__((section(section_name)))
- 菜鸟玩qt(9)---qt常见问题(转)
- vue 实现截图并获取截图的坐标_超好用的“电影截图”获取方式
- 在售后技术服务里,Kubernetes到底是什么? | 凌云时刻
- win10输入法变成繁体字如何解决
- python运行代码无反应_linux执行python命令后没有反应,不打印日志信息
- Swift 网络请求Moya框架简单二次封装
- 什么是集群?什么又是负载均衡?你未必说的清楚
- Tomcat无法启动,报错java.lang.NoClassDefFoundError: or...
- mysql 1032 update_解决mysql 1032 主从错误
- keras自然语言处理(五)
- 四六级重要单词(三)
- 设计色计算机色相对比知识,色彩要合理运用!色相对比原理!
- 钽电容、铝电解、陶瓷电容作为DCDC输出电容的比较