机器学习笔记05:正则化(Regularization)、过拟合(Overfitting)

说明:文章中的所有图片均属于Stanford机器学习课程


(一)过拟合问题(The Problem of Overfitting)

不管是在线性回归还是在逻辑回归中,我们都会遇到过拟合的问题。先从例子来看看什么是过拟合。

i.线性回归中的过拟合

还是以房价预测为例,来看几张张图片:

1.欠拟合(Underfitting)

这里写图片描述

上图中,我们用一条直线 hθ(x)=θ0+θ1x 来拟合训练集中数据,但是明显何以看出的是,房价不会随面积成比例地增长,这种情况,称之为 欠拟合

2.过拟合(Overfitting)

这里写图片描述

如上图所示,我们用一条高次的曲线 hθ(x)=θ0+θ1x+θ2x2+θ3x3+θ4x4 来拟合训练集中的数据,因为参数过多,对训练集的匹配度太高、太准确,以至于在后面的预测过程中可能会导致预测值非常偏离合适的值,预测非常不准确,这就是 过拟合

3.合适的拟合(Properfitting)

这里写图片描述

如上图,如果选用一条合适的曲线,比如说抛物线 hθ(x)=θ0+θ1x+θ2x2 来拟合上面的训练集就非常的合适。这就是一个比较恰当的 假设函数(hypothesis function)

所以,总结一下,一般在实际应用中不会遇到欠拟合的情况。而过拟合却会经常出现。一盘情况下,过拟合(Overfitting)就是:如果我们使用了太多的特征(features)来训练一个假设函数,就会使其对训练集的匹配度非常高(误差几乎为零: J(θ)=12mmi=1(θTx(i)y(i))2 ),但是不能推广到其他未知数据上,也就是对于训练集之外的输入,不能做出正确的预测。


ii.逻辑回归中的过拟合

再来看看逻辑回归中的过拟合问题,以肿瘤预测为例。

1.欠拟合(Underfitting)

这里写图片描述

上图中是在逻辑回归的样本中,用一条直线 z=θ0+θ1x+θ2x 来拟合训练集,明显效果不够理想。这种情况是 欠拟合

2.过拟合(Overfitting)

这里写图片描述

而这张图,用了一个高次假设函数来拟合,使得每个样本都严格地分局于 决策边界(decision boundary)的两侧,这种情况叫做 过拟合
(PS:上面提到的决策边界以及函数g,请参考上一篇:《机器学习笔记04:逻辑回归(Logistic regression)、分类(Classification)》

3.合适的拟合(Properfitting)

这里写图片描述

而上面这个二次假设函数则比较合适的拟合了训练集中的数据。


iii.处理过拟合(Addressing overfitting)

面对过拟合问题,我们可以像在线性回归中 Debug 误差函数(hypothesis function)那样来画图纠错。以房价预测为例,假设有样本选取了太多的特征:

featuresrepresentation
x1 size of house
x2 no. of bedrooms
x3 no. of floors
x4 age of house
x5 average income in neighborhood
x6 kitchen size
x100 traffic situation


然后我们训练出来了一个假设函数 hθ(x) 假若发现我们训练得到的假设函数对于新的输入,其预测非常的不好。我们可以将其图像画出来,如果像下图中那样过于匹配训练集中的数据,可能就是过拟合了。其原因大多是因选取了太多的特征(features)。

这里写图片描述

通常,有两种主要的办法来处理过拟合为题:

1.减少特征的数量
减少特征数量又包括 人工手动减少特征数量使用模型选择算法,后者会在后面的文章中讲到。

2.正则化
正则化(Regularization)则不会减少特征的数量,因为我们可能真的需要很多特征,但是此方法会使某个特征 θj 的值减小,而且当特征数量很多时,正则化也能工作得很好。后面会具体阐述。


(二)误差函数(Cost Function)

现在我们就来讲一讲正则化(Regularization)。首先,看一下之前的两张图片:

这里写图片描述

上面的左图是一个恰当的拟合,其假设函数是一个二次函数(quadratic function);而右图是过拟合的情况,其假设函数是一个四次函数(quartic function)。那怎么能够在不删除特征(不减少特征)的情况下,处理过拟合情况呢。方法如下:

假设我们的假设函数 hθ(x)=θ0+θ1x+θ2x2+θ3x3+θ4x4 。与左图相比,因为三次项和四次项导致了过拟合的现象,所以们可以惩罚三次项和四次项,具体方法是在误差函数中加入惩罚项:

J(θ)=12m[i=1m(hθ(x(i))y(i))2+1000θ23+1000θ24]
其中1000是我任意写的一个比较大的数字。在加入惩罚项之后, 梯度下降就变成了:
θj=θjαθjJ(θ)=θjα1m[i=1m(hθ(x(i))y(i))x(i)j+θj(1000θ23+1000θ24)]

因为我们要最小化 误差函数,所以在梯度下降开始到完成的过程中式子 αθjJ(θ) 会从某一个值趋近于0( 为何会收敛于0,我暂时不理解,不能证明),完成时,就会有 θ30 θ40 。这就使得之前的 假设函数
hθ(x)=θ0+θ1x+θ2x2+θ3x3+θ4x4θ0+θ1x+θ2x2
至此,三次项和四次项的影响只占了很小一部分,正则化就使得过拟合的 假设函数变得不那么过拟合了。也许有人会问,为什么在误差函数后面加上对应的惩罚项,就能解决过拟合问题了?下面来解释一下。

以惩罚(penalize)三次项为例说说我个人的见解,对 θ3 求偏导数:

θ3=θ3αθ3J(θ)=θ3α1m[i=1m(hθ(x(i))y(i))+θ3(1000θ23+1000θ24)]=θ3α1m[i=1m(hθ(x(i))y(i))x(i)j+2000θ3]
上面的式子可以写为:
θ3=θ3(1α2000m)α1mi=1m(hθ(x(i))y(i))x(i)j
容易看出,当 θ3 为正数的时候, 2000θ3 要远远大于 θ3 本身,但是通常样本数量 m 都非常的大,所以一般有: (1α2000m)<1 。所以对于 θ3 来说,它的减小的速度会较其他参数快一点。 至于为何最后会约等于0,我也实在摸不着头脑。以后搞懂再补充。


但是,通常情况下,我们可能无法提前知道到底是哪个参数(特征),或哪个项引起了过拟合。所以一般将除去 θ0 之外的其他参数都正则化( θ0 不是任何特征的参数,无必要正则化):

J(θ0,θ1,...,θj)=12mi=1m(hθ(x(i))y(i))2+λj=1nθ2j
注意上式中不包含 θ0 。其中 λ 称为 正则化系数(Regularization parameter),这个 λ 一般都是一个相对较大的数,其有两个作用,第一个是使得函数 hθ(x) 能够很好地匹配训练集中的数据;另一个作用是使得所有的系数都比较小,以防止过拟合。

但是,当 λ 过大时,会使得 θ1θ2...θn0 ,使得假设函数 hθ(x)θ0

这里写图片描述
所以 λ 过大也会产生欠拟合的现象。


三、正则化的线性回归(Regularized Linear Regression)

i.梯度下降(Gradient Descent)

正则化的梯度下降形式为:

Repeat {    θ0:=θ0α 1m i=1m(hθ(x(i))y(i))x(i)0    θj:=θjα [(1m i=1m(hθ(x(i))y(i))x(i)j)+λmθj]}          j{1,2...n}
需要注意的是, θ0 需要单独处理,因为我们不对其进行正则化。上面的第二个式子也可写作:
θj:=θj(1αλm)α1mi=1m(hθ(x(i))y(i))x(i)j
前面的 (1αλm) 是小于1的(原因前面已经提到过了),所以每次迭代 θj 都会乘以一个小数,然后再减去后面的部分。后面的求和部分和线性回归中相同。


ii.Normal Equation

正则化的Normal Equation的形式为:

θ=(XTX+λL)1XTywhere  L=0111
注意第一行第一列为0,是因为 θ0 不需要正则化。另外关于矩阵不可逆的问题是因训练集数量小于特征数量,具体请参考 《机器学习笔记03》


四、正则化的逻辑回归(Regularized Logistic Regression)

之前我们讲到过过拟合的现象:

这里写图片描述

假设函数为:
J(θ)=1mi=1m[y(i) log(hθ(x(i)))+(1y(i)) log(1hθ(x(i)))]
和逻辑回归类似,我们只要加上惩罚项就能避免过拟合:
J(θ)=1mi=1m[y(i) log(hθ(x(i)))+(1y(i)) log(1hθ(x(i)))]+λ2mj=1nθ2j
其梯度下降的形式为:
Repeat {    θ0:=θ0α 1m i=1m(hθ(x(i))y(i))x(i)0    θj:=θjα [(1m i=1m(hθ(x(i))y(i))x(i)j)+λmθj]}          j{1,2...n}
需要注意的是与线性回归不同,这里的 hθ(x)=11+eθTX


上面就是正则化、过拟合的大概内容,希望能帮助到大家。
如有错误,期望您能纠正,留言或者是加入QQ群

——–转载请注明出处——–

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值