【机器学习】正则化

本文为机器学习的学习总结,讲解回归模型的正则化。

过拟合问题

我们用房屋价格预测的例子来说明过拟合问题。房屋价格的训练集为:

在这里插入图片描述

  • 第一个图中,随着 Size 的增长,房屋价格会逐渐平稳,线性函数不是一个好的拟合结果,这种情况称为“欠拟合”,也称算法具有高偏差。

  • 第二个图中使用二次函数进行拟合,拟合结果较好。

  • 第三个图中选择了用高阶多项式进行拟合,曲线可以完美地经过训练集中的每一个样本点,但是曲线十分扭曲,这也不是一个好的拟合结果,我们将这种情况称为“过拟合”,或称为这个算法具有高方差。

过拟合问题通常出现在变量过多的情况下,代价函数十分接近或等于 0,曲线十分努力的拟合样本,导致它无法泛化到新的样本中,无法预测新样本的价格。

同样,逻辑回归中的过拟合问题如下;

在这里插入图片描述

当我们讲到调试和诊断导致学习算法出错的问题时,会讲解如何用专门工具识别过拟合和欠拟合问题。现在我们讨论当过拟合问题发生时该如何解决。在前面讲回归模型时,我们可以通过绘制假设模型函数的图像选择合适的多项式阶数。但在实际情况中,我们可能有很多的特征变量,很难画出多维的图像。当我们有过多的特征变量和但数据过少时,就会产生过拟合问题。

为了解决过拟合问题,我们有下面两个方法:

  1. 尽量减少特征变量的数量。手动检查,删去不重要的特征。在后面的文章中,我们会讲到模型选择算法,可自动对特征变量进行筛选。但其会舍弃一部分特征变量,丢失一些相关的信息。
  2. 正则化。保留所有的特征变量,但是较少量级或参数 θ j \theta_j θj 的大小

代价函数

对于房屋预测模型,我们有两个拟合函数:

在这里插入图片描述

我们在代价函数中加入惩罚项,使得 θ 3 , θ 4 \theta_3,\theta_4 θ3,θ4 很小。例如在代价函数中加入 + 1000 θ 3 2 + + 1000 θ 4 2 +1000\theta_3^2++1000\theta_4^2 +1000θ32++1000θ42,其中 1000 只是随便选的一个很大的数字。因为 1000 很大,我们要最小化代价函数,就要使得 θ 3 , θ 4 \theta_3,\theta_4 θ3,θ4 很小,即惩罚部分的值为 0。这样,上面过拟合的曲线就会变成二次函数,能够很好的拟合曲线。

正则化的思想就是加入惩罚,增大参数带来的效果。如果我们选择的参数较小,意味着更简单的模型,如果将所有的参数都加入到代价函数中,则可以尽量地简化模型,也更不容易出现过拟合问题。因此代价函数为:
J ( θ ) = 1 2 m ∑ i = 1 m [ ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ i = 1 n θ j 2 ] J(\theta)=\frac{1}{2m}\sum_{i=1}^m[(h_θ(x^{(i)})-y^{(i)})^2+\lambda\sum\limits_{i=1}^n\theta_j^2] J(θ)=2m1i=1m[(hθ(x(i))y(i))2+λi=1nθj2]
无需对 θ 0 \theta_0 θ0 进行惩罚。

  • 代价函数第一部分为目标函数,为了更好地拟合数据
  • 第二部分 λ ∑ i = 1 n θ j 2 \lambda\sum\limits_{i=1}^n\theta_j^2 λi=1nθj2 被称为正则项,为了保持参数尽量小
  • λ \lambda λ 被称为正则化参数,控制两个目标间的平衡关系。如果 λ \lambda λ 选择过大,即对参数惩罚过重,则参数均约等于 0,此时 h θ ( x ) = θ 0 h_\theta(x)=\theta_0 hθ(x)=θ0,相当于用直线进行拟合,是欠拟合的。因此我们需要选择一个合适的 λ \lambda λ

在后面的文章中,我们在多重选择时会讲到很多方法自动选择正则化参数 λ \lambda λ

线性回归的正则化

我们将正则化应用到线性回归中的梯度下降法和正规方程。

梯度下降法

