模型的欠拟合与过拟合及其解决方法

训练数据分成三部分:训练集,验证集和测试集

验证集和测试集均不参与模型训练迭代.

欠拟合:当训练集和验证集/测试集的误差都较大时,此时模型是欠拟合的,可以认为此时模型还无法有效捕捉训练数据中存在的基本信息来进行决策,此时模型的偏差较大

过拟合:当训练集误差很小,而验证集/测试集的误差较大时,此时模型是过拟合的,可以认为此时模型已经过度捕捉训练数据中存在的基本信息来,在对验证集和测试集进行决策时,稍微不同的数据就会导致模型的预测大不相同,也就是模型对未知的数据泛化能力较弱,此时模型的方差较大.

(二)、判断最佳模型
在训练模型时,使用验证集对当前的模型进行评估,主要观察训练集和验证集的损失函数loss是否一直在下降,训练集的损失函数一般会随着epoch的迭代次数的增加而持续降低,而验证集会先下降再上升,当验证集损失函数loss最小的时候,此时保存的模型的泛化性能最好,再往后验证集的损失开始上升,说明模型开始过拟合了。

(三)、欠拟合的解决方法:
模型欠拟合,表示模型不够复杂,捕捉的信息不多,因此需要增加模型的复杂性,也有可能是现在的数据量较少,模型学习到的有用信息过少,因此也可以考虑增加样本数量
1.增加参加训练的特征数量,增加模型的复杂度;
2.使用更复杂的模型:如提升法boosting等集成模型方法,降低偏差;
3.数据扩增
4.提高训练迭代的次数
5.减少正则化参数

(四)、过拟合的解决方法
模型复杂度太高,或者数据太少,可导致过拟合,因此考虑降低其复杂性或增强数据来避免过拟合
1.添加正则化,L1或者L2正则化,降低模型的复杂度:
2.集成学习方法bagging(如随机森林)能有效防止过拟合,降低方差
3.使用交叉验证方法
4.神经网络模型可通过dropout,earlystopping等方法增强模型的泛化能力
5.数据扩增
 

你可能感兴趣的:(深度学习,机器学习,python)