前言
本文内容来自 B 站 UP 主“漫士沉思录”的视频 《最小二乘法的几何原理是什么?【MaExpo 获奖作品】》。感兴趣的读者可以观看原视频;这篇文章是我对所学内容的整理与总结。
这个视频想要解决的问题
平时教材介绍最小二乘法时,常见路线是:
设直线模型 $y=ax+b$。
写出残差平方和:
$$ \sum_{i=1}^{n}\bigl(y_i-(ax_i+b)\bigr)^2 $$对 $a,b$ 求偏导。
解方程得到斜率和截距公式。
这条路线可以算出结果,但容易让人困惑:为什么一开始就要优化“平方和”?为什么不是误差绝对值之和?视频的思路是换一个角度:把所有样本值看成向量,用投影和正交分解解释最小二乘法。
核心结论可以先记成一句话:
最小二乘法是在样本空间中,把观测向量 $\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$ 正交,所以平面中的两个正交方向可以看成:
- 均值方向:$\vec p$
- $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$,线性关系弱。