原来梯度下降法更新式为:
θ j : = θ j − α ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_j:=\theta_j-\alpha\sum\limits_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)} θj:=θjαi=1m(hθ(x(i))y(i))xj(i)
因为我们的惩罚对象中没有 θ 0 \theta_0 θ0,单独写出 j = 0 j=0 j=0 项:
θ 0 : = θ 0 − α ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) \theta_0:=\theta_0-\alpha\sum\limits_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_0^{(i)} θ0:=θ0αi=1m(hθ(x(i))y(i))x0(i)
在剩余项中加入惩罚项,求导后得到:
θ j : = θ j − α ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) + λ m θ j ( j = 1 , 2 , … , n ) \theta_j:=\theta_j-\alpha\sum\limits_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}+\frac{\lambda}{m}\theta_j \qquad (j=1,2,…,n) θj:=θjαi=1m(hθ(x(i))y(i))xj(i)+mλθj(j=1,2,,n)
合并 θ j \theta_j θj 后有:
θ j : = θ j ( 1 − α λ m ) − α ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_j:=\theta_j(1-\alpha\frac{\lambda}{m})-\alpha\sum\limits_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)} θj:=θj(1αmλ)αi=1m(hθ(x(i))y(i))xj(i)
其中 1 − α λ m 1-\alpha\frac{\lambda}{m} 1αmλ 是一个略小于 1 的数字,因为通常学习率 α \alpha α 很小而样本数量 m m m 很大,可将其看作 0.99。上式的意义为,将 θ j \theta_j θj (的平方范数)缩小了一点,其余部分与线性回归中相同。

正规方程法

线性回归模型的正规方程法见【线性回归模型】。其推导为:通过令 ∂ ∂ θ j J ( θ ) = 0 \frac{\partial}{\partial\theta_j}J(θ)=0 θjJ(θ)=0,然后进行一些数学推导得到解。这里我们在 J ( θ ) J(\theta) J(θ) 中加入惩罚项,推导后得到结果:
θ = ( X T X + λ [ 0 0 ⋯ 0 0 1 0 ⋮ ⋮ 0 ⋱ ⋮ 0 ⋯ ⋯ 1 ] ) − 1 X T y \theta=(X^TX+\lambda\left[ \begin{matrix} 0 & 0 & \cdots & 0\\ 0 & 1 & 0 & \vdots \\ \vdots & 0 & \ddots & \vdots \\ 0 & \cdots & \cdots & 1 \end{matrix} \right])^{-1}X^Ty θ=(XTX+λ000010001)1XTy
中间的矩阵是 n + 1 n+1 n+1 维的方阵,除了左上角为 0,对角线上其它元素都为 1。

不可逆问题(可选)

这部分内容对后面学习的衔接没有直接的影响,不感兴趣可以跳过。

我们在【线性回归模型】中讨论过正规方程的不可逆问题,即 X T X X^TX XTX 不可逆的问题,虽然 piv() 能求出一个解,但其并不是最优解。而在正规方程中加入正则化,我们可以证明:当 λ > 0 \lambda>0 λ>0 时, X T X + λ M a t r i x X^TX+\lambda Matrix XTX+λMatrix 一定可逆。因此正则化还可以解决不可逆的问题。

逻辑回归的正则化

我们在逻辑回归的代价函数中添加惩罚项:
J ( θ ) = − 1 m [ ∑ i = 1 m ( y ( i ) log ⁡ h θ ( x ( i ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ] + λ 2 m ∑ j = 1 n θ j 2 J(\theta)=-\frac{1}{m}[\sum\limits_{i=1}^m(y^{(i)}\log h_\theta(x^{(i)})+(1-y^{(i)})\log(1-h_\theta(x^{(i)}))]+\frac{\lambda}{2m}\sum\limits_{j=1}^n\theta_j^2 J(θ)=m1[i=1m(y(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]+2mλj=1nθj2
在梯度下降算法中,类似线性回归中的梯度下降,只是 h θ ( x ) h_\theta(x) hθ(x) 的形式不同。求导后得到:
θ j : = θ j − α ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) + λ m θ j ( j = 1 , 2 , … , n ) \theta_j:=\theta_j-\alpha\sum\limits_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}+\frac{\lambda}{m}\theta_j \qquad (j=1,2,…,n) θj:=θjαi=1m(hθ(x(i))y(i))xj(i)+mλθj(j=1,2,,n)
在高级优化算法中使用正则化,只需要在计算代价函数和梯度时加入惩罚项。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值