正规方程
正规方程
正规方程是区别于迭代方法的直接解法。
例如:\(m=4\).
| \(x_0\) | \(x_1\) | \(x_2\) | \(x_3\) | \(x_4\) | \(y\) |
|---|---|---|---|---|---|
| 1 | 2104 | 5 | 1 | 45 | 460 |
| 1 | 1416 | 3 | 2 | 40 | 232 |
| 1 | 1534 | 3 | 2 | 30 | 315 |
| 1 | 852 | 2 | 1 | 36 | 178 |
\[
X =
\begin{bmatrix}
1&2104&5&1&45\\
1&1416&3&2&40\\
1&1534&3&2&30\\
1&852&2&1&36
\end{bmatrix}
\]
\[
y=
\begin{bmatrix}
460\\232\\315\\178
\end{bmatrix}
\]
\[
\theta = (X^TX)^{-1}X^Ty
\]
\(m\) examples \((x^{(1)},y^{(1)}),\ldots,(x^{(m)},y^{(m)})\); \(n\) features
$$ x^{(i)}= \begin{bmatrix} x^{(i)}_0\x^{(i)}_1\x^{(i)}_2\\vdots\x^{(i)}_n\ \end{bmatrix} \in \mathbb{R}^{n+1} $$ 对于 \(\theta = (X^TX)^{-1}X^Ty\),\((X^TX)^{-1}\) 是 \(X^TX\) 的逆矩阵。
Octave: pinv(X'*X)*X'*y
如果使用正规方程法,不需要做特征缩放。
与梯度下降法比较
梯度下降法需要选择学习率 \(\alpha\),需要迭代。
梯度下降法在特征很多时仍然可以运行得相当好。
正规方程法需要计算\((X^TX)^{-1}\),时间复杂度 \(O(n^3)\),当 \(n\) 较大时耗时长。
正规方程法在很多算法中不适用,但是对于线性回归,仍然是很好的解决方案。
矩阵 \(X^TX\) 不可逆
在这种情况下,在 Octave 中,使用 pinv 函数仍可以正确计算出 \(\theta\) 的值。
如果不可逆,可能存在冗余的特征,或者是有过多的特征。