update conclusion on linear regression.

This commit is contained in:
Shine wOng
2020-01-09 11:14:58 +08:00
parent 9c54760fee
commit bdc2fc7b8c
2 changed files with 139 additions and 30 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

View File

@@ -22,12 +22,12 @@
+ 过拟合
- 过拟合概述与产生原因,解决方案
- 正则化的损失函数
+ 梯度下降法:仍然是凸函数
+ 规范方程法:一定是可逆阵
- 规范方程法:一定是可逆阵
- 梯度下降法:仍然是凸函数
## 摘要
这篇文章主要介绍线性回归问题。任何一种统计学习方法都由三个要素组成,即**模型****策略**以及**算法**所谓模型,就是本文中的**假设函数**(`hypothesis function`)策略或者评价准则,即本文中的**损失函数**而算法,则是选取最优模型的方法。本文将从这三个方面对线性回归问题进行总结。
这篇文章主要介绍线性回归问题。任何一种统计学习方法都由三个要素组成,即**模型****策略**以及**算法**所谓模型,就是本文中的**假设函数**(`hypothesis function`)策略或者评价准则,即本文中的**损失函数**而算法,则是选取最优模型的方法。本文将从这三个方面对线性回归问题进行总结。
第一部分阐述了线性回归问题的基本概念,给出了它的假设函数以及损失函数的数学表达式,并且指出**平方损失函数**在本质上与**最大似然估计**无异。接下来的两个部分,分别阐述了求解该模型的两种算法,即**梯度下降法**与**规范方程法**,给出了两种方法的数学推导与数学表达式,并就实际应用中可能存在的问题进行讨论。最后,介绍了在统计学习中常见的一个问题——**过拟合**,并且就解决过拟合问题的常见方法——**正则化**(`regularization`)进行了深入的探讨。
@@ -135,10 +135,8 @@ $$
学习率的选择在梯度下降法中至关重要。如果学习率太小,则需要更多次迭代才能找到最优解,需要较长的学习时间;而如果学习率太大,也有可能导致收敛速度慢,甚至可能会发散。这是因为学习率太大时,不再满足全微分方程中微小变化量的条件,因此每次迭代后被优化函数都未必可以取到比上一次迭代更小的值。学习率的选择对$J(\theta)$收敛速度的影响如下图所示:
<img src = "images/select_alpha.png" align = "center"/>
可以看到,当$\alpha$很小时(如图中红色曲线所示),损失函数$J(\theta)$收敛速度较慢。随着$\alpha$逐渐增大,曲线逐渐变得陡峭,收敛速度越来越快。可是当$\alpha$很大时($\alpha = 1.3$,图中黑色曲线)收敛速度反而相对此前变慢了;$\alpha$继续增大将导致代价函数发散(图中洋红色曲线)。
因此,理想的方案是选择这样一个$\alpha$,它应该处于收敛与发散的临界点,一方面保证被优化函数最终收敛,另一方面还要有较快的收敛速度。
@@ -180,7 +178,7 @@ $$
容易看出,
$$
H = X^TX
H = \frac{1}{m}X^TX
$$
因此$H$显然是一个**半正定矩阵**,根据凸函数判别的充分条件,可以得出平方损失函数为凸函数。
@@ -203,30 +201,15 @@ $$
## 规范方程
## 过拟合
> 规范方程的直觉理解
> 规范方程法的推导
假设函数(hypothesis)$h_\theta(x)$满足
前面提到假设函数的表达式为
$$
h_\theta(x) = \theta^Tx = \theta_0x_0 + \theta_1x_1 + ... + \theta_nx_n = \Sigma_{i = 0}^{n}\theta_ix_i
h_\theta(x) = \theta^Tx = x^T\theta
$$
因此,平方损失函数(cost function)$J(\theta)$可以写作
$$
J(\theta) = \frac{1}{2m}\Sigma_{i = 1}^m[h_\theta(x^{(i)}) - y^{(i)}]^2
$$
参数$\theta$应该是使$J(\theta)$最小的一组列向量。由多元函数极值可知,$\theta$应该满足:
$$
\frac{\partial}{\partial \theta_j}J(\theta) = \frac{1}{m}\Sigma_{i = 1}^m[h_\theta(x^{(i)}) - y^{(i)}]x_j^{(i)} = 0
$$
解上述方程即可以得到$\theta$的解析解。
为了简单起见,下面用矩阵形式来对$J(\theta)$进行表述。矩阵$X, Y, \theta$可以分别表示为
设样本容量为$m$,则输入$X$以及对应的输出$Y$都可以写成矩阵的形式
$$
X = \left[
@@ -254,7 +237,44 @@ Y = \left[
\end{matrix}
\right]
$$
所以$J(\theta)$可以写作
这样,就可以把假设函数也写成矩阵形式
$$
Y = X\theta
$$
为了得到$\theta$,只需求解该矩阵方程,为此将等式的两边同时乘以$X^T$
$$
X^TY = X^TX\theta
$$
所以
$$
\theta = (X^TX)^{-1}X^TY
$$
这就是规范方程法的数学表述。以下就这个结论给出严格推导。
> 规范方程法的推导
平方损失函数(cost function)$J(\theta)$可以写作
$$
J(\theta) = \frac{1}{2m}\Sigma_{i = 1}^m[h_\theta(x^{(i)}) - y^{(i)}]^2
$$
参数$\theta$应该是使$J(\theta)$最小的一组列向量。由多元函数极值可知,$\theta$应该满足:
$$
\frac{\partial}{\partial \theta_j}J(\theta) = \frac{1}{m}\Sigma_{i = 1}^m[h_\theta(x^{(i)}) - y^{(i)}]x_j^{(i)} = 0
$$
解上述方程即可以得到$\theta$的解析解。
为了简单起见,下面用矩阵形式来对$J(\theta)$进行表述。所以$J(\theta)$可以写作
$$
J(\theta) = \frac{1}{2m}(X\theta - Y)^T(X\theta - Y) = \frac{1}{2m}(\theta^TX^TX\theta - 2Y^TX\theta + Y^TY)
@@ -272,21 +292,65 @@ $$
\theta = (X^TX)^{-1}X^TY
$$
> 引入正则化项的规范方程推导
该结论与上面的直觉理解完全一致。
为了避免过拟合(overfitting),在损失函数$J(\theta)$中添加正则化项(`regularization term`),所以
> 规范方程法存在的问题
需要注意的是,在实际应用中,$X^TX$往往是不可逆的,比如当特征的数量多于样本容量时。因此,往往是通过对$X^TX$求伪逆,来代替$(X^TX)^{-1}$。
> 梯度下降法与规范方程法的比较
在通常情况下当样本的特征比较少时比如特征数少于10000时选择规范方程法会有比较好的效果而当样本数量太多则应该选择梯度下降法来对模型进行求解。
这是因为,在规范方程法中,涉及到矩阵的求逆运算,其时间复杂度是$O(n^3)$,因此当模型的特征太多时,该逆矩阵的计算会消耗大量的时间。反之,即使特征数量非常多,梯度下降法也仍然具有较好的性能。
## 过拟合
> 过拟合概述
过拟合是统计学习中非常常见的一个问题,它是指模型的选择过于复杂,因而可以在训练集上得到很好的训练效果,使得损失函数接近于零,可是却难以将该模型**泛化**(`generalize`)到其他应用场合,比如说在一个新的测试集上预测准确率就会非常低下。**欠拟合**,正常拟合,以及过拟合的关系如下图所示
![overfitting](images.overfitting.jpeg)
可以看到,第一张图中的模型选择过于简单,用线性函数去拟合一个多项式回归问题,发生了欠拟合;第三张图的模型则过于复杂,用了一个非常高阶的多项式来拟合一个简单问题,发生了过拟合。
关于过拟合我想到这样一个直观的理解训练模型的过程就好比一个人复习考试的过程一种复习方案是深入理解题目背后的原理和知识点另一种复习方案则是把每个题目都记忆下来。显然后者在训练集上会有出色的表现如果记忆里足够好甚至可以达到100%的正确率,可是在实际考试过程中,遇到的都是他从未记忆过的题目,此时就束手无策了。第二种复习方案就是这里的过拟合。
过拟合会发生,主要是因为模型选择过于复杂,选择的特征太多。因此,一种解决过拟合的方案,就是手动剔除一些不重要的特征,简化模型,或者可以使用**模型选择算法**(`model selection algorithm`),后者将在后面的文章中提到。另一种更加常见的方案,就是下面要重点阐述的正则化。
> 正则化的损失函数
考虑这样一种情况,当前模型的假设函数为
$$
h_\theta(x) = \theta_0 + \theta_1x + \theta_2x^2 + \theta_3x^3 + \theta_4x^4
$$
为了避免发生过拟合,我可以限制$\thete_3, \theta_4$的大小,使得高阶项具有相对更小的权重。具体的方案是在损失函数中对$\theta_3, \theta_4$添加**罚项**(`penalty`),比如
$$
J(\theta) = \frac{1}{2m}\Sigma_{i = 1}^m[h_\theta(x^{(i)}) - y^{(i)}]^2 + 1000\theta_3^2 + 1000\theta_4^2
$$
这样,为了使$J(\theta)$取到最小值,$\theta_3, \theta_4$的取值必然相对较小,因此在一定程度上简化了模型。
在实际应用中,很难知道哪一些特征会导致模型过拟合,因此常见的方案是对每一个$\theta_j$,都添加一个上述的罚项,也称为**正则化项**(`regularized term`)。这样,正则化的损失函数就有以下的形式:
$$
J(\theta) = \frac{1}{2m}[\Sigma_{i = 1}^m(h_\theta(x^{(i)}) - y^{(i)})^2 + \lambda\Sigma_{i = 1}^n\theta_i^2]
$$
同样可以利用多元函数极值,令
需要注意的是,这里并没有对$\theta_0$引入正则化项,老师说这是一种约定俗成,并没有特别的原因。使用梯度下降法或者规范方程法,就可以求得在正则化下的最优参数$\theta$了。
> 引入正则化项的规范方程推导
为了令引入正则化项的$J(\theta)$取到最小值,同样可以利用多元函数极值,令
$$
\frac{\partial}{\partial \theta_j}J(\theta) = 0
$$
逐个求解出$\theta_j$,在此不再赘述。
逐个求解出$\theta_j$就可以得到最优的一组$\theta$在此不再赘述。
为了简化问题,仍然用矩阵形式表示$J(\theta)$,所以
@@ -327,6 +391,7 @@ $$
\end{matrix}
\right])^{-1}X^TY
$$
需要说明的是,正则化项的引入不仅解决了过拟合的问题,还使得新的矩阵
$$
X^TX + \lambda I
@@ -392,3 +457,47 @@ $$
$$
因此两者之和也必定是一个半正定矩阵。由于此前已经得到$X^T + \lambda I$可逆,故不存在为零的特征值,所以所有特征值都必定大于零,因此$X^T + \lambda I$是一个正定矩阵。
> 引入正则化项的梯度下降法
关于梯度下降法自然不必多说,这里主要证明,引入正则化项后的平方损失函数仍然是凸函数,因此使用梯度下降法仍然可以收敛到全局最优点。
再次给出$J(\theta)$的表达式
$$
J(\theta) = \frac{1}{2m}[\Sigma_{i = 1}^m(h_\theta(x^{(i)}) - y^{(i)})^2 + \lambda\Sigma_{i = 1}^n\theta_i^2]
$$
所以有
$$
\frac{\partial}{\partial \theta_0}J(\theta) = \frac{1}{m}\Sigma_{i = 1}^m(h_\theta(x^{(i)}) - y^{(i)})x_0^{(i)}\\\\
\frac{\partial}{\partial \theta_j}J(\theta) = \frac{1}{m}\Sigma_{i = 1}^m(h_\theta(x^{(i)}) - y^{(i)})x_j^{(i)} + \frac{1}{m}\theta_j\ (j \ne 0)
$$
$$
\frac{\partial^2}{\partial \theta_0^2}J(\theta) = \frac{1}{m}\Sigma_{i = 1}^mx_0^{(i)}x_0^{(i)}\\\\
\frac{\partial^2}{\partial \theta_j^2}J(\theta) = \frac{1}{m}\Sigma_{i = 1}^mx_j^{(i)}x_j^{(i)} + \frac{\lambda}{m}\ (j \ne 0)\\\\
\frac{\partial^2}{\partial \theta_j\partial \theta_k}J(\theta) = \frac{1}{m}\Sigma_{i = 1}^mx_j^{(i)}x_k^{(i)} \ (j \ne k)
$$
因此,可以写出`Hessian`矩阵
$$
H = \frac{1}{m}\left[
\begin{matrix}
\Sigma_{i = 1}^mx_0^{(i)^2} & \Sigma_{i = 1}^mx_0^{(i)}x_1^{(i)} & \cdots & \Sigma_{i = 1}^mx_0^{(i)}x_n^{(i)}\\\\
\Sigma_{i = 1}^mx_1^{(i)}x_0^{(i)} & \Sigma_{i = 1}^mx_1^{(i)^2} + \lambda & \cdots & \Sigma_{i = 1}^mx_1^{(i)}x_n^{(i)} \\\\
\vdots & \vdots & & \vdots&\\\\
\Sigma_{i = 1}^mx_n^{(i)}x_0^{(i)} & \Sigma_{i = 1}^mx_n^{(i)}x_1^{(i)} & \cdots & \Sigma_{i = 1}^mx_n^{(i)^2} + \lambda\\\\
\end{matrix}
\right]
$$
容易看出,
$$
H = \frac{1}{m}(X^TX + \lambda I)
$$
上面已经证明了,该矩阵是一个正定矩阵。根据凸函数的充分条件,可以得到正则化后的平方损失函数仍然是一个凸函数。