最小二乘法的几何原理

前言

本文内容来自 B 站 UP 主“漫士沉思录”的视频 《最小二乘法的几何原理是什么?【MaExpo 获奖作品】》。感兴趣的读者可以观看原视频;这篇文章是我对所学内容的整理与总结。

这个视频想要解决的问题

平时教材介绍最小二乘法时,常见路线是:

  1. 设直线模型 $y=ax+b$。

  2. 写出残差平方和:

    $$ \sum_{i=1}^{n}\bigl(y_i-(ax_i+b)\bigr)^2 $$
  3. 对 $a,b$ 求偏导。

  4. 解方程得到斜率和截距公式。

这条路线可以算出结果,但容易让人困惑:为什么一开始就要优化“平方和”?为什么不是误差绝对值之和?视频的思路是换一个角度:把所有样本值看成向量,用投影和正交分解解释最小二乘法。

核心结论可以先记成一句话:

最小二乘法是在样本空间中,把观测向量 $\vec y$ 投影到模型能表示的子空间上;残差向量就是投影误差,而残差平方和就是这个误差向量模长的平方。

预备知识

若有 $n$ 个样本点 $(x_i,y_i)$,可以把所有 $x$ 值和 $y$ 值分别看成两个 $n$ 维向量:

$$ \vec x= \begin{pmatrix} x_1\\ x_2\\ \vdots\\ x_n \end{pmatrix}, \qquad \vec y= \begin{pmatrix} y_1\\ y_2\\ \vdots\\ y_n \end{pmatrix} $$

点乘和模长为:

$$ \vec x\cdot \vec y=\sum_{i=1}^{n}x_i y_i $$ $$ \|\vec x\|^2=\vec x\cdot \vec x=\sum_{i=1}^{n}x_i^2 $$

夹角公式为:

$$ \vec x\cdot \vec y=\|\vec x\|\|\vec y\|\cos \theta $$

这里最重要的是:$\|\vec x\|^2$ 本质上就是各分量平方和。这会直接解释“最小二乘”为什么会出现平方和。

从两个点开始:直线方程写成向量线性组合

先看最简单的情形:平面上有两个点,要求过这两个点的唯一一条直线。

直线模型为:

$$ y=ax+b $$

两个点代入后得到:

$$ \begin{cases} y_1=ax_1+b\\ y_2=ax_2+b \end{cases} $$

视频不直接解这个二元一次方程组,而是把它写成向量形式。

定义:

$$ \vec x= \begin{pmatrix} x_1\\ x_2 \end{pmatrix}, \quad \vec y= \begin{pmatrix} y_1\\ y_2 \end{pmatrix}, \quad \vec p= \begin{pmatrix} 1\\ 1 \end{pmatrix} $$

于是方程组变成:

$$ \vec y=a\vec x+b\vec p $$

这句话的几何意义是:

  • $\vec x$ 是一个方向;
  • $\vec p$ 是全 1 向量,也是一个方向;
  • $a\vec x+b\vec p$ 是这两个方向的线性组合;
  • 求 $a,b$,就是要用 $\vec x$ 和 $\vec p$ 拼出 $\vec y$。

两个样本点时,$\vec x,\vec p,\vec y$ 都是二维向量。只要 $\vec x$ 和 $\vec p$ 不共线,就能唯一拼出 $\vec y$。

正交分解

视频为了后面推广,故意不用普通代数解方程,而是用正交分解。

以 $\vec p$ 的方向为横轴正方向。

任意向量 $\vec v$ 沿着 $\vec p$ 的投影为:

$$ \begin{aligned} \operatorname{proj}_{\vec p}(\vec v) &= \frac{\vec v\cdot \vec p}{\vec p\cdot \vec p}\vec p \end{aligned} $$

垂直于 $\vec p$ 的部分为:

$$ \begin{aligned} \vec v_\perp &= \vec v-\frac{\vec v\cdot \vec p}{\vec p\cdot \vec p}\vec p \end{aligned} $$

对 $\vec x$ 和 $\vec y$ 都这样拆:

$$ \vec x=\vec x_{\parallel}+\vec x_{\perp} $$ $$ \vec y=\vec y_{\parallel}+\vec y_{\perp} $$

其中:

$$ \vec x_{\parallel}=\bar x \vec p, \qquad \vec y_{\parallel}=\bar y \vec p $$

因为:

$$ \begin{aligned} \frac{\vec x\cdot \vec p}{\vec p\cdot \vec p} &= \frac{x_1+\cdots+x_n}{n} \\ &= \bar x \end{aligned} $$

所以从几何上看,样本均值就是向量在全 1 方向上的投影系数。

两个点时,垂直于 $\vec p$ 的方向只有一维,因此只要比较垂直方向的分量,就可以得到:

