正规方程是一种不需要迭代就能找到最优参数$\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)求其伪逆。