机器学习之正则化(吴恩达课程总结)

1.过拟合问题

在这里插入图片描述
(1) 这是一个预房价的例子,我们先对该数据做线性回归,也就是左边第一张图。
如果这么做,我们可以获得你个数据的这样一条直线,但是,实际上这并不是一个很好的模型。我们看看这些数据,很明显,随着房子面积的增加,住房加个的变化趋于稳定或者说越往右越平缓。因此线性回归并没有很好拟和训练数据。

我们把此情况称为欠拟合(underfitting),或者叫做高偏差(bias)

这两种说法大致相似,都表示没有很好地拟和训练数据。高度偏差这个词是machine learning的研究初期传下来的一个专业名词,具体到这个问题,意思就是说如果用线性回归这个算法去拟和训练数据,那么该算法实际上会产生一个非常大的偏差或者说存在一个很强的偏见。

第二幅图,我们在中间加入一个二次项,也就是说对于这幅数据我们用二次函数去拟和。自然,可以拟合出一条曲线,事实也证明这个拟和效果很好。

另一个阶段情况是,如果第三幅图中对于该数据集用一个四次多项式来拟和。因此在这里我们有五个参数θ0到θ4,这样我们同时可以拟和一条曲线,通过我们的五个训练样本,我们可以得到如右图的一条曲线。
一方面,我们似乎对训练数据做了一个很好的拟和,因为这条曲线通过了所有的训练实例。但是,这实际上是一条很扭曲的曲线,它不停上下波动。因此,事实上我们并不认为它是一个预测房价的好模型。

我们把这类情况叫过拟和(overfitting),也叫高方差(variance)。

与高偏差一样,高方差同样也是一个历史上的叫法。从第一印象上来说,如果我们拟合一个高阶多项式,那么这个函数能很好的拟合训练集(能拟合几乎所有的训练数据),但这也就面临函数可能太过庞大的问题,变量太多。

(2) 过度拟和的问题通常发生在变量(特征)过多的时候。这种情况下训练出的方程总是能很好的拟和训练数据,也就是说,我们的代价函数可能非常接近于0或者就为0。
但是,这样的曲线千方百计的去拟和训练数据,这样会导致它无法泛化到新的数据样本中,以至于无法预测新样本价格。在这里,术语“泛化”指的是一个假设模型能够得到新样本的能力。新样本数据就指没有出现在训练集中的数据。
在这里插入图片描述之前,我们看到了线性回归情况下的过拟和。类似的情况也适用于逻辑回归。

(3) 如果发生了过拟合问题,我们应该应该如何处理?
过多的变量,同时只有非常少的训练数据,回到出现过度拟和的问题。因此为了解决过度拟和的问题,有以下两个方法。
在这里插入图片描述
方法一:尽量减少选取变量的数量
具体而言,我们可以人工检查每一项变量,并以此来确定哪些变量更为重要,然后,保留那些更为重要的特征变量。至于,哪些变量应该舍弃,我们以后在讨论,这会涉及模型选择算法,这种算法是可以自动选择采用哪些特征变量,自动舍弃不需要的变量。这类做法非常有效,但是其缺点是当你舍弃一部分特征变量时,你也舍弃了问题中的一些信息。例如,也许所有的特征变量对于预测房价都是有用的,我们实际上并不想舍弃一些信息或者说舍弃这些特征变量。

方法二:正则化
正则化中我们将保留所有的特征变量,但是会减少特征变量的数量级(参数数值的大小θ(j))。
这个方法非常有效,当我们有很多特征时,其中每一个变量都能对预测产生一点影响。正如我们在房价预测的例子中看到的那样,我们可以有很多特征变量,其中每一个变量都是有用的,因此我们不希望把他们删掉,这就导致了正则化概念的发生。

2.Cost Function

