目录
1. 过拟合
1.1 过拟合的定义
定义1(摘自周志华机器学习):当学习器把训练样本学的“太好”了的时候,很可能已经把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这样就会导致泛化性能下降,这种现象称为过拟合。
定义2:具体表现就是最终模型在训练集上效果好;在测试集上效果差。模型泛化能力弱。
具体表现就是最终模型在训练集上效果好;在测试集上效果差。模型泛化能力弱。
1.2 过拟合的原因
- 训练数据中噪音干扰过大,使得学习器认为部分噪音是特征从而扰乱学习规则。
- 建模样本选取有误,例如训练数据太少,抽样方法错误,样本label错误等,导致样本不能代表整体。
- 模型不合理,或假设成立的条件与实际不符。
- 特征维度/参数太多,导致模型复杂度太高。
1.3 过拟合的解决办法
过拟合无法彻底避免,只能缓解。
从3个角度:
1)数据:
- 从数据源头获取更多数据
- 根据当前数据集估计数据分布参数,使用该分布产生更多数据。这个方法一般不用,因为估计参数分布的过程也会带入抽样误差。
- 数据增强(Data Augmentation):通过一定规则扩充数据。如物体在图像中的位置、姿态、尺度、整体图片明暗度等都不会影响分类结果。我们可以通过图像平移、反转、缩放、切割等手段将数据库成倍扩充。
- 保留验证集
- 获取额外数据进行交叉验证
2)模型:
- 降低模型复杂度:
a. 对于神经网络:减少网络的层数、神经元个数等均可以限制网络的拟合能力。dropout,在向前传播的时候,让某个神经元的激活值以一定的概率p停止工作,这样可以使模型的泛化性更强,因为它不会太依赖某些局部的特征。。
b. 对于决策树:限制树深,剪枝,限制叶节点数量。
c. 增大分割平面间隔 - 特征选择、特征降维
- early stopping
- 正则化(限制权值weight-decay):将权值的大小作为惩罚项加入到损失函数里。
- 增加噪声:
a. 在输入中加噪声
噪声会随着网络传播,按照权值的平方放大,并传播到输出层,会在输出中生成 ∑ i σ i 2 ⋅ w i 2 \sum_i \sigma^2_i \cdot w_i^2 ∑iσi2⋅wi2的干扰项。训练时减小损失函数时也会减小权值,与L2正则化有类似效果。
b. 在权值上加噪声
在初始化网络的时候,用0均值的高斯分布作为初始化
c. 对网络等响应加噪声
在前向传播的过程中,让某些神经元的输出变为random,从而打乱网络的训练过程,让训练更慢。
3)ensemble:
- Bagging:从训练集中自助采样,训练多个相互独立的弱学习器,通过一定结合策略形成一个强学习器。
- Boosting: 初始化训练一个基学习器→根据表现调整样本分布(预测错误的样本在后续收到更多关注)→训练下一个基学习器→多个学习器加权结合。
还有贝叶斯方法(现在还不会)。
2. 欠拟合
2.1 欠拟合的定义
欠拟合是指对训练样本的一般性质尚未学好。在训练集及测试集上的表现都不好。
2.2 欠拟合的原因
1)模型复杂度过低
2)特征量过少
2.3 欠拟合的解决办法
-
增加特征数;
当特征不足或者现有特征与样本标签的相关性不强时,模型易出现欠拟合。
可以通过挖掘上下文特征,ID类特征,组合特征等新的特征,可以取得较好的效果。这属于特征工程相关的内容,如因子分解机,梯度提升决策树,deep_crossing都可以丰富特征。 -
增加模型复杂度;
模型简单时其表达能力较差,容易导致欠拟合,因此可以适当地增加模型复杂度,使模型拥有更强的拟合能力。
如线性模型中添加高次项,神经网络中增加网络层数或神经元个数。尝试非线性模型,比如核SVM 、决策树、DNN等模型。 -
减小正则化系数。
正则化是用于防止过拟合的,但是当出现欠拟合时,就有必要针对性地减小正则化系数。 -
Boosting,Boosting 往往会有较小的 Bias。
3. 面试题
3.1 从Bagging和正则化的角度理解Dropout?
Bagging角度:Bagging“综合起来取平均”的策略通常可以有效防止过拟合问题。dropout掉不同的隐藏神经元就类似在训练不同的网络,随机删掉一些隐藏神经元导致网络结构已经不同,整个dropout过程就相当于对很多个不同的神经网络取平均。而不同的网络产生不同的过拟合,一些互为“反向”的拟合相互抵消就可以达到整体上减少过拟合。
正则化角度:因为dropout程序导致两个神经元不一定每次都在一个dropout网络中出现。这样权值的更新不再依赖于有固定关系的隐含节点的共同作用,阻止了某些特征仅仅在其它特定特征下才有效果的情况 。迫使网络去学习更加鲁棒的特征 ,这些特征在其它的神经元的随机子集中也存在。换句话说假如我们的神经网络是在做出某种预测,它不应该对一些特定的线索片段太过敏感,即使丢失特定的线索,它也应该可以从众多其它线索中学习一些共同的特征。从这个角度看dropout就有点像L1,L2正则,减少权重使得网络对丢失特定神经元连接的鲁棒性提高。