Week3:
正则化
1. 欠拟合(under fitting)和过拟合(over fitting)
- 欠拟合:训练数据中有显著的预测误差
- 过拟合:训练数据预测误差很小,但是测试数据预测误差很大
2 解决过拟合问题
2.1 通常情况
- 丢弃一些不能帮助我们正确预测的特征。可以是手工选择保留哪些特征,或者使用一 些模型选择的算法来帮忙(例如PCA)。
- 正则化。保留所有的特征,但是减少参数的大小(magnitude);当有很多个特征的时候,并且每个特征都会对最终预测值产生影响,正则化可以保证运作良好。
2.2 正则化costFunction和正则化参数 λ \lambda λ
正则化的目的是为了简化假设模型,根据奥卡姆剃刀原则,越简单的模型越不容易出现过拟合。 J ( θ ) = 1 m ∑ i = 1 m c o s t ( h θ ( x ) , y ) + λ 2 m ∑ j n θ j 2 J(\theta) =\frac{1}{m}\sum_{i=1}^m cost(h_\theta(x),y)+\frac{\lambda}{2m}\sum^n_j \theta_j^2 J(θ)=m1i=1∑mcost(hθ(x),y)+2mλj∑nθj2 其中 λ \lambda λ又称为正则化参数(RegularizationParameter)
- 线性回归: c o s t ( h θ ( x ) , y ) = 1 2 ( h θ ( x ( i ) ) − y ( i ) ) 2 cost(h_\theta(x),y) = \frac{1}{2} (h_\theta(x^{(i)})−y^{(i)})^2 cost(hθ(x),y)=21(hθ(x(i))−y(i))2
- 逻辑回归:
c
o
s
t
(
h
θ
(
x
)
,
y
)
=
−
y
log
(
h
θ
(
x
)
)
−
(
1
−
y
)
log
(
1
−
h
θ
(
x
)
)
cost(h_\theta(x),y)=-y\log(h_\theta(x))-(1-y)\log(1-h_\theta(x))
cost(hθ(x),y)=−ylog(hθ(x))−(1−y)log(1−hθ(x))
λ \lambda λ 控制两个不同目标之间的取舍,即更好的去拟合训练集的目标和将参数控制的更小的目标,从而保持假设模型的相对简单,避免出现过拟合的情况。
- 选择的 λ \lambda λ太大:可能会过多地消除特征,导致 θ \theta θ都约等于 0 了,最终预测函数变成了水平直线了。这就变成了欠拟合的例子了(偏见性太强,偏差过高)。
- 选择的 λ \lambda λ太小:失去了正则项的意义。
2.3 正则化线性回归
2.3.1 梯度下降法
在线性回归中,我们的预测代价如下评估:
J
(
θ
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
+
λ
2
m
∑
j
n
θ
j
2
J(\theta) =\frac{1}{2m}\sum_{i=1}^m (h_\theta(x^{(i)})−y^{(i)})^2+\frac{\lambda}{2m}\sum^n_j \theta_j^2
J(θ)=2m1∑i=1m(hθ(x(i))−y(i))2+2mλ∑jnθj2
重复直到收敛:
θ 0 : = θ 0 − α ∂ ∂ θ 0 J ( θ ) = θ 0 − α 1 m ∑ i = 1 m [ ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) ] \theta_0:=\theta_0-\alpha \frac{\partial}{\partial \theta_0} J(\theta)=\theta_0 - \alpha \frac{1}{m} \sum^m_{i=1}[(h_\theta(x^{(i)})- y^{(i)})x^{(i)}_0] θ0:=θ0−α∂θ0∂J(θ)=θ0−αm1∑i=1m[(hθ(x(i))−y(i))x0(i)]
θ j : = θ j − α ∂ ∂ θ j J ( θ ) = θ j ( 1 − α λ m ) − α 1 m ∑ i = 1 m [ ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) ] \theta_j:=\theta_j-\alpha \frac{\partial}{\partial \theta_j} J(\theta)=\theta_j(1-\alpha \frac{\lambda}{m}) - \alpha \frac{1}{m} \sum^m_{i=1}[(h_\theta(x^{(i)})- y^{(i)})x^{(i)}_j] θj:=θj−α∂θj∂J(θ)=θj(1−αmλ)−αm1∑i=1m[(hθ(x(i))−y(i))xj(i)] (对j=1,…,n)
这里 ( 1 − α λ m ) (1-\alpha \frac{\lambda}{m}) (1−αmλ)会恒小于1,比如0.99。于是梯度下降的过程就是每次更新都把参数乘以 0.999,缩小一点点,然后再向最小点的方向移动一下,达到了Regularization 的目的。
2.3.2 正规方程法
在线性回归中,我们的预测代价如下评估:
J
(
θ
)
=
1
2
m
(
X
Θ
−
Y
)
T
(
X
Θ
−
Y
)
+
λ
2
m
∣
∣
Θ
∣
∣
2
2
J(\theta) =\frac{1}{2m}(X\Theta-Y)^T (X\Theta-Y)+\frac{\lambda}{2m}||\Theta||_2^2
J(θ)=2m1(XΘ−Y)T(XΘ−Y)+2mλ∣∣Θ∣∣22
Θ = ( X T X + λ L ) − 1 X T Y \Theta = (X^T X + \lambda L)^{-1}X^T Y Θ=(XTX+λL)−1XTY
其中 L = [ 0 1 ⋱ 1 ] L= \begin{bmatrix} 0 & & & & & \\ & 1 & & & &\\ & & & \ddots & \\ & & & & 1 \\ \end{bmatrix} L=⎣⎢⎢⎡01⋱1⎦⎥⎥⎤
在第二周课程中,提到了正规方程中,可以通过正则化解决不可逆问题。
为什么能解决不可逆?待补充
因此对于正规方程,正则化相当于一石二鸟。
2.3 正则化逻辑回归
预测代价如下评估:
J
(
θ
)
=
[
1
m
∑
i
=
1
m
−
y
log
(
h
θ
(
x
)
)
−
(
1
−
y
)
log
(
1
−
h
θ
(
x
)
)
]
+
λ
2
m
∑
j
n
θ
j
2
J(\theta) =[\frac{1}{m}\sum_{i=1}^m -y\log(h_\theta(x))-(1-y)\log(1-h_\theta(x))]+\frac{\lambda}{2m}\sum^n_j \theta_j^2
J(θ)=[m1∑i=1m−ylog(hθ(x))−(1−y)log(1−hθ(x))]+2mλ∑jnθj2
重复直到收敛:
θ 0 : = θ 0 − α ∂ ∂ θ 0 J ( θ ) = θ 0 − α 1 m ∑ i = 1 m [ ( h θ ( x ( i ) ) − y ( i ) ) x 0 ( i ) ] \theta_0:=\theta_0-\alpha \frac{\partial}{\partial \theta_0} J(\theta)=\theta_0 - \alpha \frac{1}{m} \sum^m_{i=1}[(h_\theta(x^{(i)})- y^{(i)})x^{(i)}_0] θ0:=θ0−α∂θ0∂J(θ)=θ0−αm1∑i=1m[(hθ(x(i))−y(i))x0(i)]
θ j : = θ j − α ∂ ∂ θ j J ( θ ) = θ j ( 1 − α λ m ) − α 1 m ∑ i = 1 m [ ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) ] \theta_j:=\theta_j-\alpha \frac{\partial}{\partial \theta_j} J(\theta)=\theta_j(1-\alpha \frac{\lambda}{m}) - \alpha \frac{1}{m} \sum^m_{i=1}[(h_\theta(x^{(i)})- y^{(i)})x^{(i)}_j] θj:=θj−α∂θj∂J(θ)=θj(1−αmλ)−αm1∑i=1m[(hθ(x(i))−y(i))xj(i)] (对j=1,…,n)
注意:
- 虽然正则化的逻辑回归中的梯度下降和正则化的线性回归中的表达式看起来一样,
但由于两者的 h θ ( x ) h_\theta(x) hθ(x) 不同,所以还是有很大差别。 - θ 0 \theta_0 θ0 不参与其中的任何一个正则化。
在Octave 中,我们依旧可以用 fminuc 函数来求解代价函数最小化的参数,值得注意的 是参数𝜃0的更新规则与其他情况不同。
⚠️补充:正则化与模型选择[待写] 链接
3. 代码
3.1 Python代码
代码地址待后续补充