前言
在机器学习或深度学习中,经常会出现欠拟合和过拟合这两个问题。一开始模型往往是欠拟合的,需要神经网络优化权重参数,达到拟合的结果。但是参数优化到一定程度就需要解决过拟合的问题了。
拟合一般分为欠拟合、过拟合、刚好拟合这三种。
实际上,我们需要模型给我们的是一个刚好拟合的状态,也就是不偏不倚。这样模型既学习到了数据的特征(不欠拟合),也会有更好的泛化能力(不过拟合)。
一、过拟合
过拟合就是模型把数据学习的太彻底,以至于把噪声数据的特征也学习到了,这样就会导致在后期测试的时候不能够很好地识别数据。
1.1 过拟合产生的原因
-
数据噪声过大。
-
训练数据太少。
-
模型训练过度。
-
模型过于复杂。
1.2 过拟合的解决办法
-
重新清洗数据,降低数据噪声,将错误的label纠正或者删除错误的数据。样本数据=真实数据+噪声数据。
-
增大数据的训练量,让模型可以提取更多的数据特征。
-
训练提前停止,就是让模型在训练的差不多的时候就停下来,比如继续训练带来提升不大或者连续几轮训练都不带来提升的时候,这样可以避免只是改进了训练集的指标但降低了测试集的指标。
-
采用正则化方法。正则化方法主要包括L1正则和L2正则,正则一般是在损失函数之后加上对应的范数,正则化可以看做是损失函数的惩罚项。
-
dropout
Dropout是一种正则化技术,可防止网络过度拟合。顾名思义,在训练期间,隐藏层中的一定数量的神经元被随机地丢弃,让神经元以一定的概率不工作。这意味着训练发生在神经网络的不同组合的神经网络的几个架构上。你可以将Dropout视为一种综合技术,然后将多个网络的输出用于产生最终输出。训练时部分激活,验证时全部激活。
二、欠拟合
欠拟合就是模型没有很好地捕捉到数据特征,不能够很好地拟合数据。
1.1 欠拟合产生的原因及解决办法
-
数据的特征项不够(ML),可以添加其他特征项来很好地解决。
-
训练时间不够(DL),可以增加训练时间,使模型学习到更多的特征。
-
模型过于简单(DL),无法提取数据的高维特征,增大模型以获取更多特征。
-
添加多项式特征,这个在机器学习算法里面用的很普遍,例如将线性模型通过添加二次项或者三次项使模型泛化能力更强。
-
减少正则化参数,正则化的目的是用来防止过拟合的,但是现在模型出现了欠拟合,则需要减少正则化参数。