Featured image of post 最小二乘法:用线性代数寻找散点数据的“最佳拟合直线”

最小二乘法:用线性代数寻找散点数据的“最佳拟合直线”

使用几何直觉和强大的线性代数工具(正规方程、正交投影)深入解释最小二乘法的原理。

1. 引言:现实世界的数据与“最优”模型

现实世界中观察到的数据几乎总是包含“噪声”或“方差”。为了从这些数据中找出潜在的规律并预测未来或估计未知数据,我们需要建立一个能 最好地 拟合数据的数学模型。

最基础的方法,至今仍作为现代机器学习基础发挥着极其重要作用的,就是 最小二乘法 (Method of Least Squares)。

在这篇文章中,我们不再仅仅是死记硬背公式,而是从线性代数(正交投影)这一优美的几何视角,深入探讨 “为什么这种计算能找到最佳拟合直线”

2. 最小二乘法的直观概念

假设我们有 $n$ 个数据点 $(x_1, y_1), (x_2, y_2), \dots, (x_n, y_n)$。将这些点绘制在散点图上时,它们可能并没有完美地排成一条直线,但总体上似乎遵循着某条直线的趋势。

此时,设近似数据的直线方程为 $y = c + dx$。(这里,截距为 $c$ ,斜率为 $d$ )。

对于每个数据点 $x_i$,该直线预测的值为 $\hat{y}_i = c + d x_i$。实际观测值 $y_i$ 与预测值 $\hat{y}_i$ 之间会产生一个误差(残差) $e_i$。

$$ e_i = y_i - \hat{y}_i = y_i - (c + d x_i) $$

最小二乘法是一种寻找能够使误差的 平方和 最小化的参数 $c$ 和 $d$ 的技术。误差的平方和 $E$ 定义如下:

$$ E = \sum_{i=1}^{n} e_i^2 = \sum_{i=1}^{n} (y_i - c - d x_i)^2 \quad (\text{误差函数的定义}) $$

平方的原因是为了防止正负误差相互抵消,而且它具有在数学上可微且易于处理的强大优势。

  flowchart TD
    Data["数据收集"] --> Formulate["模型公式化"]
    Formulate --> Error["定义误差函数"]
    Error --> Minimize["最小化误差函数"]
    Minimize --> Optimal["确定最优参数"]

3. 使用线性代数进行公式化与“无解的方程”

当我们使用矩阵和向量的语言,即 线性代数 来重写这一点时,最小二乘法的真正优美之处便显现出来了。

假设所有数据点都完美地位于直线 $y = c + dx$ 上,我们得到以下 $n$ 个方程:

$$ \begin{cases} c + d x_1 = y_1 \\\\ c + d x_2 = y_2 \\\\ \vdots \\\\ c + d x_n = y_n \end{cases} $$

用矩阵形式表示,我们得到:

$$ \begin{bmatrix} 1 & x_1 \\ 1 & x_2 \\ \vdots & \vdots \\ 1 & x_n \end{bmatrix} \begin{bmatrix} c \\ d \end{bmatrix}

\begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_n \end{bmatrix} $$

我们将其简写为 $A\mathbf{x} = \mathbf{b}$。这里,

  • $A$ 是一个 $n \times 2$ 的 设计矩阵 (Design Matrix)
  • $\mathbf{x} = \begin{bmatrix} c \\\\ d \end{bmatrix}$ 是我们想要寻找的 参数向量
  • $\mathbf{b}$ 是观测值的 目标变量向量

当数据具有方差时(3个或更多点不在同一直线上),不存在完美满足此方程 $A\mathbf{x} = \mathbf{b}$ 的解 $\mathbf{x}$。也就是说,方程组是 不一致的 (inconsistent)。

4. 几何视角:列空间与正交投影

方程 $A\mathbf{x} = \mathbf{b}$ 无法求解在几何上意味着什么?

将矩阵 $A$ 乘以向量 $\mathbf{x}$ 意味着创建 $A$ 的每个列向量的线性组合。由 $A$ 的所有可能的线性组合所创建的空间称为 $A$ 的 列空间 (Column Space),记作 $C(A)$。

$$ A\mathbf{x} \in C(A) $$

无解意味着向量 $\mathbf{b}$ 位于这个列空间 $C(A)$ 的 外部