在这里插入图片描述
(1)在前面的介绍中,我们看到了如果用一个二次函数来拟和这些数据,那么它给了我们一个对数据很好的拟和。然而,如果我们用一个更高次的多项式去拟和,最终我们可能得到一个曲线,他能很好地拟和训练集,但却并不是一个好的结果,因为它过度拟和了数据,因此,一般性并不好。
让我们考虑下面的假设,我们想要加上惩罚项,从而使参数θ3和θ4足够地小。
在这里插入图片描述
这里的意思就是,上图的式子是我们优化的目标,也就是说我们需要尽量减少代价函数的均方无误差。
对于这个函数我们对它添加一些项,加上1000乘以θ3的平方,再加上1000乘以θ4的平方。
在这里插入图片描述
1000只是我随便写的某个较大的数字而已。现在,如果我们要最小化这个函数,那么为了最小化这个新的代价函数,我们要让θ3和θ4尽可能小。因为,如果你在原有代价函数的基础上加上1000乘以θ3这一项,那么这个新的代价函数将变的很大,所以,当我们最小化这个新的代价函数时,我们使θ3的值接近于0,同时θ4的值也接近于0,就像我们忽略了这两个值一样。如果我们做到这一点,那么我们将得到一个近似的二次函数。
在这里插入图片描述
因此,我们最终恰当地拟和了数据,我们所使用地征是二次函数加上一些非常小,贡献很小项(因为这些项的 θ3、 θ4 非常接近于0)。显然,这是一个更好的假设。

(2)
在这里插入图片描述
更一般地,这里给出了正规化背后地思路。这种思路就是,如果我们地参数值对应一个较小值的话(参数值比较小),那么往往我们会得到一个形式更简单的假设。

(2)
在这里插入图片描述
更一般地,这里给出了正规化背后的思路。这种思路就是,如果我们的参数值对应一个较小值的话(参数值比较小),那么往往我们会得到一个形势更简单的假设。

在我们上面的例子中,我们惩罚的只是θ3和θ4,使这两个值均接近于0,从而我们得到了一个更简单的假设,实际上这个假设大致上是一个二次函数。

但更一般的说,如果我们像惩罚θ3和θ4这样惩罚其他参数,那么我们往往可以得到一个相对较为简单的假设。

实际上,这些参数的值越小,通常对应于越光滑的函数,也就是更加简单的函数。因此就不易发生过拟和问题。

我知道,为什么越小的参数对应于一个相对较为简单的假设,对你来说现在不一定完全理解,但是在上面的例子中使θ3和θ4很小,并且这样做能给我们一个更加简单的假设,这个例子至少给了我们一些值观感受。

来让我们看看具体的例子,对于房屋价格预测我们可能有上百种特征,与刚刚所讲的多项式例子不同,我们并不知道θ3和θ4是高阶多项式。所以,如果我们有一百个特征,我们并不知道如何选择关联度更好的参数,如何缩小参数的数目等等。

因此在正则化里,我们要做的事情,就是把减少我们的代价函数(例子中是线性回归的代价函数)所有的参数值,因为我们并不知道是哪一个或哪几个要去缩小。

因此,我们需要修改代价函数,在这后面添加一项,就像我们在方括号里的这项。当我们添加一个额外的正则化项的时候,我们收缩了每个参数。
在这里插入图片描述
顺便说一下,按照惯例,我们没有去惩罚θ0,因此θ0的值是大的。这就是一个约定从1到n的求和,而不是从0到n的求和。但其实在实践中这只会有非常小的差异,无论你是否包括这θ0这项。但是按照惯0例,通常情况下我们还是只从θ1到θn进行正则化。
在这里插入图片描述
下面这项就是一个正则化项
在这里插入图片描述
并且 λ在这里我们称为正则化参数。

λ要做的就是控制在两个不同的目标中的平衡关系。

第一个目标就是我们想要训练,使假设更好地拟和训练数据。我们希望假设能够很好的适应训练集。

