47-模型泛化与岭回归

模型正则化(Regularization)

  在上一篇博客提到了过拟合这样的问题或者解决我们的模型中含有巨大的方差这样的问题,其中有一种非常标准的处理手段就是模型正则化(Regularization)

  那什么是模型正则化呢?看下图这个例子,这个图就是我们之前使用多项式回归过拟合的一个例子。对于这根曲线来说,该多项式前的有一些系数会非常大,模型正则化做的事情就是希望能够限制这些系数的大小
47-模型泛化与岭回归

在这里,我们简单的验证一下过拟合的情况下前面系数是否非常大。

47-模型泛化与岭回归
47-模型泛化与岭回归
47-模型泛化与岭回归
47-模型泛化与岭回归
  那么模型正则化是怎样解决这个问题呢?

  我们回到线性回归问题中,最终求得的是一个最优解。

47-模型泛化与岭回归
  然后我们最终将目标式子化简成:

47-模型泛化与岭回归
  但是这里如果我们过拟合的话,这里的 θ θ θ 就会非常大,那么我们怎么限制 θ θ θ 的系数不要太大呢?答案就是改变一下我们的损失函数,我们将我们的损失函数加入模型正则化:
47-模型泛化与岭回归
  我们在目标函数后面加了一项,那一项就是所有系数的平方和再乘以一个常数 α / 2 α/2 α/2。所以我们想让添加的一项尽可能的小,就要使得所有的 θ θ θ 尽可能小,这就是模型正则化的基本原理。

  但是这个式子有一个值得注意的点, i i i 是从 1 到 n n n 的,而不是从 0 开始的,意味着它不包括 θ 0 θ_0 θ0 这一项, θ 0 θ_0 θ0 是截距,它决定了整个曲线的高低,但是它并不决定整个曲线每一部分的陡峭程度。所以在我们执行模型正则化的时候,不需要加上 θ 0 θ_0 θ0。还有另外一点,这个式子乘了 1/2,其实这是一个惯例,乘不乘都无所谓,乘以这个 1/2 的原因是因为在求导过程中会与平方项拿下来的 2 约掉,只是方便我们的计算而已。实际上我们不要 1/2 也是可以的,这就引出了第三点。这里乘了一个常数 α α α,其实它是一个新的超参数,它代表在这个模型正则化下新的损失函数中让每一个 θ θ θ 都尽可能的小,这个小的程度占整个优化损失函数的多少。比如当 α = 0 α = 0 α=0,相当于没有加入模型正则化,此时和最初的式子是一样的。但是当 α α α 等于正无穷的话,此时前面的 M S E MSE MSE 占整个式子的比重就会非常的小,我们主要的优化任务也就变成了让每一个 θ i θ_i θi 尽可能的小,那么在极端情况下,所有的 θ i θ_i θi 都等于 0 才能使得 J ( θ ) J(θ) J(θ) 最小。

  那么,我们把这一种模型正则化的方式称为岭回归(Ridge Regression)


岭回归(Ridge Regression)

下面我们就实际编程实现使用岭回归的方式来限制 θ θ θ 的取值,最终得到的结果是怎样的。

47-模型泛化与岭回归
47-模型泛化与岭回归
47-模型泛化与岭回归
47-模型泛化与岭回归
47-模型泛化与岭回归
47-模型泛化与岭回归
47-模型泛化与岭回归


具体代码见 47 模型泛化与岭回归.ipynb