第八章 正则化

该系列文章为,观看“吴恩达机器学习”系列视频的学习笔记。虽然每个视频都很简单,但不得不说每一句都非常的简洁扼要,浅显易懂。非常适合我这样的小白入门。

本章含盖

  • 8.1 过拟合问题
  • 8.2 代价函数
  • 8.3 线性回归的正则化
  • 8.4 Logistic 回归的正则化

8.1 过拟合问题

在将 线性回归 和 logistic回归 应用到某些机器学习应用中时,会出现过度拟合问题,导致它们表现欠佳。 正则化能够改善或者减少过度拟合问题。

什么是过度拟合?

第一个,使用线性回归的方程,与训练集的数据拟合度不够。因此,它是一个’欠拟合’或‘高偏差’的算法。 第二个,使用二次函数来拟合数据集,拟合效果很好;? 称为’刚好拟合’ 第三个,使用四阶多项式来拟合训练集,它使用5个参数,并且拟合了所有的训练集,虽然如此,但是这是一条扭曲的曲线,它不停上下波动,实际上,我们并不认为这是一个好的模型。?这个问题,我们称之为’过度拟合’,或称这个算法具有’高方差’。即,如果我们拟合一个高阶多项式,那么这个假设函数能拟合几乎所有的数据,这就面临可能的函数太过庞大,变量太多的问题。我们没有足够的数据来约束它,来获得一个好的假设函数。

术语“generalize(泛化)”:一个假设模型应用到新样本的能力。

类似的说法同样也可以引用到 logistic 回归。

调试 和 诊断
当过拟合问题出现时,我们可以如何解决

通过绘制假设模型曲线,来选择/决定合适的多项式阶次。但这种方法并不总是有用,如,在多特征变量的情况下,绘图变得很困难。 如果我们在有很多的变量,而很少的训练集的情况下,就会出现过度拟合的问题。

解决方法: ① 尽量减少选取变量的数量 人工检查变量清单,并以此决定哪些变量更为重要。 PS :模型选择算法,可以自动选择哪些特征变量保留,哪些舍弃。 这种减少特征变量的方法,可以有效减少过拟合的发生。 缺点:舍弃一部分特征变量,你也就舍弃了关于问题的一些信息

② 正则化 这里,我们将保留所有的特征变量,但是减少量级或参数 θ_j 的大小,这个方法非常有效,当我们有非常多的特征变量,其中每个变量都能对预测的y产生一点影响。

8.2 代价函数

我们不妨对函数加入惩罚项( 1000θ_3^2 + 1000θ_4^2 ),使得参数θ_3和θ_4都非常的小。

对代价函数进行修改

1000 只是随便一个比较大的数。。。 因此我们要最小化这个函数,就要使得θ_3和θ_4要尽可能小。即,使得 θ_3 近似等于 0,θ_4 近似等于 0。 那么这样的话,最终我们拟合的函数实际上是一个二次函数,加上了一些非常小的项。 ?该例子中,我们看到了加入惩罚,增大两个参数所带来的效果,总的来说,这就是正则化背后的思想。

这个思想就是,如果我们的参数值较小,意味着一个更简单的假设模式。如果将参数都加上惩罚项,这么做就相当于尽量简化这个假设模式,因为这些参数都接近0的时候。如,本例子中他就是一个二次函数。

但是一般来说,结果表明,这些参数的值越小, 我们得到的函数就会越平滑,也越简单。因此也更不容易出现过拟合问题。

例子

这里,我们有100个特征,这不同于前面的例子,我们知道哪个参数是高阶项的(前面的例子,我们只有1个特征,因此θ_2、θ_3、θ_4都是高阶项参数),因此我们很难挑选出其中的哪个变量是相关度较低的。即,我们不知道该从101个参数中,挑选哪一些来缩小它们的值。因此在正则化中,我们要做的就是修改代价函数,来缩小所有的参数。

?额外添加的正则项,来缩小每个参数的值。这个项的作用就是缩小每个参数(θ_1、θ_2 … θ_n,注意,不包括 θ_0)。

λ 被称为正则化参数。λ 的作用是,控制两个不同目标之间的取舍。即,控制两个目标(见?)之间的平衡关系。即,更好地去拟合训练集的目标和将参数控制得更小的目标,从而保持假设模型的相对简单,避免出现过拟合的情况。 第一个目标,与目标函数的第一项有关。就是我们想更好的训练数据、拟合数据。 第二个目标,我们要保持参数尽量地小,与目标函数的第二项有关(即,与正则化项有关)。

在正则化的线性回归中,如果正则化参数 λ 被设得太大的话,其结果就是我们对这些参数(θ_1、θ_2 … θ_n)的惩罚程度太大。这会导致 θ_1、θ_2 … θ_n 这些参数都接近于0,这相当于把假设函数的全部项都忽略掉了,这样最后假设模型只剩下一个θ_0。。。

这是一个‘欠拟合’的例子。换句话来说,这个假设模型的偏见性太强,或者偏差过高。

8.3 线性回归的正则化

正则化线性回归的优化目标:

?将 x0 的情况单独独立出来。

对于正则化代价函数使用梯度下降法:

注意,?的J(θ)是我们修改后的,包含正则化项的函数,即,

注意 “1 - α * λ / m”这一项,它起到一个很有趣的效果。它的值是只比 1 略小一点的数。因为,通常学习率 α 很小,但 m 却很大,那么 α * λ / m 就会很小。所以,它通常略小于 1,你可以把它想成是0.99这样的数。所以,θ_j更新的结果就是,第一项 “θ_j * (1 - α * λ / m)”,θ_j变成了 θ_j * 0.99,即,将θ_j 往 0 的方向缩小了一点点。 第二项,这实际上完全与我们在添加正则项之前的梯度下降更新一样。 由此可见,当我们使用正则化线性回归时,我们要做的就是每次迭代时,都将 θ_j 乘以一个比 1 略小的数。我们每次都把参数(θ_j)缩小一点,即,每次迭代,第一项 θ_j 都会缩小为上一次的0.99这样。然后进行和之前(线性回归时梯度下降)一样的更新操作(即,减去的第二项同线性回归时的梯度下降是一样的)。

对于正则化代价函数使用正规法:

不可逆问题:

样本 m 的数量 <= 特征的数量 n 如果,你的样本数量比特征数量少,那么这个 'X 转置’ 乘 X 的矩阵是不可逆的。

只要,正则化参数 λ > 0 ,是严格大于0的,我们就可以确信

一定可逆。

因此,进行正则化还可以解决一些X的转置乘X出现不可逆的问题。

8.4 Logistic 回归的正则化

通常情况下,如果你的逻辑回归有很多特征,有无关紧要的多项式,这些大量的特征,最终会导致过拟合的现象。

为了使用’正则化’,我们对 J(θ) 做一些修改。?

这一项的作用是,惩罚 θ_1、θ_2 … θ_n ,防止它们过大。这样的话产生的效果就是,即使你拟合阶数很高,且参数很多,只要添加了这个正则项,保持参数较小,你仍然可以得到这样一条合理的决策边界。

对正则化使用梯度下降法:

再次说明,虽然?同前面线性回归时写的表达式很像,但是他们不是同一个算法。因为假设函数 h(θ) 的定义不同。 这里的 J(θ) 是正则化的代价函数

如何在更高级的优化算法中只用正则化

非线性分类器。不管是线性回归还是logistic回归,我们都能通过构造多项式来解决,但事实上还有更为强大的非线性分类器,可以用之解决多项式回归的问题。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券