什么是过拟合 (Overfitting)
来看三张图:分别是 【Underfit (High bias)】 【Pretty well】【Overfitting】
如果有太多特征features会导致它想法设法去适应我们的训练集,甚至会出现cost=0或者很接近0的情况。
如果我们想摆脱这种overfitting的状况,就必须简化Hypothesis的模型,对后面无关的x3,x4进行一定的惩罚。
我们对损失函数进行一定的改造,在后面加上
1000
∗
θ
3
2
+
1000
∗
θ
4
2
1000*{\theta_3}^2+1000*{\theta_4}^2
1000∗θ32+1000∗θ42,这样一来可以让
θ
3
{\theta_3}
θ3和
θ
4
{\theta_4}
θ4的值变得非常小。
但在实际上操作中,我们并不知道谁的相关性比较大谁比较小,这时候,我们就需要正则化来控制这个度了。
正则化 (Regularization)
我们对之前的损失函数进行改造,引入一个正则化参数
λ
\lambda
λ。
我们在原有的损失函数上面增加:
λ
∑
j
=
1
n
θ
j
2
\lambda\sum_{j=1}^n\theta_j^2
λj=1∑nθj2
最新的损失函数变成:
J
(
θ
)
=
1
2
m
[
∑
i
=
1
m
(
h
θ
(
x
)
−
y
)
2
+
λ
∑
j
=
1
n
θ
j
2
]
J(\theta)=\frac{1}{2m} [\sum^m_{i=1}(h_{\theta}(x)-y)^2+\lambda\sum_{j=1}^n\theta_j^2]
J(θ)=2m1[i=1∑m(hθ(x)−y)2+λj=1∑nθj2]
λ
\lambda
λ 起到两个作用:
- 让 Hypothesis 更好的拟合
- 让参数尽量的小
λ
\lambda
λ 越大,结果参数越小,所以
λ
\lambda
λ 不能取得过大,导致除了
θ
0
\theta_0
θ0 外的参数都很小,趋近于0的话就变成一条扁平的直线了。
在梯度迭代中体会正则化的意义
我们之前的梯度迭代公式:
θ j : = θ j − α ∂ J ( θ 0 , θ 1 , θ 2 , . . . , θ n ) ∂ θ j \theta_j:=\theta_j-\alpha\frac{\partial J(\theta_0,\theta_1,\theta_2,...,\theta_n)}{\partial\theta_j} θj:=θj−α∂θj∂J(θ0,θ1,θ2,...,θn)
使用正则化之后:
θ
j
:
=
θ
j
(
1
−
α
λ
m
)
−
α
∂
J
(
θ
0
,
θ
1
,
θ
2
,
.
.
.
,
θ
n
)
∂
θ
j
\theta_j:=\theta_j(1-\alpha\frac{\lambda}{m})-\alpha\frac{\partial J(\theta_0,\theta_1,\theta_2,...,\theta_n)}{\partial\theta_j}
θj:=θj(1−αmλ)−α∂θj∂J(θ0,θ1,θ2,...,θn)
我们已知
1
−
α
λ
m
≤
1
1-\alpha\frac{\lambda}{m} \leq 1
1−αmλ≤1,所以它的意义就相当于:
θ
j
∗
0.95
\theta_j*0.95
θj∗0.95,(假如是0.95),大概这样的放缩作用,这样的好处是能让
θ
\theta
θ在梯度变化中能够取到更多可能的数值。
正则方程解法中的正则化
Set
∂
J
(
θ
0
,
θ
1
,
θ
2
,
.
.
.
,
θ
n
)
∂
θ
j
=
0
\frac{\partial J(\theta_0,\theta_1,\theta_2,...,\theta_n)}{\partial\theta_j}=0
∂θj∂J(θ0,θ1,θ2,...,θn)=0 to solve
θ
\theta
θ
θ
=
(
X
T
X
)
X
T
Y
\theta=(X^TX)X^TY
θ=(XTX)XTY
使用正则化之后:
θ
=
(
X
T
X
+
λ
[
0
⋯
0
⋮
1
⋮
0
⋯
1
]
)
X
T
Y
\theta=(X^TX+\lambda\begin{bmatrix} 0 & \cdots & 0 \\ \vdots & 1 & \vdots \\ 0 & \cdots & 1 \end{bmatrix} )X^TY
θ=(XTX+λ⎣⎢⎡0⋮0⋯1⋯0⋮1⎦⎥⎤)XTY
除了对角线(除第一个是0外)是1,其余都是0,矩阵满足
R
n
∗
n
R^{n*n}
Rn∗n