标准方程 Normal Equations
标准方程¶
线性回归里的梯度下降算法,通过不停地迭代求参数,从而不停地逼近成本函数的最小值来求解。另外一个方法是直接计算成本函数的微分,令微分算子为零,求解这个方程,即可得到线性回归的解。
回忆一下线性回归算法的成本函数:
$$ J(\theta) = \frac{1}{2m} \sum_{(i=0)}^n \left( h_\theta(x^{(i)}) - y^{(i)} \right)^2 $$
我们让 $\frac{\delta}{\delta \theta} J(\theta) = 0$,求解这个方程最终可以得到:
$$ \theta = \left( X^T X \right)^{-1} X^T y $$
这个就是我们的标准方程。它通过矩阵运算,直接从训练样本里求出参数 $\theta$ 的值。
- 从成本函数的微分方程推导出标准议程的过程比较复杂,涉及到较多的矩阵运算和矩阵微分运算。感兴趣的可以参考 cs229-notes1.pdf。另外 里面有线性代数的复习资料。
- $X$ 是训练样本的变量,它是个 m x n 矩阵。其中 m 是训练样本的个数,n 是变量个数。
- $y$ 是训练样本的结果数据,它是个 m x 1 的列向量。
奇异矩阵¶
当训练数据集较少时,利用矩阵运算可以较快的算出参数 $\theta$ 的值。但如果 $X^T X$ 是奇异矩阵的话,它就没有逆矩阵存在,这个时候通用方程的解是什么呢?答案是,在 octave 里用 pinv
来代替 inv
来计算逆矩阵。这样即使 $X^T X$ 是奇异矩阵,pinv
也能算出其”伪”逆矩阵,从而顺利算出通用方向的解。
那么,物理上讲,$X^T X$ 如果为奇异矩阵的话,到底代表什么意思呢?
- 模型变量之间线性相关 比如,在房价预测模型里,$x_1$ 代表房子的长度,$x_2$ 代表房子的宽度,而 $x_3$ 代表房子的面积,这里假设房子是方形的,那么实际上 $x_3$ 和 $x_1, x_2$ 是线性相关的。
- 训练样例少于变量个数,即 m < n 这种情况下,需要减少变量个数来解决问题
然后,如果 $\left( X^T X \right)$ 是奇异矩阵的话,在其他编程语言里是没有办法逆的。所以需要其他的办法来解决这个问题。在逻辑回归算法里,使用了另外一个方法来解决奇异矩阵的问题,即正则化 (Regularization) 。有关正则化的信息后文写到逻辑回归算法时再来详细介绍。