基本概念
机器学习模型面临的两个主要问题是欠拟合与过拟合。欠拟合,即模型具有较高的偏差,说明模型没有从数据中学到什么,如下左图所示。而过拟合,即模型具有较高的方差,意味着模型的经验误差低而泛化误差高,对新数据的泛化能力差,如下右图所示。
通常,欠拟合是由于模型过于简单或使用数据集的特征较少导致的。相反,过拟合则是模型过于复杂或特征过多引起的。欠拟合的问题比较容易解决,而过拟合的问题则有些棘手。一般而言,解决过拟合的方法包括降维和正则化。
正则化损失函数
正则化是通过向损失函数中添加惩罚项以限制参数大小的一种方法。假设我们有如下多项式线性回归模型:
h
θ
(
x
)
θ
0
+
θ
1
x
+
θ
2
x
2
+
θ
3
x
3
+
θ
4
x
4
h_\theta(x)\theta_0 + \theta_1x+\theta_2x^2+\theta_3x^3+\theta_4x^4
hθ(x)θ0+θ1x+θ2x2+θ3x3+θ4x4
为了避免模型过于复杂,我们需要削弱
θ
3
x
3
\theta_3x^3
θ3x3和
θ
4
x
4
\theta_4x^4
θ4x4对模型的影响。因此,我们需要对这两项进行“惩罚”,避免它们过大。所以,我们把这两个参数乘以一个较大的系数,加到损失函数中:
min
θ
1
2
n
∑
i
=
1
n
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
+
1000
⋅
θ
3
2
+
1000
⋅
θ
4
2
\min_{\theta} \frac{1}{2n}\sum_{i=1}^n\left(h_\theta(x^{(i)})-y^{(i)}\right) + 1000 \cdot \theta_3^2+ 1000 \cdot \theta_4^2
θmin2n1i=1∑n(hθ(x(i))−y(i))+1000⋅θ32+1000⋅θ42
这样一来,为了求解损失函数的最小值,式中
θ
3
\theta_3
θ3和
θ
4
\theta_4
θ4的值就不能过大,也就限制了模型的复杂度。如果要限制所有的参数,那么损失函数就是下面这种形式:
min
θ
1
2
n
∑
i
=
1
n
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
+
λ
∑
j
=
1
d
θ
j
2
\min_{\theta} \frac{1}{2n}\sum_{i=1}^n\left(h_\theta(x^{(i)})-y^{(i)}\right) + \lambda\sum_{j=1}^d\theta_j^2
θmin2n1i=1∑n(hθ(x(i))−y(i))+λj=1∑dθj2
其中
λ
>
0
\lambda \gt 0
λ>0是正则化参数。下面,我们将正则化应用到之前所学的线性回归和对数几率回归中。
线性回归
梯度下降法
损失函数:
J
(
θ
)
=
1
2
n
[
∑
i
=
1
n
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
+
λ
∑
j
=
1
d
θ
j
2
]
J(\theta) = \frac {1}{2n}\left[ \sum_{i=1}^n \left( h_\theta (x^{(i)}) - y^{(i)} \right)^2 + \lambda\sum_{j=1}^d\theta_j^2\right]
J(θ)=2n1[i=1∑n(hθ(x(i))−y(i))2+λj=1∑dθj2]
今天懒得推导了(其实这个和不带正则化项的推导差不多),直接写更新方程吧:
Repeat
{
θ
0
≔
θ
0
−
α
1
n
∑
i
=
1
n
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
0
(
i
)
θ
j
≔
θ
j
−
α
[
(
1
n
∑
i
=
1
n
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
)
+
λ
n
θ
j
]
j
∈
{
1
,
2...
d
}
}
\begin{aligned} & \text{Repeat}\ \lbrace \\ & \ \ \ \ \theta_0 \coloneqq \theta_0 - \alpha\ \frac{1}{n}\ \sum_{i=1}^n (h_\theta(x^{(i)}) - y^{(i)})x_0^{(i)} \\ & \ \ \ \ \theta_j \coloneqq \theta_j - \alpha\ \left[ \left( \frac{1}{n}\ \sum_{i=1}^n (h_\theta(x^{(i)}) - y^{(i)})x_j^{(i)} \right) + \frac{\lambda}{n}\theta_j \right] &\ \ \ \ \ \ \ \ \ \ j \in \lbrace 1,2...d\rbrace\\ & \rbrace \end{aligned}
Repeat { θ0:=θ0−α n1 i=1∑n(hθ(x(i))−y(i))x0(i) θj:=θj−α [(n1 i=1∑n(hθ(x(i))−y(i))xj(i))+nλθj]} j∈{1,2...d}
正规方程法
θ
=
(
X
T
X
+
λ
⋅
L
)
−
1
X
T
y
, where
L
=
[
0
1
1
⋱
1
]
(
d
+
1
)
×
(
d
+
1
)
\begin{aligned} & \theta = \left( X^TX + \lambda \cdot L \right)^{-1} X^Ty \text{, where}\ \ L = \begin{bmatrix} 0 & & & & \\ & 1 & & & \\ & & 1 & & \\ & & & \ddots & \\ & & & & 1 \\ \end{bmatrix}_{(d+1)\times(d+1)} \end{aligned}
θ=(XTX+λ⋅L)−1XTy, where L=⎣⎢⎢⎢⎢⎡011⋱1⎦⎥⎥⎥⎥⎤(d+1)×(d+1)
X
T
X
+
λ
⋅
L
X^TX + \lambda \cdot L
XTX+λ⋅L这个东西必定可逆。
首先,因为 u ⃗ T A T A u ⃗ = ∥ A u ⃗ ∥ 2 ≥ 0 \vec{u}^TA^TA\vec{u}=\|A\vec{u}\|^2 \ge0 uTATAu=∥Au∥2≥0,所以 A T A A^TA ATA是半正定矩阵,即 A T A A^TA ATA的所有特征值 μ i ≥ 0 \mu_i\ge 0 μi≥0。由 A T A u ⃗ = μ i u ⃗ A^TA\vec{u}=\mu_i \vec{u} ATAu=μiu可以推出 ( A T A + λ I ) u ⃗ = ( μ i + λ ) u ⃗ (A^TA+\lambda I)\vec{u}=(\mu_i+\lambda)\vec{u} (ATA+λI)u=(μi+λ)u,因此 A T A + λ I A^TA+\lambda I ATA+λI的特征值为 μ i + λ \mu_i+\lambda μi+λ。又因为 λ > 0 \lambda \gt 0 λ>0,所以 μ i + λ > 0 \mu_i+\lambda\gt0 μi+λ>0。由于 A T A + λ I A^TA+\lambda I ATA+λI的所有特征值都是大于 0 0 0的,因此矩阵 A T A + λ I A^TA+\lambda I ATA+λI一定可逆。
对数几率回归
损失函数:
J
(
θ
)
=
−
1
n
∑
i
=
1
n
[
y
(
i
)
log
h
θ
(
x
(
i
)
)
+
(
1
−
y
(
i
)
)
log
(
1
−
h
θ
(
x
(
i
)
)
)
+
λ
2
∑
j
=
1
d
θ
j
2
]
J(\theta) = -\frac{1}{n} \sum _{i=1}^n \left[ y^{(i)} \log h_\theta(x^{(i)}) + (1-y^{(i)})\log(1 - h_\theta(x^{(i)})) +\frac{\lambda}{2}\sum_{j=1}^d\theta_j^2\right ]
J(θ)=−n1i=1∑n[y(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))+2λj=1∑dθj2]
更新方程与线性回归类似,这里就不写了。