$$ a=\frac{\vec y_\perp\cdot \vec x_\perp}{\vec x_\perp\cdot \vec x_\perp} $$

再由平行方向得到:

$$ b=\bar y-a\bar x $$

注意:视频这里真正想展示的不是“两个点怎么求直线”,而是为后面更多样本点铺路。

推广到三个点

很多人听到“二维推广到三维”,会以为是把平面点变成空间点。但视频强调,这里的维度不是点本身的几何维度,而是样本数量。

  • 两个样本点 $\Rightarrow \vec x,\vec y,\vec p$ 是二维向量;
  • 三个样本点 $\Rightarrow \vec x,\vec y,\vec p$ 是三维向量;
  • $n$ 个样本点 $\Rightarrow \vec x,\vec y,\vec p$ 是 $n$ 维向量。

三个样本点时,还是希望:

$$ \vec y=a\vec x+b\vec p $$

但是 $a\vec x+b\vec p$ 只能落在 $\vec x$ 和 $\vec p$ 张成的平面里。真实测量数据往往有误差,所以 $\vec y$ 不一定正好在这个平面上。

这就对应现实中的情况:三点通常不共线,所以不存在一条直线同时穿过三个点。

这时方程:

$$ \vec y=a\vec x+b\vec p $$

通常无解。

关键一步:把观测向量投影到模型平面上

既然 $\vec y$ 不在平面 $\operatorname{span}(\vec x,\vec p)$ 上,最自然的修正方式是:找到这个平面上离 $\vec y$ 最近的向量。

视频把这个平面上的投影向量记为 $\vec\gamma$,把误差向量记为 $\vec\delta$:

$$ \vec y=\vec\gamma+\vec\delta $$

其中:

  • $\vec\gamma\in \operatorname{span}(\vec x,\vec p)$,是模型能解释的部分;
  • $\vec\delta$ 垂直于这个平面,是模型无法解释的残差;
  • $\|\vec\delta\|$ 越小,说明模型结果越接近观测数据。

最小二乘法的几何本质就是:

$$ \min_{a,b}\|\vec y-(a\vec x+b\vec p)\|^2 $$

展开成分量就是:

$$ \min_{a,b}\sum_{i=1}^{n}\bigl(y_i-(ax_i+b)\bigr)^2 $$

所以“平方和”不是凭空冒出来的,它来自残差向量模长的平方。

如果数据恰好共线,那么存在一组参数使残差为零,此时:

$$ \min_{a,b}E(a,b)=0 $$

所以,“$\min$”不是最小二乘法额外添加的计算技巧,而是因为原方程通常无解,我们必须在许多近似答案中定义哪个最好。

为什么投影是合理的:最大似然估计的直觉

视频中间用“神枪手和普通人打靶”的例子解释最大似然估计。它想说明的是:

在观测结果已经发生的前提下,我们倾向于选择最可能产生这个观测结果的解释。

对应到拟合问题:

  • 测量误差越大,发生的可能性通常越小;
  • 如果某个平面上的 $\vec\gamma$ 离 $\vec y$ 更近,那么需要的误差 $\vec\delta$ 更小;
  • 因此这个 $\vec\gamma$ 更可能是“真实线性关系”对应的预测向量。

如果进一步假设误差服从独立同方差的正态分布,那么最大似然估计会严格推出最小化残差平方和。这是统计解释;视频主要用几何直觉说明它为什么自然。

如何计算投影向量

因为平面由 $\vec p$ 和 $\vec x$ 张成,先把 $\vec x$ 中平行于 $\vec p$ 的部分扣掉:

$$ \vec x_c=\vec x-\bar x\vec p $$

这里 $\vec x_c$ 是“中心化后的 $x$ 向量”,也就是:

$$ \vec x_c= \begin{pmatrix} x_1-\bar x\\ x_2-\bar x\\ \vdots\\ x_n-\bar x \end{pmatrix} $$

中心化向量就是前面所说的 $\vec x$ 中垂直于 $\vec p$ 的分量。

同理:

$$ \vec y_c=\vec y-\bar y\vec p $$

因为 $\vec x_c$ 与 $\vec p$ 正交,所以平面中的两个正交方向可以看成:

  1. 均值方向:$\vec p$
  2. $x$ 的变化方向:$\vec x_c$

于是 $\vec y$ 在平面上的投影为:

$$ \begin{aligned} \vec\gamma &= \bar y\vec p + \frac{\vec y_c\cdot \vec x_c}{\vec x_c\cdot \vec x_c}\vec x_c \end{aligned} $$

也就是:

$$ \begin{aligned} \vec\gamma &= \bar y\vec p + a(\vec x-\bar x\vec p) \end{aligned} $$

其中:

$$ a= \frac{\vec y_c\cdot \vec x_c}{\vec x_c\cdot \vec x_c} $$

再整理:

$$ \begin{aligned} \vec\gamma &= a\vec x+(\bar y-a\bar x)\vec p \end{aligned} $$

所以:

$$ b=\bar y-a\bar x $$

这一步是整段推导的核心:先用 $\vec p$ 解释均值,再用 $\vec x_c$ 解释围绕均值的变化。

推广到任意多个样本点

推广到 $n$ 个样本点时,向量都进入 $\mathbb R^n$,但核心结构不变:

  • $\vec p=(1,1,\dots,1)^T$
  • $\vec x=(x_1,x_2,\dots,x_n)^T$
  • $\vec y=(y_1,y_2,\dots,y_n)^T$
  • 模型向量 $a\vec x+b\vec p$ 仍然落在二维子空间 $\operatorname{span}(\vec x,\vec p)$
  • 最小二乘解仍然是把 $\vec y$ 投影到这个二维子空间上

令:

$$ \vec x_c=\vec x-\bar x\vec p $$ $$ \vec y_c=\vec y-\bar y\vec p $$

则斜率:

$$ \begin{aligned} a&= \frac{\vec y_c\cdot \vec x_c}{\vec x_c\cdot \vec x_c} \\ &= \frac{\sum_{i=1}^{n}(x_i-\bar x)(y_i-\bar y)} {\sum_{i=1}^{n}(x_i-\bar x)^2} \end{aligned} $$

截距:

$$ b=\bar y-a\bar x $$

这里要注意两个统计量:

偏差平方和:

$$ S_{xx}=\sum_{i=1}^{n}(x_i-\bar x)^2 $$

偏差乘积和:

$$ S_{xy}=\sum_{i=1}^{n}(x_i-\bar x)(y_i-\bar y) $$

所以斜率也可以写成:

$$ a=\frac{S_{xy}}{S_{xx}} $$

如果用样本方差、样本协方差表示,因为二者通常都除以 $n-1$,比例中的系数会抵消,因此也可理解为:

$$ a=\frac{s_{xy}}{s_{xx}} $$

其中 $s_{xy}$ 是样本协方差,$s_{xx}$ 是 $x$ 的样本方差。

平方和分解:为什么能衡量拟合好坏

视频最后把几何图中的直角三角形和统计平方和联系起来。

中心化后的 $\vec y_c$ 可以分解成:

$$ \vec y_c=\vec\gamma_c+\vec\delta $$

其中:

  • $\vec\gamma_c$:被 $x$ 的变化解释的部分;
  • $\vec\delta$:残差;
  • 二者正交。

由勾股定理:

$$ \begin{aligned} \|\vec y_c\|^2 &= \|\vec\gamma_c\|^2+\|\vec\delta\|^2 \end{aligned} $$

写成统计语言:

$$ \begin{aligned} \sum_{i=1}^{n}(y_i-\bar y)^2 &= \sum_{i=1}^{n}(\hat y_i-\bar y)^2 + \sum_{i=1}^{n}(y_i-\hat y_i)^2 \end{aligned} $$

也就是:

$$ \begin{aligned} \text{总偏差平方和} &= \text{回归平方和} + \text{残差平方和} \end{aligned} $$

视频中写作:

$$ s_{yy}^2=U+Q $$

其中:

  • $U$:回归平方和,表示能被线性模型解释的部分;
  • $Q$:残差平方和,表示线性模型解释不了的部分。

如果残差平方和 $Q$ 很大,说明 $\vec y$ 的变化中只有很少一部分能由 $\vec x$ 解释,也就是线性关系较弱。

相关系数的几何意义

相关系数:

$$ r= \frac{\sum_{i=1}^{n}(x_i-\bar x)(y_i-\bar y)} {\sqrt{\sum_{i=1}^{n}(x_i-\bar x)^2} \sqrt{\sum_{i=1}^{n}(y_i-\bar y)^2}} $$

用向量写就是:

$$ r= \frac{\vec x_c\cdot \vec y_c} {\|\vec x_c\|\|\vec y_c\|} $$

根据点乘夹角公式:

$$ r=\cos\theta $$

这里的 $\theta$ 是中心化向量 $\vec x_c$ 和 $\vec y_c$ 的夹角。

所以相关系数的几何解释是:

  • $r\approx 1$:夹角接近 $0^\circ$,$x$ 增大时 $y$ 通常也增大,强正相关;
  • $r\approx -1$:夹角接近 $180^\circ$,$x$ 增大时 $y$ 通常减小,强负相关;
  • $r\approx 0$:夹角接近 $90^\circ$,线性关系弱。
七弦绕明宫,知音且闻音,写作智音读作知音
使用 Hugo 构建
主题 Stack 由 Jimmy 设计