机器学习——正则化

1、欠拟合与过拟合
  • 欠拟合
    模型不能很好的描述数据,不具备足够的灵活性来适应数据的左右特征
    模型在验证集的表现与在训练集的表现类似,都不理想
  • 过拟合
    模型具有足够的灵活性近乎完美地适应了数据的所有特征,但过多地学习了数据的噪音,在适应数据所有特征的同时也适应了随机误差
    模型在验证集的表现远远不如在训练集的表现
    机器学习——正则化
    机器学习——正则化
    图片来源于:https://www.cnblogs.com/jianxinzhou/p/4083921.html
2、正则化

特征过多,同时只有非常少的训练数据,容易导致过拟合现象(代价函数非常接近0或者就等于0),这样的模型无法泛化到新的数据样本中。要解决过拟合的问题有以下2种方法:
(1)减少选取的特征数量
舍弃掉一部分较为不重要的特征,该方法的缺点是同时也失去了一部分有用信息
(2)正则化
正则化中我们将保留所有的特征变量,但是会减小特征变量的数量级(参数数值的大小θ(j))。
在损失函数J(θ)J(\theta)中加入一个惩罚项,从而实现参数值θ\theta较小,这些参数的值越小,通常对应于越光滑的函数,也就是更加简单的函数。因此 就不易发生过拟合的问题。

L2参数正则化(岭回归)
机器学习——正则化
其中在损失函数中加入的惩罚项为:
p=λj=1nθj2p=\lambda\displaystyle\sum_{j=1}^n\theta_j^2
λ\lambda:被称为正则化参数,取值范围[0,\infty]

L2参数正则化理解:
第一个目标是使模型更好地拟合训练数据
第二个目标是我们想要保持参数值较小。(通过正则化项)
λ\lambda 这个正则化参数需要控制的是这两者之间的平衡,即平衡拟合训练的目标和保持参数值较小的目标,从而来保持模型的形式相对简单,来避免过度的拟合。

正则化参数λ\lambda 的选择是控制最终模型复杂度的关键:

  • λ\lambda 很大(λ\lambda\rightarrow\infty)时,惩罚力度极大,会使得参数θ1\theta_1,θ2\theta_2,\cdots,θn\theta_n接近于0,导致欠拟合
  • λ\lambda 很小(λ0\lambda\rightarrow0)时,惩罚力度极小,模型的过拟合问题无法得到解决

为了使正则化运作良好,我们应该去选择一个不错的正则化参数 λ\lambda

L1参数正则化(Lasso正则化)
正则化项为:
p=λj=1nθjp=\lambda\displaystyle\sum_{j=1}^n|\theta_j|
λ\lambda:被称为正则化参数,取值范围[0,\infty]

L2正则化与L1正则化的区别:

  • L1正则化可以使得参数稀疏化,即得到的参数是一个稀疏矩阵,可以用于特征选择。
  • L2正则化可以防止模型过拟合(overfitting);一定程度上,L1也可以防止过拟合。

稀疏性:就是模型的很多参数是0。在预测或分类时,那么多特征显然难以选择,但是如果代入这些特征得到的模型是一个稀疏模型,很多参数是0,表示只有少数特征对这个模型有贡献,绝大部分特征是没有贡献的,即使去掉对模型也没有什么影响,此时我们就可以只关注系数是非零值的特征。这相当于对模型进行了一次特征选择,只留下一些比较重要的特征,提高模型的泛化能力,降低过拟合的可能。

如何选择正则化参数λ\lambda
从0开始,逐渐增大λ。在训练集上学习到参数,然后在测试集上验证误差。反复进行这个过程,直到测试集上的误差最小。一般的说,随着λ从0开始增大,测试集的误分类率应该是先减小后增大,交叉验证的目的,就是为了找到误分类率最小的那个位置。建议一开始将正则项系数λ设置为0,先确定一个比较好的learning rate。然后固定该learning rate,给λ一个值(比如1.0),然后根据validation accuracy,将λ增大或者减小10倍,增减10倍是粗调节,当你确定了λ的合适的数量级后,比如λ=0.01,再进一步地细调节,比如调节为0.02,0.03,0.009之类。