知经 KNOWECON · 卓越的经济金融统计数学学习平台

正规方程

# 正规方程 (Normal Equation)

正规方程 (Normal Equation) 是在{{{线性代数}}}和{{{统计学}}}中,求解{{{线性最小二乘法}}} (Linear {{{Least Squares}}}) 问题的一种解析解(Analytical Solution)形式。在{{{机器学习}}}领域,它被广泛用于直接计算{{{线性回归}}}模型的最优参数,而无需使用{{{梯度下降}}}等迭代优化算法。

其核心思想是通过最小化{{{损失函数}}}(通常是{{{残差平方和}}}),找到一组参数 $\theta$,使得模型的预测值与真实值之间的差异最小。正规方程提供了一个封闭形式的公式,可以直接计算出这组最优参数 $\theta$。

## 数学推导 (Mathematical Derivation)

为了推导出正规方程,我们首先需要定义线性回归模型及其损失函数。

1. 模型假设与向量化表示

假设我们有一个训练集,包含 $m$ 个样本。对于第 $i$ 个样本,其特征为 $x^{(i)} = (x_1^{(i)}, x_2^{(i)}, \dots, x_n^{(i)})^T$,对应的真实标签为 $y^{(i)}$。 线性回归模型的假设函数 (Hypothesis Function) 为: $$ h_{\theta}(x) = \theta_0 + \theta_1 x_1 + \theta_2 x_2 + \dots + \theta_n x_n = \theta^T x $$ 为了方便计算,我们定义 $x_0 = 1$,此时参数向量 $\theta = (\theta_0, \theta_1, \dots, \theta_n)^T$,特征向量 $x = (x_0, x_1, \dots, x_n)^T$。

我们可以将整个训练集用矩阵形式表示: * 设计矩阵 (Design Matrix) $X$:一个 $m \times (n+1)$ 的矩阵,每一行代表一个训练样本的特征向量(包含 $x_0=1$)。 $$ X = \begin{pmatrix} (x^{(1)})^T \\ (x^{(2)})^T \\ \vdots \\ (x^{(m)})^T \end{pmatrix} = \begin{pmatrix} 1 & x_1^{(1)} & \dots & x_n^{(1)} \\ 1 & x_1^{(2)} & \dots & x_n^{(2)} \\ \vdots & \vdots & \ddots & \vdots \\ 1 & x_1^{(m)} & \dots & x_n^{(m)} \end{pmatrix} $$ * 标签向量 $y$:一个 $m \times 1$ 的列向量,包含所有样本的真实标签。 $$ y = \begin{pmatrix} y^{(1)} \\ y^{(2)} \\ \vdots \\ y^{(m)} \end{pmatrix} $$ * 参数向量 $\theta$:一个 $(n+1) \times 1$ 的列向量,即我们需要求解的参数。 $$ \theta = \begin{pmatrix} \theta_0 \\ \theta_1 \\ \vdots \\ \theta_n \end{pmatrix} $$

所有样本的预测值向量可以简洁地表示为 $\hat{y} = X\theta$。

2. 定义损失函数

最小二乘法的目标是最小化{{{残差平方和}}} (Sum of Squared Residuals, SSR),我们将其定义为损失函数 $J(\theta)$: $$ J(\theta) = \sum_{i=1}^{m} (h_{\theta}(x^{(i)}) - y^{(i)})^2 $$ 使用向量化表示,残差向量为 $X\theta - y$。因此,损失函数可以写作: $$ J(\theta) = (X\theta - y)^T (X\theta - y) $$

3. 求解最优参数 $\theta$

为了找到使 $J(\theta)$ 最小的 $\theta$,我们需要计算 $J(\theta)$ 对 $\theta$ 的{{{梯度}}} (Gradient),并令其为零。 首先,展开 $J(\theta)$: $$ \begin{align*} J(\theta) & = ( (X\theta)^T - y^T ) (X\theta - y) \\ & = (\theta^T X^T - y^T)(X\theta - y) \\ & = \theta^T X^T X\theta - \theta^T X^T y - y^T X\theta + y^T y \end{align*} $$ 由于 $\theta^T X^T y$ 是一个标量,其转置 $( \theta^T X^T y )^T = y^T (X^T)^T (\theta^T)^T = y^T X \theta$ 与其自身相等。因此,上式可以简化为: $$ J(\theta) = \theta^T X^T X\theta - 2y^T X\theta + y^T y $$ 接下来,我们对 $J(\theta)$ 求关于 $\theta$ 的梯度 $\nabla_{\theta} J(\theta)$。根据{{{矩阵微积分}}}的法则: * $\nabla_{z} (a^T z) = a$ * $\nabla_{z} (z^T A z) = (A + A^T)z$