我们正在寻找的不是一个完美的解,而是在 $C(A)$ 内一个尽可能接近 $\mathbf{b}$ 的向量。我们称之为 $A\hat{\mathbf{x}}$。此时,向量 $\mathbf{b}$ 与 $A\hat{\mathbf{x}}$ 之间的距离(的平方)最小。这正是最小二乘法

在几何上,给出空间中某点 $\mathbf{b}$ 到某个平面 $C(A)$ 的最短距离的点,正是从 $\mathbf{b}$ 到 $C(A)$ 所作的 垂足。这被称为 正交投影 (Orthogonal Projection)。

设误差向量为 $\mathbf{e} = \mathbf{b} - A\hat{\mathbf{x}}$,最短距离的条件是“误差向量 $\mathbf{e}$ 正交于列空间 $C(A)$”。

正交于列空间 $C(A)$ 意味着正交于 $A$ 的所有列向量。这意味着误差向量 $\mathbf{e}$ 属于矩阵 $A$ 的转置矩阵 $A^T$ 的 左零空间 (Left Nullspace)。即,

$$ A^T \mathbf{e} = \mathbf{0} \quad (\text{正交条件}) $$

5. 正规方程的推导

让我们将 $\mathbf{e} = \mathbf{b} - A\hat{\mathbf{x}}$ 代入上述的正交条件。

$$ A^T (\mathbf{b} - A\hat{\mathbf{x}}) = \mathbf{0} $$$$ A^T \mathbf{b} - A^T A \hat{\mathbf{x}} = \mathbf{0} $$

整理后,我们得到以下极其重要的方程。

$$ A^T A \hat{\mathbf{x}} = A^T \mathbf{b} \quad (\text{正规方程}) $$

这个方程被称为 正规方程 (Normal Equation)。最初的 $A\mathbf{x} = \mathbf{b}$ 没有解,但这个在等式两边左乘 $A^T$ 的正规方程总是有解的。此外,如果 $A$ 的列向量是线性无关的,$A^T A$ 就是可逆的(具有逆矩阵),并且最优解 $\hat{\mathbf{x}}$ 被唯一确定如下:

$$ \hat{\mathbf{x}} = (A^T A)^{-1} A^T \mathbf{b} $$

这个公式是统计学和机器学习中最优美的结果之一。你可以仅仅通过正交性的几何概念得出这个结论,而无需使用微积分。

  flowchart LR
    b["向量 b"] -->|"正交投影"| p["投影向量 p = A x_hat"]
    p --> C["列空间 C(A)"]
    b -->|"误差向量 e"| p
    e["e = b - A x_hat"] -.->|"正交"| C

6. Python中的实现示例

让我们实际用程序来计算一下,而不仅仅是理论。使用 Python 中的数值计算库 NumPy,你可以非常容易地实现正规方程。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import numpy as np

# 样本数据 (x 和 y)
x_data = np.array([1, 2, 3, 4, 5])
y_data = np.array([2.1, 3.9, 6.2, 8.1, 9.8])

# 创建设计矩阵 A
# 组合 x_data 的列和用于截距的 1 的列
# 使用 np.c_ 沿列方向连接
A = np.c_[np.ones(len(x_data)), x_data]
b = y_data

# 求解正规方程:(A^T A) x_hat = A^T b
# A.T 是 A 的转置,@ 表示矩阵乘法
A_T_A = A.T @ A
A_T_b = A.T @ b

# 使用 np.linalg.solve 求解方程组
# 在数值上比直接计算逆矩阵更稳定
x_hat = np.linalg.solve(A_T_A, A_T_b)

c_hat, d_hat = x_hat
print(f"最优截距: {c_hat:.4f}")
print(f"最优斜率: {d_hat:.4f}")

运行这段代码将计算出最拟合给定数据点的直线的截距和斜率。在幕后,它正是执行了前面推导出的矩阵计算。

7. 总结与未来发展

最小二乘法是从数据中估计模型参数的最强大、最标准的技术。使用微积分的知识,它可以被推导为“误差函数的梯度变为0的点”,但通过从线性代数的角度将其理解为“在列空间上的正交投影”,其数学结构的优美性便凸显出来。

这种方法并不局限于简单的直线拟合(简单回归)。通过在设计矩阵 $A$ 的列中添加如 $x^2, x^3$ 等项,它可以自然地扩展到 多项式回归,也可以发展为对每个数据点的重要性进行加权的 加权最小二乘法

作为接近数据背后真相的第一步,对最小二乘法本质的理解具有不可估量的价值。

comments powered by Disqus