机器学习笔记(4)正则化

机器学习笔记(4)正则化

正则化是解决过拟合问题的一种有效手段。

过拟合

定义:如果我们有太多的特征,这时训练出的假设能很好地拟合训练集(代价函数的值约等于0),当不能很好地泛化到新的样本中。泛化是指一个假设模型应用到新样本的能力。

图一是欠拟合,图三是过拟合

解决过拟合

  1. 减少特征的数量
    • 人工选择需要保留的特征
    • 模型选择算法
  2. 正则化
    • 保留所有特征,减小参数$\theta$的值
    • 当我们有很多特征,且或多或少都对预测 y 有影响,正则化也可以工作的很好

正则化

ml_23.png

我们给代价函数新增了两项,并给 $\theta_3$ 和 $\theta_4$加上很大的系数,这样为了让代价函数的值最小,$\theta_3$ 和 $\theta_4$的值就会趋近与 0。最后的效果就好像我们在假设函数中直接去掉了这两项一样。

$$\Large Features:x_1,x_2,…,x_{100} $$
$$\Large Parameters:\theta_0,\theta_1,\theta_2,…,\theta_{100}$$
事实上,我们的问题中可能会有很多特征,但事先我们不知道该选择哪一个来缩小它们的值,所以我们需要缩小所有的值。
如此,代价函数需要作出这样的修改:
$$
\Large J(\Theta)=\frac{1}{2m}
\Huge[
\Large\sum_{i=1}^{m}{({h_\Theta}({x}^{(i)})-{y}^{(i)})}^{2}+
\lambda\sum_{i=2}^m\theta_j^2
\Huge]
$$
其中 $\lambda\sum_{i=2}^m\theta_j^2$ 是正则项,$\lambda$ 是正则化参数。

当我们的正则化参数 $\lambda$ 设置的过大时,可能会造成欠拟合的情况。因为此时的参数 $\theta_j$ 都已经趋近于 0。

ml_24

线性回归的正则化

梯度下降

$$ \Large repeat\left\{ \begin{aligned} \Theta_0 = \Theta_0-\alpha\sum_{i=1}^m(h_\theta(x^{(i)}-y^{(i)}))x_0^{(i)} \qquad \qquad\\ \Theta_j = \Theta_j-\alpha\sum_{i=1}^m(h_\theta(x^{(i)}-y^{(i)}))x_j^{(i)} +\frac{\lambda}{m}\theta_j , j\not ={0} \end{aligned} \right\} $$

这里我们的 $\theta_0$ 并不需要正则化。

正规方程

$$\large X = \underbrace{\begin{bmatrix} (x^{(1)})^T\\ (x^{(2)})^T\\ (x^{(3)})^T\\ ....\\ (x^{(m)})^T\\ \end{bmatrix}}_{m * (n+1)} \qquad y = \begin{bmatrix} y^{(0)} \\ y^{(1)} \\ y^{(2)} \\ ... \\ y^{(3)} \end{bmatrix} \qquad $$

这时原来的方程
$$\large\Theta = (X^TX)^{-1}X^Ty$$
我们为其添加新的一项
$$\large \Theta = (X^TX \qquad
\underbrace{\lambda\begin{bmatrix}
0 & … & 0 \
… & 1 & … \
0 & … & 1 \
\end{bmatrix}}_{(n+1)*(n+1)})^{-1}X^Ty$$
这样就实现了正规方程的正则化。
By the way,当 $\lambda$ 大于0时,括号内的矩阵肯定是可逆的。

逻辑回归的正则化

代价函数

在逻辑回归中代价函数也做了相应的变化
$$ \large J(\theta) = \Huge[ \large -\frac{1}{m}\sum_{i=1}^m y^{(i)}log(h_\theta(x^{(i)}))+(1-y^{(i)})log(1-h_\theta(x^{(i)})) \Huge]\large + \frac{\lambda}{2m}\sum_{j=1}^n\theta_j^2 $$

梯度下降

$$ \Large repeat\left\{ \begin{aligned} \Theta_0 = \Theta_0-\alpha\sum_{i=1}^m(h_\theta(x^{(i)}-y^{(i)}))x_0^{(i)} \qquad \qquad\\ \Theta_j = \Theta_j-\alpha\sum_{i=1}^m(h_\theta(x^{(i)}-y^{(i)}))x_j^{(i)} +\frac{\lambda}{m}\theta_j , j\not ={0} \end{aligned} \right\} $$

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×