ARTICLE

正规方程

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

浏览 51 更新 2025-10-26

正规方程 (Normal Equation)

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

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

数学推导 (Mathematical Derivation)

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

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

假设我们有一个训练集,包含 m m 个样本。对于第 i i 个样本,其特征为 x(i)=(x1(i),x2(i),,xn(i))T x^{(i)} = (x_1^{(i)}, x_2^{(i)}, \dots, x_n^{(i)})^T ,对应的真实标签为 y(i) y^{(i)} 。 线性回归模型的假设函数 (Hypothesis Function) 为:

hθ(x)=θ0+θ1x1+θ2x2++θnxn=θTxh_{\theta}(x) = \theta_0 + \theta_1 x_1 + \theta_2 x_2 + \dots + \theta_n x_n = \theta^T x

为了方便计算,我们定义 x0=1 x_0 = 1 ,此时参数向量 θ=(θ0,θ1,,θn)T \theta = (\theta_0, \theta_1, \dots, \theta_n)^T ,特征向量 x=(x0,x1,,xn)T x = (x_0, x_1, \dots, x_n)^T

我们可以将整个训练集用矩阵形式表示:

  • 设计矩阵 (Design Matrix) X X :一个 m×(n+1) m \times (n+1) 的矩阵,每一行代表一个训练样本的特征向量(包含 x0=1 x_0=1 )。
X=((x(1))T(x(2))T(x(m))T)=(1x1(1)xn(1)1x1(2)xn(2)1x1(m)xn(m))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 y :一个 m×1 m \times 1 的列向量,包含所有样本的真实标签。
y=(y(1)y(2)y(m))y = \begin{pmatrix} y^{(1)} \\ y^{(2)} \\ \vdots \\ y^{(m)} \end{pmatrix}
  • 参数向量 θ \theta :一个 (n+1)×1 (n+1) \times 1 的列向量,即我们需要求解的参数。
θ=(θ0θ1θn)\theta = \begin{pmatrix} \theta_0 \\ \theta_1 \\ \vdots \\ \theta_n \end{pmatrix}

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

2. 定义损失函数

最小二乘法的目标是最小化残差平方和 (Sum of Squared Residuals, SSR),我们将其定义为损失函数 J(θ) J(\theta)

J(θ)=i=1m(hθ(x(i))y(i))2J(\theta) = \sum_{i=1}^{m} (h_{\theta}(x^{(i)}) - y^{(i)})^2

使用向量化表示,残差向量为 Xθy X\theta - y 。因此,损失函数可以写作:

J(θ)=(Xθy)T(Xθy)J(\theta) = (X\theta - y)^T (X\theta - y)

3. 求解最优参数 θ \theta

为了找到使 J(θ) J(\theta) 最小的 θ \theta ,我们需要计算 J(θ) J(\theta) θ \theta 梯度 (Gradient),并令其为零。 首先,展开 J(θ) 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*} 由于 θTXTy \theta^T X^T y 是一个标量,其转置 (θTXTy)T=yT(XT)T(θT)T=yTXθ ( \theta^T X^T y )^T = y^T (X^T)^T (\theta^T)^T = y^T X \theta 与其自身相等。因此,上式可以简化为:

J(θ)=θTXTXθ2yTXθ+yTyJ(\theta) = \theta^T X^T X\theta - 2y^T X\theta + y^T y

接下来,我们对 J(θ) J(\theta) 求关于 θ \theta 的梯度 θJ(θ) \nabla_{\theta} J(\theta) 。根据矩阵微积分的法则:

  • z(aTz)=a \nabla_{z} (a^T z) = a
  • z(zTAz)=(A+AT)z \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*} 令梯度为零向量以找到极值点:

2XTXθ2XTy=02X^T X\theta - 2X^T y = 0
XTXθ=XTyX^T X\theta = X^T y

最后,假设矩阵 XTX X^T X 是可逆的,我们在等式两边左乘其逆矩阵 (XTX)1 (X^T X)^{-1} ,即可解出 θ \theta

θ=(XTX)1XTy\theta = (X^T X)^{-1} X^T y

这个方程就是正规方程。它给出了最小二乘问题的解析解。

几何解释 (Geometric Interpretation)

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

  1. 列空间 (Column Space):模型的所有可能预测值构成的向量 y^=Xθ \hat{y} = X\theta 是设计矩阵 X X 的列向量的线性组合。因此,所有可能的预测向量 y^ \hat{y} 构成了 X X 的列空间,记为 C(X) C(X)
  1. 最小化距离:最小二乘法的目标是找到一个在列空间 C(X) C(X) 内的向量 y^ \hat{y} ,使其与真实标签向量 y y 欧几里得距离 yy^ \|y - \hat{y}\| 最小。
  1. 正交投影 (Orthogonal Projection):根据几何原理,要使得距离最小,向量 y^ \hat{y} 必须是 y y 在列空间 C(X) C(X) 上的正交投影。
  1. 正交性:当 y^ \hat{y} y y 的正交投影时,残差向量 e=yy^=yXθ e = y - \hat{y} = y - X\theta 必须与 C(X) C(X) 中的任何向量都正交。这意味着残差向量 e e 必须与 X X 的每一个列向量都正交。
  1. 推导:如果 e e X X 的所有列向量都正交,那么 X X 的转置 XT X^T e e 的乘积必然是零向量:
XTe=0X^T e = 0

e=yXθ e = y - X\theta 代入,我们得到:

XT(yXθ)=0X^T (y - X\theta) = 0

展开后可得:

XTyXTXθ=0X^T y - X^T X\theta = 0

这正是我们之前通过微积分推导出的 XTXθ=XTy X^T X\theta = X^T y 。这个几何视角清晰地揭示了最小二乘法寻找的是一个投影,而正规方程是这个投影性质的代数表达。

应用与实践考量

与梯度下降的比较

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

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

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

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

解决方案

  • 特征选择:检查并移除冗余或线性相关的特征。
  • 正则化 (Regularization):在损失函数中加入一个正则化项,以惩罚过大的参数。例如,在岭回归 (Ridge Regression) 中,正规方程变为:
θ=(XTX+λI)1XTy\theta = (X^T X + \lambda I)^{-1} X^T y

其中 λ>0 \lambda > 0 是正则化参数,I I 是单位矩阵。这个 λI \lambda I 项保证了 (XTX+λI) (X^T X + \lambda I) 总是可逆的。

  • 使用伪逆 (Pseudoinverse):即使 XTX X^T X 不可逆,我们仍然可以使用其摩尔-彭若斯伪逆 (XTX)+ (X^T X)^+ 来求解。许多科学计算库(如 NumPy 的 \texttt{linalg.pinv})在发现矩阵奇异时会自动计算伪逆,这会给出众多可能解中L2范数最小的一个解。