概念
训练集是数据生成分布的采样,训练集所估计的经验分布是数据生成分布的近似,由于训练集的有限性,近似的分布在细节上与数据生成分布存在着差异。过拟合是指模型错把训练集自身的细节,当作数据生成分布的一般性质来学习,从而导致模型泛化性能的降低。
鉴别
训练集上的经验误差在下降(偏差小),验证集上的误差(泛化误差)在上升
预防策略
本文从数据、模型、参数估计方法三个角度来描述防止过拟合的方法
数据角度
- 特征维度考虑:可以对进行特征降维(如无监督降维PCA,有监督降维LDA)、特征选择(过滤式Relief、包裹式Las Veags、嵌入式L1,L2,决策树)
- 数据增强:数据加噪音
模型角度
这部分从线性模型、决策树与集成、深度学习三个方面来描述。
线性模型
- 感知机:感知机针对二分类问题,没有什么好的策略,应该从数据角度考虑。
- LR : LR+L1(Lasso回归); LR+L2(ridge回归); LR+L1+L2(Elastic回归)
- Logistic Regression: 加权重正则化
- SVM:简单核函数(如linear kernel), 减小超参数C(C调节经验损失hinge loss的重要性)
决策树与集成
决策树(预减枝+后减枝)
boosting集成关注于减低偏差:树简单点,基学习器数量应该少一些
bagging集成关注于减低方差:单模型简单点,基学习器可以多一些
深度学习
- 数据角度
数据增强: 亮度、对比度、色温、遮挡、resize_and_random_crop、加噪音
- 网络结构角度,降低模型复杂度
网络层数、隐藏单元少一点
残差结构(让网络自适应深度)
Dropout层(相当于多个半数网络的bagging集成)
- 损失函数角度
权重正则化; 自定义邻域正则化损失(过拟合本质上测试集上泛化性差,可以把领域约束信息添加到损失或者模型中去,比如遮挡+attention 机制)
- 训练角度
早停(如果验证集损失不再下降,就早停)
参数估计角度
参数估计的方法有矩估计、极大似然估计、贝叶斯估计。机器学习中使用最多的是极大似然估计与贝叶斯估计。最大似然估计认为参数是确定的一个值,贝叶斯估计假设参数服从一个先验分布,并计算参数的后验分布,然后基于参数的后验分布来预测。由于考虑了参数的各种可能,所以在小数据集上贝叶斯估计效果通常比最大似然估计好。但是贝叶斯估计计算复杂,在数据集很大时会带来很大的计算代价。贝叶斯估计与最大似然估计的折中为参数的最大后验概率估计,可以得到线性回归+L2权重正则化可以看作是基于高斯先验的最大后验概率估计. 综上,从参数估计角度可以考虑参数的最大后验概率估计。