问题引入
当预测函数的项次数过高时,算法为了降低代价,也就是差异,会跑出一条畸形的曲线。
虽然这条畸形的曲线完美的拟合了所有的数据点,但是显然这样一条曲线并不具有可推广性、泛化性。对于以后给出的数据也不能准确的预测。这种情况称为拟合过度。
一般在数据量较小,而特征值较多的情况下,过度拟合发生的概念较高。
正则化
为了在保留较小的高次项的基础上,解决过度拟合,我们需要进行正则化。
我们对于原有的代价函数
J
(
θ
)
J(\theta)
J(θ),使之增加对于高次项的惩罚,例如:
J
(
θ
)
:
=
J
(
θ
)
+
1000
θ
4
2
J(\theta):=J(\theta)+1000\theta_4^2
J(θ):=J(θ)+1000θ42
这样做的影响很明显,最后的预测函数中,
θ
4
\theta_4
θ4会尽可能的小。
但是实际上,我们需要让预测函数曲线更加的平滑,这需要使所有的参数都不要太大,所以,一般的正则化如下:
注意,由于
θ
0
\theta_0
θ0影响的只是预测值的上下浮动距离,所以并不需要对其正则化。
正则化…… λ \lambda λ
λ \lambda λ是正则化参数,用于调节对这些参数的惩罚力度。
使用正则化后,我们的代价函数其实做到了两方面事情:拟合、防止过度拟合。而 λ \lambda λ起到了一个调节天平的作用。
当 λ \lambda λ过小,相当于没有正则化,起不到防止过度拟合的作用。
当
λ
\lambda
λ过大,会导致除
θ
1
\theta_1
θ1外的项都趋近于0,最后的预测函数图像就类似一条水平线,我们称之为欠拟合。
正则化……线性回归……梯度下降法
我们将
J
(
θ
)
J(\theta)
J(θ)写成上述形式后,
J
(
θ
)
J(\theta)
J(θ)对
θ
1
.
.
.
θ
n
\theta_1...\theta_n
θ1...θn求偏导数的结果如下:
移项后变为:
正则化……线性回归……特征方程法
在求逆之前加上一个如下矩阵:
值得注意的是,加完这个矩阵后,结果的矩阵一定可逆,也就不需要使用伪逆运算了。
正则化……逻辑回归
在代价函数上加一项
λ
2
m
∑
j
=
1
n
θ
j
2
\dfrac{\lambda}{2m}\sum_{j=1}^n\theta_j^2
2mλ∑j=1nθj2即可避免过度拟合。
最后的偏导数部分,和你想的一样,除了
h
θ
(
x
)
h_\theta(x)
hθ(x)意义不同外,其它都是一样的: