说明:文章中的所有图片均属于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(θ)=12m∑mi=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)那样来画图纠错。以房价预测为例,假设有样本选取了太多的特征:
features |
representation |
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,我暂时不理解,不能证明),完成时,就会有
θ3≈0 和
θ4≈0 。这就使得之前的
假设函数:
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)−α1m∑i=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)=12m⎡⎣∑i=1m(hθ(x(i))−y(i))2+λ∑j=1nθ2j⎤⎦
注意上式中不包含
θ0 。其中
λ 称为
正则化系数(Regularization parameter),这个
λ 一般都是一个相对较大的数,其有两个作用,第一个是使得函数
hθ(x) 能够很好地匹配训练集中的数据;另一个作用是使得所有的系数都比较小,以防止过拟合。
但是,当 λ 过大时,会使得 θ1≈θ2≈...≈θn≈0 ,使得假设函数 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)−α1m∑i=1m(hθ(x(i))−y(i))x(i)j
前面的
(1−αλm) 是小于1的(原因前面已经提到过了),所以每次迭代
θj 都会乘以一个小数,然后再减去后面的部分。后面的求和部分和线性回归中相同。
ii.Normal Equation
正则化的Normal Equation的形式为:
θ=(XTX+λ⋅L)−1XTywhere L=⎡⎣⎢⎢⎢⎢⎢⎢⎢011⋱1⎤⎦⎥⎥⎥⎥⎥⎥⎥
注意第一行第一列为0,是因为
θ0 不需要正则化。另外关于矩阵不可逆的问题是因训练集数量小于特征数量,具体请参考 《机器学习笔记03》。
四、正则化的逻辑回归(Regularized Logistic Regression)
之前我们讲到过过拟合的现象:
假设函数为:
J(θ)=−1m∑i=1m[y(i) log(hθ(x(i)))+(1−y(i)) log(1−hθ(x(i)))]
和逻辑回归类似,我们只要加上惩罚项就能避免过拟合:
J(θ)=−1m∑i=1m[y(i) log(hθ(x(i)))+(1−y(i)) log(1−hθ(x(i)))]+λ2m∑j=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 。
上面就是正则化、过拟合的大概内容,希望能帮助到大家。
如有错误,期望您能纠正,留言或者是e-mail:
[email protected]
——–
转载请注明出处——–