Normal Equation(正规方程) 是线性代数中的一个重要概念,主要用于解决最小二乘问题(Least Squares Problem)。它通过直接求解一个线性方程组,找到线性回归模型的最优参数(如权重或系数)。以下是详细介绍:
1. 定义与数学表达式
给定一个超定方程组(方程数量多于未知数):
A x = b A\mathbf{x} = \mathbf{b} Ax=b
其中:
- A ∈ R m × n A \in \mathbb{R}^{m \times n} A∈Rm×n( m > n m > n m>n)是一个设计矩阵(Design Matrix),
- x ∈ R n \mathbf{x} \in \mathbb{R}^n x∈Rn 是未知参数向量,
- b ∈ R m \mathbf{b} \in \mathbb{R}^m b∈Rm 是目标向量(通常不在 A A A 的列空间中)。
由于 A x = b A\mathbf{x} = \mathbf{b} Ax=b 通常无解,Normal Equation 的目标是找到一个近似解 x \mathbf{x} x,使得残差向量 e = b − A x \mathbf{e} = \mathbf{b} - A\mathbf{x} e=b−Ax 的 L2 范数最小(即最小化误差平方和)。
Normal Equation 的公式为:
A T A x = A T b A^T A \mathbf{x} = A^T \mathbf{b} ATAx=ATb
如果 A T A A^T A ATA 可逆,则最优解为:
x = ( A T A ) − 1 A T b \mathbf{x} = (A^T A)^{-1} A^T \mathbf{b} x=(ATA)−1ATb
2. 推导方法
方法一:矩阵求导
- 定义损失函数(误差平方和):
J ( x ) = ∥ b − A x ∥ 2 2 = ( b − A x ) T ( b − A x ) J(\mathbf{x}) = \|\mathbf{b} - A\mathbf{x}\|_2^2 = (\mathbf{b} - A\mathbf{x})^T (\mathbf{b} - A\mathbf{x}) J(x)=∥b−Ax∥22=(b−Ax)T(b−Ax) - 对 x \mathbf{x} x 求导并令导数为零:
∂ J ∂ x = − 2 A T b + 2 A T A x = 0 \frac{\partial J}{\partial \mathbf{x}} = -2A^T \mathbf{b} + 2A^T A \mathbf{x} = 0 ∂x∂J=−2ATb+2ATAx=0 - 得到 Normal Equation:
A T A x = A T b A^T A \mathbf{x} = A^T \mathbf{b} ATAx=ATb
方法二:几何投影
- 几何视角:
- A x A\mathbf{x} Ax 是 b \mathbf{b} b 在 A A A 的列空间(Column Space, C ( A ) C(A) C(A))上的投影 p \mathbf{p} p。
- 残差向量 e = b − p \mathbf{e} = \mathbf{b} - \mathbf{p} e=b−p 必须正交于列空间,即:
A T e = 0 ⇒ A T ( b − A x ) = 0 A^T \mathbf{e} = 0 \quad \Rightarrow \quad A^T (\mathbf{b} - A\mathbf{x}) = 0 ATe=0⇒AT(b−Ax)=0 - 由此得到 Normal Equation:
A T A x = A T b A^T A \mathbf{x} = A^T \mathbf{b} ATAx=ATb
3. 几何解释
-
列空间与投影:
A A A 的列空间 C ( A ) C(A) C(A) 是所有可能的 A x A\mathbf{x} Ax 组成的子空间。由于 b \mathbf{b} b 不在 C ( A ) C(A) C(A) 中,我们寻找 x \mathbf{x} x 使得 A x A\mathbf{x} Ax 是 b \mathbf{b} b 在 C ( A ) C(A) C(A) 上的投影 p \mathbf{p} p。 -
正交性条件:
残差 e = b − p \mathbf{e} = \mathbf{b} - \mathbf{p} e=b−p 必须与列空间正交(即 e ∈ N ( A T ) \mathbf{e} \in N(A^T) e∈N(AT)),从而导出 Normal Equation。
4. 应用场景
Normal Equation 是线性回归的核心工具,尤其适用于以下情况:
- 小规模数据集:当特征数 n n n 较小时(如 n < 10 , 000 n < 10,000 n<10,000),计算 ( A T A ) − 1 (A^T A)^{-1} (ATA)−1 的开销较小。
- 无需迭代:与梯度下降等迭代方法不同,Normal Equation 直接通过矩阵运算得到解析解。
- 理论分析:在数学推导中,Normal Equation 提供了最小二乘解的唯一性、存在性等性质。
5. 注意事项
-
矩阵可逆性:
- A T A A^T A ATA 必须是可逆的(即 A A A 列满秩, rank ( A ) = n \text{rank}(A) = n rank(A)=n)。
- 如果 A T A A^T A ATA 不可逆(如特征间线性相关),则有无穷多解,此时需选择最小范数解(通过伪逆 A † A^\dagger A†)。
-
计算复杂度:
- 计算 ( A T A ) − 1 (A^T A)^{-1} (ATA)−1 的时间复杂度为 O ( n 3 ) O(n^3) O(n3),当 n n n 较大时效率较低。
- 此时通常改用梯度下降或正则化方法(如岭回归)。
-
数值稳定性:
- 若 A A A 接近病态矩阵(条件数很大),可能导致 A T A A^T A ATA 不可逆或结果不稳定。
6. 示例
假设我们有以下数据:
A = [ 1 2 1 3 1 4 ] , b = [ 2 3 4 ] A = \begin{bmatrix} 1 & 2 \\ 1 & 3 \\ 1 & 4 \end{bmatrix}, \quad \mathbf{b} = \begin{bmatrix} 2 \\ 3 \\ 4 \end{bmatrix} A= 111234 ,b= 234
- 计算 A T A A^T A ATA 和 A T b A^T \mathbf{b} ATb:
A T A = [ 3 9 9 29 ] , A T b = [ 9 29 ] A^T A = \begin{bmatrix} 3 & 9 \\ 9 & 29 \end{bmatrix}, \quad A^T \mathbf{b} = \begin{bmatrix} 9 \\ 29 \end{bmatrix} ATA=[39929],ATb=[929] - 解 Normal Equation:
[ 3 9 9 29 ] [ x 1 x 2 ] = [ 9 29 ] \begin{bmatrix} 3 & 9 \\ 9 & 29 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} = \begin{bmatrix} 9 \\ 29 \end{bmatrix} [39929][x1x2]=[929]
解得 x = [ 0 , 1 ] T \mathbf{x} = [0, 1]^T x=[0,1]T,即最佳拟合直线为 y = 0 + 1 x y = 0 + 1x y=0+1x。
7. 总结
项目 | 说明 |
---|---|
目标 | 找到使残差 ∣ b − A x ∣ 2 |\mathbf{b} - A\mathbf{x}|_2 ∣b−Ax∣2 最小的 x \mathbf{x} x。 |
公式 | x = ( A T A ) − 1 A T b \mathbf{x} = (A^T A)^{-1} A^T \mathbf{b} x=(ATA)−1ATb。 |
适用场景 | 小规模数据、理论分析、无迭代需求。 |
局限性 | 计算复杂度高、要求 A T A A^T A ATA 可逆。 |