应用这些法则,我们得到: $$ \begin{align*} \nabla_{\theta} J(\theta) & = \nabla_{\theta} (\theta^T X^T X\theta - 2y^T X\theta + y^T y) \\ & = (X^T X + (X^T X)^T)\theta - 2(y^T X)^T + 0 \\ & = (X^T X + X^T X)\theta - 2X^T y \\ & = 2X^T X\theta - 2X^T y \end{align*} $$ 令梯度为零向量以找到极值点: $$ 2X^T X\theta - 2X^T y = 0 $$ $$ X^T X\theta = X^T y $$ 最后,假设矩阵 $X^T X$ 是可逆的,我们在等式两边左乘其{{{逆矩阵}}} $(X^T X)^{-1}$,即可解出 $\theta$: $$ \theta = (X^T X)^{-1} X^T y $$ 这个方程就是正规方程。它给出了最小二乘问题的解析解。

## 几何解释 (Geometric Interpretation)

正规方程有一个非常直观的几何解释,这涉及到{{{向量空间}}}和{{{投影}}}的概念。

1. {{{列空间}}} (Column Space):模型的所有可能预测值构成的向量 $\hat{y} = X\theta$ 是设计矩阵 $X$ 的列向量的{{{线性组合}}}。因此,所有可能的预测向量 $\hat{y}$ 构成了 $X$ 的列空间,记为 $C(X)$。

2. 最小化距离:最小二乘法的目标是找到一个在列空间 $C(X)$ 内的向量 $\hat{y}$,使其与真实标签向量 $y$ 的{{{欧几里得距离}}} $\|y - \hat{y}\|$ 最小。

3. {{{正交投影}}} (Orthogonal Projection):根据几何原理,要使得距离最小,向量 $\hat{y}$ 必须是 $y$ 在列空间 $C(X)$ 上的正交投影。

4. 正交性:当 $\hat{y}$ 是 $y$ 的正交投影时,残差向量 $e = y - \hat{y} = y - X\theta$ 必须与 $C(X)$ 中的任何向量都{{{正交}}}。这意味着残差向量 $e$ 必须与 $X$ 的每一个列向量都正交。

5. 推导:如果 $e$ 与 $X$ 的所有列向量都正交,那么 $X$ 的转置 $X^T$ 与 $e$ 的乘积必然是零向量: $$ X^T e = 0 $$ 将 $e = y - X\theta$ 代入,我们得到: $$ X^T (y - X\theta) = 0 $$ 展开后可得: $$ X^T y - X^T X\theta = 0 $$ 这正是我们之前通过微积分推导出的 $X^T X\theta = X^T y$。这个几何视角清晰地揭示了最小二乘法寻找的是一个投影,而正规方程是这个投影性质的代数表达。

## 应用与实践考量

### 与梯度下降的比较

| 特性 | 正规方程 | {{{梯度下降}}} (Gradient Descent) | | :--- | :--- | :--- | | 求解方式 | 解析解,一步到位 | 迭代解,逐步逼近最优值 | | {{{学习率}}} | 无需选择学习率 $\alpha$ | 需要仔细选择学习率 $\alpha$ | | 计算复杂度 | 核心是计算 $(X^T X)^{-1}$,复杂度约为 $O(n^3)$,其中 $n$ 是特征数量 | 每次迭代的复杂度约为 $O(m \cdot n)$,其中 $m$ 是样本数量 | | 特征缩放 | 不需要{{{特征缩放}}} (Feature Scaling) | 建议进行特征缩放以加速收敛 | | 适用场景 | 特征数量 $n$ 较小(如 $n < 10,000$)时非常高效 | 特征数量 $n$ 非常大时更优,能够处理大规模数据集 | | 模型扩展性 | 主要用于线性模型 | 适用性更广,是训练复杂模型(如{{{神经网络}}})的基础 |

### $X^T X$ 不可逆问题 (The Non-Invertibility of $X^T X$)

正规方程依赖于矩阵 $X^T X$ 的可逆性。如果 $X^T X$ 是一个{{{奇异矩阵}}}(或称不可逆矩阵),我们就无法直接求逆。这种情况主要由以下两个原因导致:

1. 特征之间存在{{{多重共线性}}} (Multicollinearity):即特征之间存在线性依赖关系。例如,一个特征是房屋面积(平方米),另一个特征是房屋面积(平方英尺),这两个特征是线性相关的,导致 $X$ 的列向量线性相关,从而使 $X^T X$ 不可逆。 2. 特征数量过多 ($m \le n$):当样本数量 $m$ 小于或等于特征数量 $n$ 时,数据不足以唯一确定所有参数,这会导致 $X^T X$ 成为一个奇异矩阵。

解决方案: * 特征选择:检查并移除冗余或线性相关的特征。 * {{{正则化}}} (Regularization):在损失函数中加入一个正则化项,以惩罚过大的参数。例如,在{{{岭回归}}} (Ridge Regression) 中,正规方程变为: $$ \theta = (X^T X + \lambda I)^{-1} X^T y $$ 其中 $\lambda > 0$ 是正则化参数,$I$ 是单位矩阵。这个 $\lambda I$ 项保证了 $(X^T X + \lambda I)$ 总是可逆的。 * 使用{{{伪逆}}} (Pseudoinverse):即使 $X^T X$ 不可逆,我们仍然可以使用其摩尔-彭若斯伪逆 $(X^T X)^+$ 来求解。许多科学计算库(如 NumPy 的 `linalg.pinv`)在发现矩阵奇异时会自动计算伪逆,这会给出众多可能解中{{{L2范数}}}最小的一个解。