前言
使用正则化技术缓解过拟合现象,使模型更具泛化性
1.过拟合问题(Overfit)
2.代价函数(Cost Function)
3.线性回归的正则化(Regularized Linear Regression)
4.逻辑回归的正则化(Regularized Logistic Regression)
正则化(Regularization)
(一)过拟合问题(Overfit)
先看两张图:
两张图分别代表回归问题和分类问题。相同的是,在两幅图的第一个图中,我们发现数据拟合的并不好,直接用一条直线不能将数据很好的分开,这种现象我们称之为欠拟合,也就是没有拟合的很好;第二图中两幅图都拟合的很好,都能将数据很好的分开,虽然有个别例外;第三张图拟合的是最好的,没有遗漏任何一个数据点,但是由于过于强调拟合原始数据,而丢失了算法的本质:预测新数据。我们可以看出,若给出一个新的值使之预测,它将表现的很差,这种现象我们称之为过拟合,虽然能非常好地适应我们的训练集但在新输入变量进行预测时可能会效果不好。我们想获得的就是第二张图的效果。就以多项式理解,我们发现
x
x
x 的次数越高,拟合的越好,但相应的预测的能力就可能变差。当我们的特征变量有很多的时候,为了更好的拟合就会大量的使用高阶多项式,过拟合现象也会非常常见。
针对过拟合现象,有以下解决方法:
-
减少特征数量
1.人工选择需要保留的特征,将不需要的特征删除,以达到减少高阶多项式的目的。但如果每个特征都有或多或少的影响,则无法使用。
2.使用一个模型选择算法,自动决定要保留和剔除的变量。缺点同上。 -
正则化
保留所有特征,但削弱模型参数 θ \theta θ的重要性,即减小它的值,达到削弱高阶多项式影响的效果。在许多特征都发挥一定影响的时候最为有效。
(二)代价函数(Cost Function)
我们将修改之前所学代价函数的形式,运用正则化技术使得假设函数更具泛化能力。
我们可以从之前的事例中看出,正是那些高次项导致了过拟合的产生,所以如果我们能让这些高次项的系数接近于0的话,也就是削弱它们的影响力,我们就能很好的拟合了。 所以我们要做的就是在一定程度上减小这些参数
θ
\theta
θ 的值,这就是正则化的基本方法。
例如,对于
h
θ
(
x
)
=
θ
0
+
θ
1
x
1
+
θ
2
x
2
2
+
θ
3
x
3
3
+
θ
4
x
4
4
{h_\theta}\left( x \right)={\theta_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}^2}+{\theta_{3}}{x_{3}^3}+{\theta_{4}}{x_{4}^4}
hθ(x)=θ0+θ1x1+θ2x22+θ3x33+θ4x44,我们可以认为
θ
3
\theta_{3}
θ3和
θ
4
\theta_{4}
θ4是高阶项,通过在它们之前增大很大的系数,在进行最小化代价函数的时候自然会减少高阶项的值以达到代价函数足够小的目标。修改后的代价函数如下:
min
θ
,
1
2
m
[
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
+
1000
θ
3
2
+
10000
θ
4
2
]
\underset{\theta }{\mathop{\min }},\frac{1}{2m}[\sum\limits_{i=1}^{m}{{{\left( {{h}_{\theta }}\left( {{x}^{(i)}} \right)-{{y}^{(i)}} \right)}^{2}}+1000\theta _{3}^{2}+10000\theta _{4}^{2}]}
θmin,2m1[i=1∑m(hθ(x(i))−y(i))2+1000θ32+10000θ42]
进一步的,在实际的正则化方法中,我们没有必要挑选对那些
θ
i
\theta_{i}
θi进行增加惩罚系数,我们直接对所有的参数进行正则化。
即得增加正则化后的代价函数:
J
(
θ
)
=
1
2
m
[
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
+
λ
∑
j
=
1
n
θ
j
2
]
J\left( \theta \right)=\frac{1}{2m}[\sum\limits_{i=1}^{m}{{{({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})}^{2}}+\lambda \sum\limits_{j=1}^{n}{\theta_{j}^{2}}]}
J(θ)=2m1[i=1∑m(hθ(x(i))−y(i))2+λj=1∑nθj2],其中,
λ
\lambda
λ称为正则化参数(Regularization Parameter),它一方面要确保假设函数能够很好的描述数据集,一方面也要保证参数足够小。我们不对
θ
0
\theta_{0}
θ0实行正则化。
正则化参数
λ
\lambda
λ的值不能过大,如果取1010的话,会导致所有的参数都非常小,都会接近0,这时候的假设函数就会约等于
θ
0
\theta_{0}
θ0,变成一条直线了。
(三)线性回归的正则化(Regularized Linear Regression)
我们开始将正则化技术运用到线性回归中,代价函数增加正则化项之后如下:
运用梯度下降对参数进行更新(由于不对
θ
0
\theta_{0}
θ0实行正则化,
θ
0
\theta_{0}
θ0需要单独列出):
将式子进行整理之后变成下面这样,我们就会发现变化其实就在于从
θ
j
\theta_{j}
θj变成了
θ
j
(
1
−
a
λ
m
)
{\theta_j}(1-a\frac{\lambda }{m})
θj(1−amλ),也就是在每一次更新的时候对参数多减少一点点,最终的参数也会因此减小,达到我们想要的目的。
使用正则化之后,正规方程的形式也稍有变化,可以证明只要正则化参数大于0,方程不会存在不可逆的情况。
(四)逻辑回归的正则化(Regularized Logistic Regression)
我们将正则化技术运用到逻辑回归中,我们增加正则化项,得到代价函数:
J
(
θ
)
=
1
m
∑
i
=
1
m
[
−
y
(
i
)
log
(
h
θ
(
x
(
i
)
)
)
−
(
1
−
y
(
i
)
)
log
(
1
−
h
θ
(
x
(
i
)
)
)
]
+
λ
2
m
∑
j
=
1
n
θ
j
2
J\left( \theta \right)=\frac{1}{m}\sum\limits_{i=1}^{m}{[-{{y}^{(i)}}\log \left( {h_\theta}\left( {{x}^{(i)}} \right) \right)-\left( 1-{{y}^{(i)}} \right)\log \left( 1-{h_\theta}\left( {{x}^{(i)}} \right) \right)]}+\frac{\lambda }{2m}\sum\limits_{j=1}^{n}{\theta _{j}^{2}}
J(θ)=m1i=1∑m[−y(i)log(hθ(x(i)))−(1−y(i))log(1−hθ(x(i)))]+2mλj=1∑nθj2
同样,运行梯度下降进行更新,过程如下:
需要说明,虽然看上去同线性回归一样,但由于
h
θ
(
x
)
=
g
(
θ
T
X
)
{h_\theta}\left( x \right)=g\left( {\theta^T}X \right)
hθ(x)=g(θTX),所以与线性回归完全不同。