吴恩达机器学习笔记四_正则化

正则化

为什么要正则化

观察上图三个拟合曲线,我们可以得知:曲线一没有很好地分类;曲线三分类过于严格,以至于曲线过于复杂;曲线二是比较合适的分类曲线。

对两种特殊情况定义:图一是“欠拟合”(underfit),图三是“过拟合”(overfit)。一般来说,我们加大特征向量\(\theta\)的维度,可以避免欠拟合的情况。但\(\theta\)的维度多少才合适是一个问题?如果维度过高,就会造成图三的情况,这时候正则化就是一种比较有效的自适应方式。

正则化的思路

正则化的思路就是:想办法将多余的特征向量\(\theta\)权值降低,以致十分趋近零;这时候我们几乎可以忽略这些多余的特征向量,也就达到了降低维度的目的。

思路很简单,可以参考上图进一步理解。简单来说,就是在\(J=Cost(h(\theta))\),即代价函数中给部分多余的\(\theta\)加上权值很高的惩罚项,那么随着代价值最小化,多余\(\theta\)的自身权值也会逐渐降低。具体的算法在下面。

\[J(\theta) = \frac{1}{2m}[\sum_{i=2}^m(h_\theta(x^{(i)})-y^{(i)})^2+\lambda\sum_{j=1}^n\theta_j^2] \]

因为我们很难直观上判断哪一个特征向量是多余的,所以每一个\(\theta\)都要进行“惩罚”。其中,\(\lambda\sum_{j=1}^n\theta_j^2\)叫做正则化项\(\lambda\)叫做正则化参数。正则化参数如何选择,会在后面的课程中讲到。

用正则化改进所学算法

下面举两个例子,看看正则化改进之后如何。

正则化线性回归

对于线性回归的梯度下降算法:

记住,梯度下降算法是同步更新的。公式如下:

\[\theta_j = \theta_j(1-\alpha\frac{\lambda}{m}) - \alpha\frac{1}{m}\sum_{i=1}{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)} \]

对于正规方程,正则化不仅可以优化特征维度,还可以将原本不可逆的方程转化成可逆方程,如下。简单地理解就是,正规方程之所以不可逆,就是特征维度与数据维度不一致,优化特征维度后使之趋同,就转化成可逆的了。

正则化对率回归

对率回归暂时没学到正规方程,只有梯度下降算法。梯度下降算法形式上与线性回归的一致,只是\(h(\theta)=\frac{1}{1+e^{- \theta T x}}\)。另外的,两者的代价函数形式也是不同的。

NG还给了正则化后的高级优化方法,只需要在计算jVal时在后面加上一个正则化项以及在梯度后面减去一个\(\frac{\lambda}{m}\theta_j\)即可。如下:

jVal是代价函数的值,使用fminunc(@costFunction)可以最小化代价函数。gradient是Cost的导数,gradient(1)找的是Cost的常数项,没有正则化项。

参考

Coursera机器学习笔记(六) - 正则化

posted @ 2018-10-28 13:14  Wunsam_Chan  阅读(530)  评论(0编辑  收藏  举报