1 过拟合问题
如下图所示的回归问题,第一个模型是线性模型,欠拟合,不能很好地适应训练集;第三个模型就属于过拟合,太过于强调训练数据,而不能推广到新的数据,进行对新数据的预测。中间的模型最为合适。
同样的,在分类问题中也有这种现象:
如何处理过拟合问题:
- 丢弃一些不能帮助我们正确预测的特征。可以手工选择保留哪些特征,或使用模型算法来帮忙
- 正则化,保留所有的特征,但是减少参数的大小
2 正则化
在上面的回归问题中我们的过拟合模型为:
h
θ
(
x
)
=
θ
0
+
θ
1
x
1
+
θ
2
x
2
+
θ
3
x
3
+
θ
4
x
4
h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_3+\theta_4x_4
hθ(x)=θ0+θ1x1+θ2x2+θ3x3+θ4x4
可以看出,正是高次项导致了过拟合的产生,如果我们能让这些高次项接近0的话,就可以解决这个问题。所以我们要在一定程度上减小
θ
3
,
θ
4
\theta_3,\theta_4
θ3,θ4的大小,即在代价函数上进行修改,在
θ
3
,
θ
4
\theta_3,\theta_4
θ3,θ4上设置惩罚:
min
θ
1
2
m
[
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
+
1000
θ
3
2
+
10000
θ
4
2
]
\min_\theta \frac{1}{2m}[ \sum_{i=1}^m (h_\theta(x^{(i)}) -y^{(i)} )^2 + 1000\theta_3^2 + 10000\theta_4^2 ]
θmin2m1[i=1∑m(hθ(x(i))−y(i))2+1000θ32+10000θ42]通过这样的代价函数,得到的
θ
3
,
θ
4
\theta_3,\theta_4
θ3,θ4就会比以前的小很多。假如数据过多的话,我们就要对所有的特征进行惩罚:
min
θ
1
2
m
[
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
+
λ
∑
j
=
1
n
θ
j
2
]
\min_\theta \frac{1}{2m}[ \sum_{i=1}^m (h_\theta(x^{(i)}) -y^{(i)} )^2 + \lambda \sum_{j=1}^n \theta_j^2 ]
θmin2m1[i=1∑m(hθ(x(i))−y(i))2+λj=1∑nθj2]其中
λ
\lambda
λ称为正则化参数(Regularization Parameter),根据惯例,我们不对
θ
0
\theta_0
θ0进行惩罚,经过正则化后,模型的前后对比如下图:
若 λ \lambda λ过大,则所有参数都会变小,模型就会变成 h θ ( x ) = θ 0 h_\theta(x)=\theta_0 hθ(x)=θ0,也就是图中红色直线的情况。
3 正则化应用
3.1 正则化线性回归
正则化线性回归的代价函数为:
J
(
θ
)
=
1
2
m
∑
i
=
1
m
[
(
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
+
λ
∑
j
=
1
n
θ
j
2
)
]
J ( \theta ) = \frac { 1 } { 2 m } \sum _ { i = 1 } ^ { m } \left[ \left( \left( h _ { \theta } ( x ^ { ( i ) } ) - y ^ { ( i ) } \right) ^ { 2 } + \lambda \sum _ { j = 1 } ^ { n } \theta _ { j } ^ { 2 } \right )\right ]
J(θ)=2m1i=1∑m[((hθ(x(i))−y(i))2+λj=1∑nθj2)]
然后进行梯度下降算法,由于我们没有对
θ
0
\theta_0
θ0进行正则化,所以梯度下降算法分为两种情形:
θ
0
:
=
θ
0
−
α
1
m
∑
i
=
1
m
[
h
θ
(
x
(
i
)
)
−
y
(
i
)
]
x
0
(
i
)
\theta _ { 0 } : = \theta _ { 0 } - \alpha \frac { 1 } { m } \sum _ { i = 1 } ^ { m } \left[ h _ { \theta } \left( x ^ { ( i ) } \right) - y ^ { ( i ) } \right] x _ { 0 } ^ { ( i ) }
θ0:=θ0−αm1i=1∑m[hθ(x(i))−y(i)]x0(i)
θ
j
:
=
θ
j
−
α
[
1
m
∑
i
=
1
m
[
h
θ
(
x
(
i
)
)
−
y
(
i
)
]
x
j
(
i
)
+
λ
m
θ
j
]
\theta _ { j } : = \theta _ { j } - \alpha \left[\frac { 1 } { m } \sum _ { i = 1 } ^ { m } \left[ h _ { \theta } \left( x ^ { ( i ) } \right) - y ^ { ( i ) } \right] x _ { j } ^ { ( i ) } + \frac { \lambda } { m } \theta _ { j } \right]
θj:=θj−α[m1i=1∑m[hθ(x(i))−y(i)]xj(i)+mλθj]对上面的算法中 j =1,2,3…,n时的式子进行化简得:
θ
j
:
=
θ
j
(
1
−
α
λ
m
)
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
\theta _ { j } : = \theta _ { j } \left( 1 - \alpha \frac { \lambda } { m } \right) - \alpha \frac { 1 } { m } \sum _ { i = 1 } ^ { m } \left( h _ { \theta } \left( x ^ { ( i ) } \right) - y ^ { ( i ) } \right) x _ { j } ^ { ( i ) }
θj:=θj(1−αmλ)−αm1i=1∑m(hθ(x(i))−y(i))xj(i)
3.2 正则化逻辑回归模型
正则化逻辑回归得代价函数:
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 ( \theta ) = -\frac { 1 } { m } \sum _ { i = 1 } ^ { m } \left[ 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) \right] + \frac { \lambda } { 2 m } \sum _ { 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
梯度下降算法为:
θ
0
:
=
θ
0
−
α
1
m
∑
i
=
1
m
(
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
⋅
x
0
(
i
)
)
\theta _ { 0 } : = \theta _ { 0 } - \alpha \frac { 1 } { m } \sum _ { i = 1 } ^ { m } \left( \left( h _ { \theta } \left( x ^ { ( i ) } \right) - y ^ { ( i ) } \right) \cdot x _ { 0 } ^ { ( i ) } \right)
θ0:=θ0−αm1i=1∑m((hθ(x(i))−y(i))⋅x0(i))
θ
j
:
=
θ
j
−
α
1
m
∑
i
=
1
m
(
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
⋅
x
j
(
i
)
+
λ
m
θ
j
)
\theta _ { j } : = \theta _ { j } - \alpha \frac { 1} { m } \sum _ { i = 1 } ^ { m } \left( \left( h _ { \theta } \left( x ^ { ( i ) } \right) - y ^ { ( i ) } \right) \cdot x _ { j } ^ { ( i ) } + \frac { \lambda } { m } \theta _ { j } \right)
θj:=θj−αm1i=1∑m((hθ(x(i))−y(i))⋅xj(i)+mλθj)