从 R(AᵀA) = R(A) 到最小二乘法:一个关键等式的4步推导与实例

在机器学习和数值计算中,矩阵秩的性质扮演着至关重要的角色。当我们面对超定方程组时,最小二乘法提供了一种优雅的解决方案,而理解其背后的数学原理——特别是矩阵乘积的秩关系——将帮助我们更深入地掌握这一强大工具。

1. 问题建模与正规方程

假设我们有一个设计矩阵A ∈ ℝ^{m×n}(m > n)和观测向量b ∈ ℝ^m,希望找到参数向量x ∈ ℝ^n使得Ax ≈ b。当方程组无解时,最小二乘法通过最小化残差平方和‖Ax - b‖²来寻找最优解。

正规方程 的推导过程如下:

  1. 展开目标函数:‖Ax - b‖² = (Ax - b)ᵀ(Ax - b)
  2. 求梯度并令其为零:∇ₓ = 2Aᵀ(Ax - b) = 0
  3. 得到关键方程:AᵀAx = Aᵀb
import numpy as np

# 生成示例数据
A = np.array([[1, 2], [3, 4], [5, 6]])
b = np.array([7, 8, 9])

# 正规方程求解
x = np.linalg.solve(A.T @ A, A.T @ b)

注意:当A的列线性无关时,AᵀA可逆,此时解唯一。这个可逆性的核心正是R(AᵀA) = R(A)的性质保证。

2. 秩等式的核心证明

定理 :对于任意实矩阵A,有R(AᵀA) = R(A)

证明步骤 :

  1. 首先证明N(A) = N(AᵀA)(两者零空间相同)

    • 若x ∈ N(A),则Ax=0 ⇒ AᵀAx=0 ⇒ x ∈ N(AᵀA)
    • 若x ∈ N(AᵀA),则xᵀAᵀAx=0 ⇒ ‖Ax‖²=0 ⇒ Ax=0 ⇒ x ∈ N(A)
  2. 根据秩-零化度定理:

    • dim N(A) + R(A) = n
    • dim N(AᵀA) + R(AᵀA) = n
    • 因为N(A)=N(AᵀA),所以R(A)=R(AᵀA)

这个证明揭示了矩阵乘积秩关系的本质:AᵀA压缩了A的列空间但保留了其秩。

3. 数值验证实例

让我们通过一个5×3矩阵的具体例子来验证这个性质:

# 创建5x3矩阵
A = np.array([[1, 2, 3], 
              [4, 5, 6],
              [7, 8, 9],
              [10, 11, 12],
              [13, 14, 15]])

# 计算秩
rank_A = np.linalg.matrix_rank(A)
rank_ATA = np.linalg.matrix_rank(A.T @ A)

print(f"R(A) = {rank_A}, R(AᵀA) = {rank_ATA}")

输出结果分析 :

  • 对于这个矩阵,R(A) = 2,R(AᵀA) = 2
  • 修改第三列为前两列的线性组合时,两者秩同时降低
  • 当A列满秩时,AᵀA是可逆方阵

4. 应用意义与潜在陷阱

4.1 最小二乘法的几何解释

正规方程AᵀAx = Aᵀb的本质是要求残差向量b - Ax与A的列空间正交。这相当于将b投影到A的列空间上,得到的投影向量Ax*是最接近b的点。

几何关系 :

  • A的列空间:Col(A) = {Ax | x ∈ ℝⁿ}
  • 正交条件:Aᵀ(b - Ax*) = 0

4.2 共线性问题与正则化

当A的列存在线性相关性时(即不满秩),会带来两个严重问题:

  1. AᵀA不可逆,正规方程无唯一解
  2. 解的数值稳定性差,对噪声敏感

解决方案对比 :

方法 原理 优点 缺点
伪逆 用SVD计算广义逆 理论完备 计算成本高
岭回归 添加L2正则项:(AᵀA + λI)x = Aᵀb 数值稳定 需要选择λ
Lasso 添加L1正则项 特征选择 非线性优化
# 岭回归实现示例
lambda_ = 0.1
x_ridge = np.linalg.solve(A.T @ A + lambda_ * np.eye(3), A.T @ b)

4.3 数值计算实践建议

  1. 条件数检查 :计算cond(AᵀA)评估问题稳定性
  2. QR分解 :比直接解正规方程更数值稳定
    Q, R = np.linalg.qr(A)
    x_qr = np.linalg.solve(R, Q.T @ b)
    
  3. 奇异值截断 :对小奇异值进行截断处理

在实际应用中,理解R(AᵀA) = R(A)这一性质帮助我们认识到:最小二乘问题的解存在且唯一,当且仅当A列满秩。当秩亏损时,我们需要通过正则化或其他技术来处理这种不确定性。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