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

正则化

为什么要正则化

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

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

正则化的思路

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

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

[J( heta) = frac{1}{2m}[sum_{i=2}^m(h_ heta(x^{(i)})-y^{(i)})^2+lambdasum_{j=1}^n heta_j^2] ]

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

用正则化改进所学算法

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

正则化线性回归

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

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

[ heta_j = heta_j(1-alphafrac{lambda}{m}) - alphafrac{1}{m}sum_{i=1}{m}(h_ heta(x^{(i)})-y^{(i)})x_j^{(i)} ]

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

正则化对率回归

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

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

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

参考

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

原文地址:https://www.cnblogs.com/ChanWunsam/p/9865233.html