而第二个目标是我们想要保持参数值较小(通过正则化项)
而λ这个正则化参数需要控制的使这两者之间的平衡,即平衡拟和训练的目标和保持参数值较小的目标。从而保持假设的形式相对简单,来避免过度拟和。

对于我们的房屋加个预测来说,我们之所以使用非常高的高阶多项式来拟和,我们就会得到一个非常弯曲和复杂的曲线函数,现在我们只需要使用正则化目标的方法,那么你就可以得到一个更加合适的曲线,但这个曲线不是一个真正的二次函数,而是更加流畅和简单的一个曲线。这样就得到了对于这个数据更好的假设。

在这里插入图片描述
在正则化线性回归中,如果正则化参数值λ被设定为非常大,那么将会发生什么呢?

我们将会非常大地次惩罚参数θ1 θ2 θ3 θ4…也就是说,我们最终惩罚θ1 θ2 θ3 θ4 … 在一个非常大的程度,那么我们会是所有这些参数接近于0。
在这里插入图片描述
如果我们这么做,那么就是我们的假设中相当于去掉了这些项,并且是我们只是留下了一个简单的假设,这个假设只能表明房屋价格等于θ0的值,那就是类似于拟和了一条水平直线,对于数据来说这就是一个欠拟合。这种情况下这一假设,它是条失败的直线,对于训练集来说着只是一条平滑直线,它没有任何趋势,他不会去趋向大部分训练样本的任何值。

这句话的另一种表答方式就是这种假设有过于强烈的“偏见”或者过高的偏差,认为预测的价格只是等于θ0。对于数据来说这只是一条水平直线。

因此,为了使正则化运作良好,我们应当注意一些方面,应该去选择一个不错的正则化参数λ。当我们以后讲到多重选择时我们将讨论这种方法来自动选择正则化参数λ,为了使用正则化,接下俩我们将把这些概念应用到线性回归和逻辑回归中去,那么我们就可以让他们避免过度拟和了。

3.Regularized Linear Regression

线性回归的代价函数如下:
在这里插入图片描述
对于线性回归的求解,我们之前运用了两种学习方法,一种基于梯度下降,一种基于正规方程。
1.
梯度下降,如下:
在这里插入图片描述
2.
正规方程,如下:
在这里插入图片描述

3.
现在考虑M(即样本量),比N(即特征的数量)小或等于N。
通过之前的博文,我们知道如果你只有较少的样本,导致特征数量大于样本数量,那么就诊XTX将是不可逆矩阵或奇异矩阵,或者用另一种说法是这个矩阵是退化的,那么我们就没有办法使用正规方程来求出θ了。

幸运的是,正规化也为我们解决了这个问题,具体的说只要正则参数是严格大于零,实际上,可以证明如下矩阵:
在这里插入图片描述
将会是可逆的。因此,使用正则还可以照顾任何XTX不可逆的问题。

所以,你现在知道如何实现线性回归,利用它,你就可以避免过度拟和,即使你在一个相对较小的训练集中有很多特征。这应该可以让你在很多问题上更好的利用线性回归。

4.Regularized Logistic Regression

Regularized Logistic Regression 实际上与 Regularized Linear Regression 是十分相似的。
在这里插入图片描述
同样使用梯度下降:
在这里插入图片描述
如果在高级优化算法中,使用正则化技术的话,那么对于这类算法我们需要自己定义 Cost Function
在这里插入图片描述
这个我们定义的Cost Function的输入为向量θ,返回值有两项,分别是代价函数jVal以及梯度gradient。

总之我们需要的就是这个自定义函数CostFunction,针对Octave而言,我们可以将这个函数作为参数传入到 fminunc 系统函数中(fminunc 用来求函数的最小值,将@costFunction作为参数代进去,注意 @costFunction 类似于C语言中的函数指针),fminunc返回的是函数 costFunction 在无约束条件下的最小值,即我们提供的代价函数 jVal 的最小值,当然也会返回向量 θ 的解。

上述方法显然对正则化逻辑回归是适用的。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值