(180923)通过正则化降低特征组合过度 模型过于复杂---机器学习速成
问题提出及正则化的引入
正则化的提出同样是解决模型过拟合问题,之前提出的特征组合来训练模型,当训练次数足够多时,损失会降低到非常的低,但却会出现过拟合问题。如图
迭代次数足够多,模型的复杂度也越高。可见一个好的模型和损失、模型的复杂度都有关。
所以,训练优化算法是一个由两项内容组成的函数:一个是损失项,用于衡量模型与数据的拟合度,另一个是正则化项,用于衡量模型复杂度。
所以,什么是正则化? 降低复杂模型的复杂度来避免过拟合的原则就是正则化。
如何定义复杂度
- 将模型复杂度作为模型中所有特征的权重的函数。
- 将模型复杂度作为具有非零权重的特征总数的函数。
对于第一种方式(特征的权重的函数),权重的绝对值越高,对复杂度的贡献越大。
使用L2正则化量化复杂度
L2正则化(也称岭正则化):所有权重的平方和,对权重的平方和的惩罚。
如何对模型正则化
- 早停法:训练数据的效果实际收敛前停止训练,就是上图中红线抵达最低点时停止训练。实际中操作难度很大。
- 对模型添加惩罚项
重新定义算法,在损失函数的基础上添加惩罚项(损失 + λ * 惩罚)。
执行 L2 正则化对模型具有以下影响
- 使权重值接近于 0(但并非正好为 0)
- 使权重的平均值接近于 0,且呈正态(钟形曲线或高斯曲线)分布。
λ选择问题
λ,正则化率。增大,会增强正则化的效果,但往往会造成欠拟合问题;减小,会出现过拟合问题。如何选择,依据训练的数据而定。
注意的是学习速率和λ不是对等的概念,但关系紧密。
测试中提及,将正则化率从 0 增至 0.3 (从0增大)会产生以下影响:
- 测试损失明显减少。
注意:虽然测试损失明显减少,训练损失实际上却有所增加。这属于正常现象,因为您向损失函数添加了另一项来降低复杂度。最终,最重要的是测试损失,因为它是真正用于衡量模型能否针对新数据做出良好预测的标准。
- 测试损失与训练损失之间的差值明显减少。
- 特征和某些特征组合的权重的绝对值较低,这表示模型复杂度有所降低。
由于数据集具有随机性,因此无法预测哪个正则化率能得出最准确的结果。 对我们来说,正则化率为 0.3 或 1 时,一般测试损失降至最低。