【机器学习笔记3.1】线性模型正则化

过拟合问题描述

在机器学习应用时,会遇到过拟合(over-fitting)问题,本文将介绍一种被称为正则化(regularization)的技术,它可以有效改善或者减少过拟合问题[1]。
如果我们有非常多的特征,我们通过学习得到的假设可能能够非常好地适应训练集(代价函数可能几乎为0),但是可能会无法推广到新的数据,也就是泛化能力比较差。
下图是一个回归问题的例子:
【机器学习笔记3.1】线性模型正则化
下图是分类问题的例子:
【机器学习笔记3.1】线性模型正则化

就以多项式为例来理解,x的次数越高,则拟合的越好,但相应的预测能力就可能变差。
那么当我们发现过拟合问题时,应该如何处理呢?
1. 丢弃一些不能帮助我们正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法来帮忙(例如PCA)
2. 正则化。保留所有特征,但是减少参数的大小。

代价函数

上面的回归问题中如果我们的模型是:
hθ(x)=θ0+θ1x1+θ2x22+θ3x33+θ4x44
我们可以从之前的事例中看出,正是那些高次项导致了过拟合的产生,所以如果我们能让这些高次项的系数近于0的话,我们就能很好的拟合了。
所以我们要做的就是在一定程度上减少这些参数θ的值,这就是正则化的基本方法。我们这里决定要减少θ3θ4的大小,我们要做的便是修改代价函数,在其中θ3θ4设置一点惩罚,修改后的代价函数如下:

(1)minθ12m[i=1m(hθ(x(i))y(i))2+1000θ32+10000θ42]

通过这样的代价函数选择出的 θ3和 θ4对预测结果的影响就比之前要小许多。假如我们有非常多的特征,我们并不知道其中哪些特征我们要惩罚,我们将对所有的特征进行惩罚,并且让代价函数最优化的软件来选择这些惩罚的程度。这样的结果是得到了一个较为简单的能防止过拟合问题的假设:
(2)minθ12m[i=1m(hθ(x(i))y(i))2+λj=1nθj2]

其中 λ 又称为正则化参数(Regularization Parameter)。 注: 根据惯例, 我们不对 θ0 进行惩罚。经过正则化处理的模型与原模型的可能对比如下图所示:
【机器学习笔记3.1】线性模型正则化
如果选择的正则化参数 λ 过大,则会把所有的参数都最小化了,导致模型变成hθ(x)=θ0,也就是上图中红色直线所示的情况,造成欠拟合。
那为什么增加一项λ=j=1nθj2就可以是θ的值减小呢?
因为如果我们令λ的值很大的话,为了使 Cost Function 尽可能的小,所有的 θ 的值(不包括 θ0) 都会在一定程度上减小。
但若λ的值太大了, 那么 θ(不包括 θ0) 都会趋近于 0, 这样我们所得到的只能是一条平行于 x 轴的直线。
所以对于正则化,我们要取一个合理的λ的值,这样才能更好的应用正则化。
下面介绍正则化在线性回归和逻辑回归中的应用。

正则化线性回归

正则化线性回归的代价函数为:

(3)J(θ)=12m[i=1m(hθ(x(i))y(i))2+λj=1nθj2],j0

如果我们使用梯度下降法来使这个代价函数最小化,因为我们未对θ0进行正则化,所以梯度下降算法将分两种情形:
【机器学习笔记3.1】线性模型正则化

j≠0时的求导过程如下:

J(θ)θj=1m[i=1m(hθ(x(i))y(i))xj(i)+λθj]

(me)注:这里θ共有n项,当对第j项θj求偏导时只有θj项被保留下来,其他的都被当成常数求导等于0了。

也可以利用正规方程来求解正则化线性回归模型,参考【机器学习笔记1.1】中的方法,我们可以把这里的代价函数式(3)写成矩阵的形式

(4)J(θ)=(yXθ)T(yXθ)+λθTθ

其中Xm×n的矩阵,ym×1的向量,θn×1的向量。
J(θ)θ求导得
(5)J(θ)θ=2XT(yXθ)+2λθ

J(θ)θj=0

解得
θ=(XTX+λ[111])1XTy

考虑θ0时的求解结果
θ=(XTX+λ[0111])1XTy

此时Xm×(n+1)的矩阵,ym×1的向量,θ(n+1)×1的向量。

正则化逻辑回归

逻辑回归参见【机器学习笔记2.1】,我们这里为逻辑回归的代价函数增加一个正则化的表达式:
【机器学习笔记3.1】线性模型正则化

参考文献

[1] 黄海广. MIT 机器学习教程