吴恩达机器学习 -- 正则化

8.1 过拟合的问题

过拟合问题会导致线性回归和逻辑回归效果变差,那么过拟合到底是指什么意思呢?

一个回归问题的例子:

吴恩达机器学习 -- 正则化_第1张图片

 图一的线性回归模型,欠拟合;图三的逻辑回归模型虽然经过了所有的样本点,但是它预测新数据时却效果很差,因为它过于强调拟合原始数据。这种情况就叫做过拟合。可以看出,若给出一个新的值使之预测,它将表现的很差,是过拟合,虽然能非常好地适应我们的训练集但在新输入变量进行预测时可能会效果不好;而中间的模型最合适。

一个分类问题的例子:

吴恩达机器学习 -- 正则化_第2张图片

x 的次数越高,拟合的效果越好,但预测效果越差。

如果发现了过拟合问题,应该如何处理?

  1. 丢弃一些不能帮助我们正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法来帮忙(例如PCA
  2. 正则化。 保留所有的特征,但是减少参数的大小(magnitude)。

 

8.2 代价函数

在上一节的回归模型问题中,高次项导致了过拟合的产生,所以如果能让这些高次项的系数接近于0的话,就能很好的拟合了。

所以要做的就是在一定程度上减小这些参数的值,这就是正则化的基本方法。那么如何减小参数值呢?

就是在代价函数中引入惩罚。

假设有很多的特征,有很多的参数。一开始我们并不知道哪些参数需要惩罚,所以选择对所以的参数进行惩罚,让代价函数最优化的软件来选择惩罚的程度。这样的结果是得到了一个较为简单的能防止过拟合问题的假设:

\small J(\theta)=\frac{1}{2m}[\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^{2}+\lambda \sum_{j=1}^{n}\theta_{j}^{2}],其中 \small \lambda 称正则化参数

注:根据惯例,不对 \small \theta_{0} 进行惩罚。

经过正则化处理的模型与原模型的可能对比如下图所示:

吴恩达机器学习 -- 正则化_第3张图片

如果选择的正则化参数 \small \lambda 过大,则会把所有的参数都最小化了,导致模型变成 \small h_{\theta}(x)=\theta_{0},也就是上图中红色直线所示的情况,造成欠拟合。

增加 \small \lambda \sum_{j=1}^{n}\theta_{j}^{2} 可以使 \small \theta 值减小的原因:因为最后要求代价函数的最小值,如果把 \small \lambda 的值设置的比较大,那么为了使值最小,所有的参数都会相应变小,但若设置的过大,则会导致所有参数都趋向于0,导致变成一条直线。因此,对于正则化,要合理选择 \small \lambda 的大小。

 

8.3 线性回归的正规化

线性回归的求解,前面推导了两种学习算法:一种基于梯度下降,一种基于正规方程。

正则化线性回归的代价函数为:\small J(\theta)=\frac{1}{2m}[(\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^{2})+\lambda \sum_{j=1}^{n}\theta_{j}^{2}]

如果我们要使用梯度下降法令这个代价函数最小化,会是下面两种形式:

\small Repeat\left \{ \theta_{0} := \theta_{0}-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{0}^{(i)}\right \}

\small Repeat\left \{ \theta_{j} := \theta_{j}-\alpha[\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)}+\frac{\lambda}{m}\theta_{j}]\right \}=Repeat\left \{ \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)}\right \}

可以看出,正则化线性回归的梯度下降算法的变化在于,每次都在原有算法更新规则的基础上令 \small \theta 值减少了一个额外的值。

同样也可以利用正规方程来求解正则化线性回归模型,方法如下所示:

\small \theta=\left ( X^{T}X+\lambda\begin{bmatrix} 0 & 0 &0 &0\\ 0 &1 &0 &0 \\ 0 & 0& 1&0 \\ 0& 0&0 & 1 \end{bmatrix} \right )^{-1}X^{T}y,图中的矩阵尺寸为  \small (n+1)*(n+1)

 

8.4 正则化的逻辑回归模型

针对逻辑回归问题,用正则化来解决问题的代价函数为:

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

要最小化该代价函数,通过求导,得出梯度下降算法为:

\small Repeat\left \{ \theta_{0} := \theta_{0}-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{0}^{(i)}\right \}

\small Repeat\left \{ \theta_{j} := \theta_{j}-\alpha[\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{j}^{(i)}+\frac{\lambda}{m}\theta_{j}]\right \}=Repeat\left \{ \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)}\right \}

虽然它们看起来和线性回归模型的梯度下降一样,但是 此处 \small h_{\theta}(x)=\frac{1}{1+e^{-\theta^{T}x}}

你可能感兴趣的:(机器学习)