正规方程

正规方程是一种不需要迭代就能找到最优参数$\theta$的方法。
公式:
$θ=(X^TX)^{−1}X^Ty$
正规方程不需要特征缩放。

如果有兴趣的话,可以在以下链接查看证明过程。
https://en.wikipedia.org/wiki/Linear_least_squares_(mathematics)
http://eli.thegreenplace.net/2014/derivation-of-the-normal-equation-for-linear-regression

下面是一个梯度下降和正规方程的对比表格:

梯度下降 正规方程
需要选择学习率$\alpha$ 不需要选择学习率$\alpha$
需要多次迭代 不需要多次迭代
复杂度$o(kn^2)$ 复杂度$o(n^3)$,需要计算$X^TX$的逆
当n比较大的时候,较为适用 当n比较大的时候,运算缓慢

如果使用正规方程式,计算逆的复杂度为$o(n^3)$。所以,如果我们有非常大量的特征,使用正规方程则会非常的缓慢。实践证明,当n大于10000时,用迭代的方式(梯度下降)来替代正规方程将会更加合适。

正规方程的不可逆性

在正规方程中,我们需要计算$X^TX$的逆,而$X^TX$在一些情况是不可逆的,造成这个现象的情况有:

  • 冗余的特征:两个特征之间是紧密联系的。(比如他们是线性相关的)
  • 特征太多:在这种情况,可以删除掉一些特征或者使用“正则化”(之后会讲解)。

总结解决不可逆情况的方法主要包括:

  • 删除和其他功能线性相关的功能。
  • 在功能过多时删除一个或多个功能。

Tips:
基本线性代数复习中,提到了有一些矩阵存在逆矩阵,而有一些矩阵则不存在逆矩阵。
在matlab中,若矩阵A存在逆矩阵,则可以用inv(A)来求其逆,否则可以使用pinv(A)求其伪逆。

分享到