机器学习——正则化
1、欠拟合与过拟合
-
欠拟合
模型不能很好的描述数据,不具备足够的灵活性来适应数据的左右特征
模型在验证集的表现与在训练集的表现类似,都不理想 -
过拟合
模型具有足够的灵活性近乎完美地适应了数据的所有特征,但过多地学习了数据的噪音,在适应数据所有特征的同时也适应了随机误差
模型在验证集的表现远远不如在训练集的表现
图片来源于:https://www.cnblogs.com/jianxinzhou/p/4083921.html
2、正则化
特征过多,同时只有非常少的训练数据,容易导致过拟合现象(代价函数非常接近0或者就等于0),这样的模型无法泛化到新的数据样本中。要解决过拟合的问题有以下2种方法:
(1)减少选取的特征数量
舍弃掉一部分较为不重要的特征,该方法的缺点是同时也失去了一部分有用信息
(2)正则化
正则化中我们将保留所有的特征变量,但是会减小特征变量的数量级(参数数值的大小θ(j))。
在损失函数中加入一个惩罚项,从而实现参数值较小,这些参数的值越小,通常对应于越光滑的函数,也就是更加简单的函数。因此 就不易发生过拟合的问题。
L2参数正则化(岭回归)
其中在损失函数中加入的惩罚项为:
:被称为正则化参数,取值范围[0,]
L2参数正则化理解:
第一个目标是使模型更好地拟合训练数据
第二个目标是我们想要保持参数值较小。(通过正则化项)
而 这个正则化参数需要控制的是这两者之间的平衡,即平衡拟合训练的目标和保持参数值较小的目标,从而来保持模型的形式相对简单,来避免过度的拟合。
正则化参数 的选择是控制最终模型复杂度的关键:
- 当 很大()时,惩罚力度极大,会使得参数,,,接近于0,导致欠拟合
- 当 很小()时,惩罚力度极小,模型的过拟合问题无法得到解决
为了使正则化运作良好,我们应该去选择一个不错的正则化参数
L1参数正则化(Lasso正则化)
正则化项为:
:被称为正则化参数,取值范围[0,]
L2正则化与L1正则化的区别:
- L1正则化可以使得参数稀疏化,即得到的参数是一个稀疏矩阵,可以用于特征选择。
- L2正则化可以防止模型过拟合(overfitting);一定程度上,L1也可以防止过拟合。
稀疏性:就是模型的很多参数是0。在预测或分类时,那么多特征显然难以选择,但是如果代入这些特征得到的模型是一个稀疏模型,很多参数是0,表示只有少数特征对这个模型有贡献,绝大部分特征是没有贡献的,即使去掉对模型也没有什么影响,此时我们就可以只关注系数是非零值的特征。这相当于对模型进行了一次特征选择,只留下一些比较重要的特征,提高模型的泛化能力,降低过拟合的可能。
如何选择正则化参数
从0开始,逐渐增大λ。在训练集上学习到参数,然后在测试集上验证误差。反复进行这个过程,直到测试集上的误差最小。一般的说,随着λ从0开始增大,测试集的误分类率应该是先减小后增大,交叉验证的目的,就是为了找到误分类率最小的那个位置。建议一开始将正则项系数λ设置为0,先确定一个比较好的learning rate。然后固定该learning rate,给λ一个值(比如1.0),然后根据validation accuracy,将λ增大或者减小10倍,增减10倍是粗调节,当你确定了λ的合适的数量级后,比如λ=0.01,再进一步地细调节,比如调节为0.02,0.03,0.009之类。