【过拟合】防止模型过拟合的必备方法!
点击上方,选择星标,每天给你送干货!
来自|机器之心 作者|Mahitha
链接|https://mahithas.medium.com/overfitting-identify-and-resolve-df3e3fdd2860
正如巴菲特所言:「近似的正确好过精确的错误。」
在机器学习中,过拟合(overfitting)会使模型的预测性能变差,通常发生在模型过于复杂的情况下,如参数过多等。本文对过拟合及其解决方法进行了归纳阐述。
在机器学习中,如果模型过于专注于特定的训练数据而错过了要点,那么该模型就被认为是过拟合。该模型提供的答案和正确答案相距甚远,即准确率降低。这类模型将无关数据中的噪声视为信号,对准确率造成负面影响。即使模型经过很好地训练使损失很小,也无济于事,它在新数据上的性能仍然很差。欠拟合是指模型未捕获数据的逻辑。因此,欠拟合模型具备较低的准确率和较高的损失。
如何确定模型是否过拟合?
构建模型时,数据会被分为 3 类:训练集、验证集和测试集。训练数据用来训练模型;验证集用于在每一步测试构建的模型;测试集用于最后评估模型。通常数据以 80:10:10 或 70:20:10 的比率分配。
在构建模型的过程中,在每个 epoch 中使用验证数据测试当前已构建的模型,得到模型的损失和准确率,以及每个 epoch 的验证损失和验证准确率。模型构建完成后,使用测试数据对模型进行测试并得到准确率。如果准确率和验证准确率存在较大的差异,则说明该模型是过拟合的。
如果验证集和测试集的损失都很高,那么就说明该模型是欠拟合的。
如何防止过拟合
交叉验证
交叉验证是防止过拟合的好方法。在交叉验证中,我们生成多个训练测试划分(splits)并调整模型。K-折验证是一种标准的交叉验证方法,即将数据分成 k 个子集,用其中一个子集进行验证,其他子集用于训练算法。
交叉验证允许调整超参数,性能是所有值的平均值。该方法计算成本较高,但不会浪费太多数据。交叉验证过程参见下图:
用更多数据进行训练
用更多相关数据训练模型有助于更好地识别信号,避免将噪声作为信号。数据增强是增加训练数据的一种方式,可以通过翻转(flipping)、平移(translation)、旋转(rotation)、缩放(scaling)、更改亮度(changing brightness)等方法来实现。
移除特征
移除特征能够降低模型的复杂性,并且在一定程度上避免噪声,使模型更高效。为了降低复杂度,我们可以移除层或减少神经元数量,使网络变小。
早停
对模型进行迭代训练时,我们可以度量每次迭代的性能。当验证损失开始增加时,我们应该停止训练模型,这样就能阻止过拟合。
下图展示了停止训练模型的时机:
正则化
正则化可用于降低模型的复杂性。这是通过惩罚损失函数完成的,可通过 L1 和 L2 两种方式完成,数学方程式如下:
L1 惩罚的目的是优化权重绝对值的总和。它生成一个简单且可解释的模型,且对于异常值是鲁棒的。
L2 惩罚权重值的平方和。该模型能够学习复杂的数据模式,但对于异常值不具备鲁棒性。
这两种正则化方法都有助于解决过拟合问题,读者可以根据需要选择使用。
Dropout
Dropout 是一种正则化方法,用于随机禁用神经网络单元。它可以在任何隐藏层或输入层上实现,但不能在输出层上实现。该方法可以免除对其他神经元的依赖,进而使网络学习独立的相关性。该方法能够降低网络的密度,如下图所示:
总结
过拟合是一个需要解决的问题,因为它会让我们无法有效地使用现有数据。有时我们也可以在构建模型之前,预估到会出现过拟合的情况。通过查看数据、收集数据的方式、采样方式,错误的假设,错误表征能够发现过拟合的预兆。为避免这种情况,请在建模之前先检查数据。但有时在预处理过程中无法检测到过拟合,而是在构建模型后才能检测出来。我们可以使用上述方法解决过拟合问题。
原文链接:https://mahithas.medium.com/overfitting-identify-and-resolve-df3e3fdd2860
说个正事哈由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:(1)点击页面最上方“深度学习自然语言处理”,进入公众号主页。(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。
感谢支持,比心。投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。
方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。记得备注呦推荐两个专辑给大家:专辑 | 李宏毅人类语言处理2020笔记专辑 | NLP论文解读专辑 | 情感分析整理不易,还望给个在看!
【过拟合】防止模型过拟合的必备方法!相关推荐
- 模型过拟合原因及解决办法
模型过拟合原因及解决办法 过拟合现象 导致过拟合原因 解决办法 过拟合现象 对于样本量有限.但需要使用强大模型的复杂任务,模型很容易出现过拟合的表现,即在训练集上的损失小,在验证集或测试集上的损失较大 ...
- 机器学习(12)欠拟合过拟合、模型分析与正则化
目录 一.欠拟合 二.过拟合 三.模型分析 四.正则化 4-1.L2正则化 4-2.L1正则化 一.欠拟合 机器学习的特征过少,导致预测不准确.(训练集和测试集表现都不好) 解决方法:增加数据的特征数 ...
- R语言lm函数拟合多项式回归模型、删除数据中的异常样本outlier、之后诊断模型( diagnostics)、使用plot函数打印回归模型的QQ图、残差拟合图、标度-位置图、残差与杠杆关系图
R语言使用lm函数拟合多项式回归模型( Polynomial regression).删除数据中的异常样本(outliser).之后再次诊断模型(Regression diagnostics).使用p ...
- R语言偏相关或者部分相关性系数计算实战:使用psych包计算(Partial Correlation)偏相关系数、拟合回归模型使用两个回归模型的残差计算偏相关性系数
R语言偏相关或者部分相关性系数计算实战:使用psych包计算(Partial Correlation)偏相关系数.拟合回归模型使用两个回归模型的残差计算偏相关性系数 目录
- R语言glmnet交叉验证选择(alpha、lambda)拟合最优elastic回归模型:弹性网络(elasticNet)模型选择最优的alpha值、模型最优的lambda值,最终模型的拟合与评估
R语言glmnet交叉验证选择(alpha参数和lambda参数)拟合最优elastic回归模型:弹性网络(elasticNet)模型选择最优的alpha值.弹性网络(elasticNet)模型最优的 ...
- 【机器学习】一文深层解决模型过拟合
一.过拟合的本质及现象 过拟合是指模型只过分地匹配特定训练数据集,以至于对训练集外数据无良好地拟合及预测.其本质原因是模型从训练数据中学习到了一些统计噪声,即这部分信息仅是局部数据的统计规律,该信息没 ...
- 【机器学习基础】说模型过拟合的时候,说的是什么?
前言 机器学习中,模型的拟合效果意味着对新数据的预测能力的强弱(泛化能力).而程序员评价模型拟合效果时,常说"过拟合"及"欠拟合",那究竟什么是过/欠拟合呢?什 ...
- 过拟合与模型调优(part1)--过拟合,模型调优,数据分割
学习笔记,仅供参考,有错必纠 PS : 本BLOG采用中英混合模式,有些英文下有中文翻译 文章目录 名词解释 模型调优 过拟合问题 模型调优 数据分割 名词解释 模型调优 we will assume ...
- arima模型怎么拟合_7个统计测试,用于验证和帮助拟合ARIMA模型
arima模型怎么拟合 什么是ARIMA? (What is ARIMA?) ARIMA models are one of the most classic and most widely used ...
- 平稳序列的预测和拟合之模型优化
目录 前提 准则 1.AIC准则 2.SBC (BIC)准则 优化 小结 前提 问题提出:模型通过检验,说明是有效的,但有效的模型不唯一. 下面我们用一个例子来解释一下: 例4-7:试对某次化学反应的 ...
最新文章
- 一文读懂对抗机器学习Universal adversarial perturbations | CSDN博文精选
- R语言Box-Cox变换实战(Box-Cox Transformation):将非正态分布数据转换为正态分布数据、计算最佳λ、变换后构建模型
- spark安装须知:SPARK_DIST_CLASSPATH配置
- Java开发中 Double 和 float 不能直接运算
- Leetcode--172. 阶乘后的零
- Super VLAN
- 树莓派python gpio 模仿iic_树莓派高级GPIO库,wiringpi2 for python使用笔记(五)i2c读取测试...
- 相似度计算 java_Java基于余弦方法实现的计算相似度算法示例
- ubuntu 安装 sublime
- 1.3 Zend_Acl (3)
- Ajax读书笔记(四)
- 计算机专业专硕考研数学考一还是二,计算机专业考研数学考一还是二
- Java编程:将具有父子关系的数据库表数据转换为树形结构,支持无限层级
- CSP 202112-3 登机牌条码 (详细图解)
- 计算机音乐专业考研,武汉音乐学院2021年硕士研究生招生考试《计算机音乐作曲》考试大纲...
- android测试篇(四)android专项测试之压力测试
- jsp2022326税务税收协同办公系统
- 2022年广西食品安全管理员模拟试题及答案
- Runtime.getRuntime().availableProcessors()
- ngrok穿透服务器搭建
热门文章
- eFrameWork学习笔记-eList
- imx6 android power off
- Eclipse : Android requires compiler compliance level 5.0 or 6.0.
- 顶尖,何为顶尖?你知道吗?我知道..
- 利用python获取nginx服务的ip以及流量统计信息
- 4.数据库数据导入查询数据库信息出现乱码问题
- BZOJ 2763 飞行线路
- 人像处理:不要用减淡工具了!用柔光叠加去擦!加深也不如正片叠底
- git卡在Resolving deltas 100%的解决办法
- 设计模式之六 --- 抽象工厂模式(Abstract Factory)