什么是过拟合问题
- underfit 欠拟合:先入为主,有很强的偏差 high bias
- just right
- overfit 过拟合:高方差 high variance——有太多的特征值(阶次太高),对于训练集拟合的很好(为了完美拟合训练集,函数变得很扭曲),但是无法泛化(generalize)到新的样本(new examples)中
如果出现过拟合,我们该怎么解决
- 尽量减少选取变量的数量 reduce number of features——选择哪些特征变量舍弃、哪些保留
- 正则化 regularization——保留所有特征变量,但是减少量级or 参数 θ j \theta_j θj的大小 (当有很多特征变量,每个都对于y有些影响)
正则化是怎样运行的
J ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 + λ ∑ j = 1 m θ j 2 J(\theta) = \frac{1}{2m}\sum_{i = 1}^m (h_\theta(x^{(i)})- y^{(i)})^2+\lambda\sum_{j = 1}^m \theta_j^2 J(θ)=2m1i=1∑m(hθ(x(i))−y(i))2+λj=1∑mθj2
加上一个惩罚项,能让 θ j \theta_j θj尽可能小,最后得到的拟合曲线更加平滑
线性回归的正则化
推导了两种算法
- 基于梯度下降的
- 基于正规方程的
加上一项
加上所有参数的平方,乘以系数
λ
\lambda
λ
J
(
θ
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
+
λ
∑
j
=
1
m
θ
j
2
J(\theta) = \frac{1}{2m}\sum_{i = 1}^m (h_\theta(x^{(i)})- y^{(i)})^2+\lambda\sum_{j = 1}^m \theta_j^2
J(θ)=2m1i=1∑m(hθ(x(i))−y(i))2+λj=1∑mθj2
如何实现
θ 0 : = θ 0 − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) θ j : = θ j − α [ 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) + λ m θ j ] \theta_0:=\theta_0 - \alpha\frac{1}{m}\sum_{i = 1}^m(h_\theta(x^{(i)})-y^{(i)})x_0^{(i)}\\ \theta_j:=\theta_j - \alpha[\frac{1}{m}\sum_{i = 1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}+\frac{\lambda}{m}\theta_j]\\ θ0:=θ0−αm1i=1∑m(hθ(x(i))−y(i))x0(i)θj:=θj−α[m1i=1∑m(hθ(x(i))−y(i))xj(i)+mλθj]
移项后:
θ
j
:
=
θ
j
(
1
−
α
λ
m
)
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
\theta_j:=\theta_j(1-\alpha\frac{\lambda}{m}) - \alpha\frac{1}{m}\sum_{i = 1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}
θj:=θj(1−αmλ)−αm1i=1∑m(hθ(x(i))−y(i))xj(i)
从直观上理解,就是每次参数 θ j \theta _j θj 乘以比1小的数,然后进行之前相同的梯度下降的操作
使用正规方程
X = [ ( x ( 1 ) ) T . . . ( x ( M ) ) T ] y = [ y ( 1 ) . . . y ( M ) ] X = \begin{bmatrix} (x^{(1)})^T \\ .\\.\\.\\ (x^{(M)})^T \end{bmatrix} \quad y = \begin{bmatrix} y^{(1)} \\ .\\.\\.\\ y^{(M)} \end{bmatrix} X=⎣⎢⎢⎢⎢⎡(x(1))T...(x(M))T⎦⎥⎥⎥⎥⎤y=⎣⎢⎢⎢⎢⎡y(1)...y(M)⎦⎥⎥⎥⎥⎤
对于X,每一行表示一个单独的训练样本
Y是训练集中所有数据的标签
之前我们发现
θ
=
(
X
T
X
)
−
1
X
T
y
\theta = (X^TX)^{-1}X^Ty
θ=(XTX)−1XTy
加上正规化后
θ = ( X T X + λ [ 0 1 1 . . 1 ] ) − 1 X T y \theta = (X^TX + \lambda \begin{bmatrix} 0\\&1\\&&1\\&&&.\\&&&&.\\&&&&&1 \end{bmatrix} )^{-1}X^Ty θ=(XTX+λ⎣⎢⎢⎢⎢⎢⎢⎡011..1⎦⎥⎥⎥⎥⎥⎥⎤)−1XTy
注意:
- 原来正规方程需要考虑是否可逆的问题
- 加上正规化后,不会有这个问题,
logistic回归的正则化
两种算法
- 梯度下降
- 更高级的优化算法
加上一项,
J ( θ ) = − [ 1 m ∑ i = 1 m y ( i ) l o g h θ ( x ( i ) ) + ( 1 − y ( i ) ) l o g ( 1 − h θ ( x ( i ) ) ] + λ 2 m ∑ j = 1 m θ j 2 J(\theta) = -[\frac{1}{m}\sum_{i = 1}^my^{(i)}logh_\theta(x^{(i)})+(1-y^{(i)})log(1-h_\theta(x^{(i)})] + \frac{\lambda}{2m}\sum_{j = 1}^m \theta_j^2 J(θ)=−[m1i=1∑my(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i))]+2mλj=1∑mθj2
如何实现
重复:
θ
0
:
=
θ
0
−
α
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
0
(
i
)
θ
j
:
=
θ
j
−
α
[
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
+
λ
m
θ
j
]
\theta_0:=\theta_0 - \alpha\frac{1}{m}\sum_{i = 1}^m(h_\theta(x^{(i)})-y^{(i)})x_0^{(i)}\\ \theta_j:=\theta_j - \alpha[\frac{1}{m}\sum_{i = 1}^m(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}+\frac{\lambda}{m}\theta_j]
θ0:=θ0−αm1i=1∑m(hθ(x(i))−y(i))x0(i)θj:=θj−α[m1i=1∑m(hθ(x(i))−y(i))xj(i)+mλθj]