吴恩达机器学习笔记四_正则化
正则化
为什么要正则化
观察上图三个拟合曲线,我们可以得知:曲线一没有很好地分类;曲线三分类过于严格,以至于曲线过于复杂;曲线二是比较合适的分类曲线。
对两种特殊情况定义:图一是“欠拟合”(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的常数项,没有正则化项。