Series · ML Math Derivations · Chapter 5

机器学习数学推导(五):线性回归

从代数(正规方程)、几何(正交投影)、概率(最大似然)三个角度完整推导线性回归,再延伸到 Ridge、Lasso、梯度下降与诊断方法,全部结论与 scikit-learn 互验。

引子。 1886 年,Francis Galton 研究遗传时注意到一个怪现象:身高极端(很高或很矮)的父母,子女的身高总是比父母更靠近平均值。他把这种"向均值漂移"的现象叫做 regression——回归这个名字就是这么来的。一个统计学上的小观察,后来长成了机器学习里最具基础地位的模型。线性回归本身的预测能力其实很普通,它的真正价值在于:从逻辑回归、神经网络到核方法,几乎所有机器学习算法都是同一个思路的变奏——先找一个合适的空间,再在里面拟一条线。

本章从三个完全独立的起点(代数、几何、概率)推导线性回归,会发现它们最后都收敛到同一个方程。然后讨论当模型假设破裂时会发生什么,以及 Ridge、Lasso、稳健损失各自如何修补。

本文路线图

  1. 建模 —— 把模型写成矩阵形式,后面所有的数学就压成一行了。
  2. 代数视角 —— 一个二次函数求最小,得到 正规方程 $w^\* = (X^\top X)^{-1} X^\top y$。
  3. 几何视角 —— 同一个解,也可以理解成把 $y$ 正交投影到 $\operatorname{Col}(X)$。
  4. 概率视角 —— 在高斯噪声假设下,最小二乘恰好就是最大似然估计。
  5. 正则化 —— Ridge(L2)让方程稳定,Lasso(L1)让解稀疏。
  6. 优化算法 —— 当 $X^\top X$ 太大无法求逆时,梯度下降登场。
  7. 诊断与稳健 —— 残差、共线性、异常值,每种问题都有对应的修补办法。

建模:把线性回归写成矩阵

问题陈述

给定训练集 $\{(x_i, y_i)\}_{i=1}^{m}$,其中 $x_i \in \mathbb{R}^d$,$y_i \in \mathbb{R}$。我们想找到一个函数

$$f(x) = w^\top x + b,$$

使它的预测尽可能"接近"观测值(具体什么叫接近,下面会精确定义)。

记号小技巧。 把偏置 $b$ 单独拎出来写很烦。我们把它吸收到权重里——给每个输入末尾再补一个常数 1:

$$\tilde x = \begin{pmatrix} x \\\\ 1 \end{pmatrix}, \qquad \tilde w = \begin{pmatrix} w \\\\ b \end{pmatrix}, \qquad f(x) = \tilde w^\top \tilde x.$$

之后我们就直接写 $w^\top x$,约定 $x$ 的最后一个分量是 1。

矩阵形式

把所有东西堆起来:

$$X = \begin{bmatrix} x_1^\top \\\\ x_2^\top \\\\ \vdots \\\\ x_m^\top \end{bmatrix} \in \mathbb{R}^{m \times (d+1)}, \qquad y = \begin{bmatrix} y_1 \\\\ y_2 \\\\ \vdots \\\\ y_m \end{bmatrix} \in \mathbb{R}^{m}.$$

所有样本的预测值就是 $\hat y = Xw$。我们的任务是选 $w$,让 $\hat y$ 尽可能贴近 $y$。

视角一 · 代数:正规方程

平方损失

选用平方损失:

$$L(w) = \tfrac{1}{2}\,\|y - Xw\|_2^2 = \tfrac{1}{2}\,(y - Xw)^\top (y - Xw).$$

系数 $\tfrac{1}{2}$ 只是为了求导时把 2 消掉,不影响其他任何事。

下图很直观地说明了这个损失到底在加什么:每个数据点到拟合直线的竖直距离,平方后求和。

线性回归就是最小化竖直残差的平方和

求梯度

把损失展开:

$$L(w) = \tfrac{1}{2}\bigl(y^\top y - 2\,y^\top X w + w^\top X^\top X\,w\bigr).$$

每一项都很容易求导(用矩阵微积分恒等式 $\nabla_w (a^\top w) = a$ 和 $\nabla_w (w^\top A w) = 2 A w$,其中 $A$ 对称):

$$\nabla_w L = -X^\top y + X^\top X\, w = X^\top (Xw - y).$$

正规方程

令 $\nabla_w L = 0$:

$$\boxed{\,X^\top X\, w = X^\top y\,}.$$

这就是 正规方程(normal equation)。“normal” 在数学里有"垂直"的意思——它说的就是残差与 $X$ 的每一列都垂直,几何视角马上会展开讲。

定理 1(最小二乘解的闭式表达)。 若 $X^\top X$ 可逆,则 $L$ 的唯一最小值点为

$$w^\* = (X^\top X)^{-1} X^\top y.$$

证明。 一阶条件 $\nabla L = 0$ 给出正规方程。Hessian 为 $\nabla^2 L = X^\top X$,当 $X$ 列满秩时正定:对任意 $v \neq 0$,

$$v^\top X^\top X\, v = \|Xv\|_2^2 > 0$$

(严格大于零是因为列满秩意味着 $Xv \neq 0$)。Hessian 正定的凸二次函数加上零梯度,就是全局最小。$\square$

$X^\top X$ 什么时候不可逆? 两种典型情形:

  • $m < d+1$ —— 样本数比特征数还少(系统欠定);
  • $X$ 的列线性相关(完全共线)。

这两种情况下,伪逆(pseudoinverse)给出范数最小的解:$w^\* = X^{+} y$,可由 SVD 计算($X = U \Sigma V^\top \Rightarrow X^+ = V \Sigma^+ U^\top$,其中 $\Sigma^+$ 把非零奇异值取倒数,零保持为零)。

视角二 · 几何:正交投影

同一个答案,另一种讲法

暂时把微积分放一边。$X$ 的列张成了 $\mathbb{R}^m$ 中一个子空间 $\operatorname{Col}(X)$。无论 $w$ 怎么选,$\hat y = Xw$ 一定落在这个子空间里。我们要找的,就是 $\operatorname{Col}(X)$ 中离 $y$ 欧氏距离最近的那个点。

几何告诉我们这个点的样子:它正是 $y$ 在 $\operatorname{Col}(X)$ 上的正交投影,其特征是残差 $y - \hat y$ 与 $X$ 的每一列都正交:

$$X^\top (y - X w^\*) = 0 \quad\Longleftrightarrow\quad X^\top X\, w^\* = X^\top y.$$

又是正规方程——这次连一次导都没求。

OLS 的本质:把 $y$ 正交投影到 $X$ 的列空间

这张图把三件事一次性呈现出来:$X$ 的列张成的平面(蓝紫色)、漂浮在平面上方的目标向量 $y$、平面上的投影 $\hat y$,以及垂直于平面、笔直向上指向 $y$ 的残差 $y - \hat y$。直角 = 最优——这就是几何视角的全部信息。

投影矩阵

投影本身是一个线性映射,叫 帽子矩阵(hat matrix):

$$H = X(X^\top X)^{-1} X^\top, \qquad \hat y = H y.$$

它满足正交投影算子的两条定义性质:

  • 幂等:$H^2 = H$。投影两遍和投影一遍效果一样。
  • 对称:$H^\top = H$。“对称"对应的几何含义就是"投影是正交的”。

互补的 残差算子 $M = I - H$ 把向量投到正交补上;$My$ 就是残差向量。它满足 $MX = 0$,把"残差与每个特征都正交"这件事写成了一个矩阵恒等式。

视角三 · 概率:最大似然

线性高斯模型

假设数据生成过程为

$$y_i = w^\top x_i + \epsilon_i, \qquad \epsilon_i \overset{\text{i.i.d.}}{\sim} \mathcal{N}(0, \sigma^2).$$

等价说法:给定 $x_i$,目标 $y_i$ 是均值为 $w^\top x_i$、方差为 $\sigma^2$ 的高斯分布。

似然与对数似然

由独立性,联合似然可以分解:

$$p(y \mid X, w, \sigma^2) = \prod_{i=1}^{m} \frac{1}{\sqrt{2\pi}\,\sigma}\,\exp\!\left(-\frac{(y_i - w^\top x_i)^2}{2\sigma^2}\right).$$

取对数:

$$\log p = -\frac{m}{2}\log(2\pi\sigma^2) - \frac{1}{2\sigma^2}\sum_{i=1}^{m}(y_i - w^\top x_i)^2.$$

固定 $\sigma^2$ 对 $w$ 极大化,等价于最小化残差平方和。所以:

定理 2。 在高斯噪声假设下,$w$ 的极大似然估计就是 OLS 解:$\hat w_{\text{MLE}} = (X^\top X)^{-1} X^\top y$。

对 $\sigma^2$ 求导可得 $\hat\sigma^2_{\text{MLE}} = \tfrac{1}{m}\|y - X\hat w\|_2^2$——残差平方和的均值。这个估计是有偏的;无偏版本要除以 $m - d - 1$。

一步贝叶斯:Ridge 是怎么冒出来的

给参数加个先验 $w \sim \mathcal{N}(0, \tau^2 I)$。MAP 估计就是极大化后验,等价于最小化

$$\sum_i (y_i - w^\top x_i)^2 + \frac{\sigma^2}{\tau^2}\|w\|_2^2.$$

这就是 Ridge 回归。我们顺便认出了正则化强度的含义:$\lambda = \sigma^2 / \tau^2$。先验越弱($\tau$ 越大),$\lambda$ 越小。

正则化:Ridge、Lasso、Elastic Net

为什么要正则化

当特征近似共线时,$X^\top X$ 接近奇异,$(X^\top X)^{-1}$ 里会出现巨大的元素。这时 $y$ 上一点点扰动就会让 $\hat w$ 飞起来。正则化通过惩罚大的 $w$ 来压住这种敏感性:

$$L_{\text{reg}}(w) = \tfrac{1}{2}\|y - Xw\|_2^2 + \lambda \cdot \mathcal{P}(w).$$

Ridge 回归(L2)

取 $\mathcal{P}(w) = \tfrac{1}{2}\|w\|_2^2$。重复一遍刚才的求梯度过程,闭式解直接掉出来:

$$\boxed{\;\hat w_{\text{Ridge}} = (X^\top X + \lambda I)^{-1} X^\top y.\;}$$

加上 $\lambda I$ 等于把 $X^\top X$ 的每一个特征值都抬高了 $\lambda$,所以只要 $\lambda > 0$,矩阵永远可逆——哪怕原本的 $X^\top X$ 是奇异的。这就是大家常说的"Ridge 让逆矩阵稳定"。

Lasso 回归(L1)

取 $\mathcal{P}(w) = \|w\|_1$。绝对值函数在零点不可微,所以没有闭式解;但优化问题仍是凸的,坐标下降近端梯度 都能高效求解。Lasso 最有名的性质是:

Lasso 会把部分系数精确压到零,自动完成变量选择。

下图展示了两种正则化的系数路径——每个 $w_j$ 如何随 $\lambda$ 从极小(左端,等价 OLS)走到极大(右端,全部归零):

系数路径:Ridge 平滑收缩,Lasso 直接归零

Ridge 中每条曲线都是渐近趋近零——会变得很小,但永远不为零。Lasso 里曲线碰到坐标轴就贴在上面不动了。这种"要么进、要么出"的二元行为,正是 Lasso 能做特征选择的原因。

为什么 Lasso 会稀疏:几何论证

把两种正则化改写成约束形式

  • Ridge:$\min \|y - Xw\|^2$,约束 $\|w\|_2 \le t$。
  • Lasso:$\min \|y - Xw\|^2$,约束 $\|w\|_1 \le t$。

损失函数的等高线是围绕 $\hat w_{\text{OLS}}$ 的椭圆。两种约束区域形状非常不同:

L1 vs L2 几何:菱形角点带来稀疏性

L2 圆盘边界是光滑的,所以损失椭圆通常会在边界内部的某点擦上去——两个坐标都非零。L1 菱形的角点正好在坐标轴上,倾斜的椭圆几乎总是先碰到角点——给出稀疏解。维度越高,菱形的角和棱越多,Lasso 把系数清零的"杀伤力"也就越大。

Elastic Net

L1 和 L2 的凸组合:

$$\mathcal{P}_{\text{EN}}(w) = \alpha \|w\|_1 + \tfrac{1-\alpha}{2}\|w\|_2^2.$$

兼具 L1 的稀疏性和 L2 的稳定性。当存在一组高度相关的特征、Lasso 会随机挑一个保留时,Elastic Net 是更稳妥的选择。

优化:闭式解不可行时怎么办

计算 $(X^\top X)^{-1}$ 的时间是 $\mathcal{O}(d^3)$,空间是 $\mathcal{O}(d^2)$。$d = 10^6$ 时直接劝退。这时只能用迭代算法。

批量梯度下降(BGD)

$$w^{(t+1)} = w^{(t)} - \eta \cdot \frac{1}{m} X^\top (X w^{(t)} - y).$$

每步代价 $\mathcal{O}(md)$。对强凸的 $L$,线性收敛

$$L(w^{(t)}) - L(w^\*) \le \left(\frac{\kappa - 1}{\kappa + 1}\right)^{2t} \bigl(L(w^{(0)}) - L(w^\*)\bigr),$$

其中 $\kappa = \lambda_{\max}(X^\top X) / \lambda_{\min}(X^\top X)$ 是条件数。问题越病态($\kappa$ 越大),收敛越慢——这也是为什么跑梯度下降之前一定要标准化特征。

随机梯度下降(SGD)

每步只用一个样本 $(x_i, y_i)$:

$$w^{(t+1)} = w^{(t)} - \eta \cdot (w^{(t)\top} x_i - y_i)\, x_i.$$
  • 优点:每步 $\mathcal{O}(d)$,支持流式/在线学习;噪声偶尔还能帮非凸问题逃离差的区域。
  • 缺点:更新带噪,要保证几乎处处收敛,需要递减学习率(如 $\eta_t = \eta_0 / (1 + t)$)。

小批量梯度下降(Mini-batch GD)

折中方案:每步用一个 $B \in [32, 512]$ 大小的批次平均梯度。既能利用向量化加速,又比纯 SGD 稳。今天几乎所有深度学习框架默认用的都是这一版。

模型评估与诊断

评价指标

设测试集预测为 $\hat y_i$:

  • MSE $= \frac{1}{n}\sum (y_i - \hat y_i)^2$ —— 平方惩罚大误差。
  • RMSE $= \sqrt{\text{MSE}}$ —— 与 $y$ 同量纲。
  • MAE $= \frac{1}{n}\sum |y_i - \hat y_i|$ —— 对异常值更稳健。
  • $R^2$ $= 1 - \dfrac{\sum(y_i - \hat y_i)^2}{\sum(y_i - \bar y)^2}$ —— 解释方差比例。

$R^2$ 有个微妙的陷阱:每加一个特征,它就单调不降。比较不同规模的模型时要用调整 $R^2$

$$R^2_{\text{adj}} = 1 - (1 - R^2)\,\frac{n - 1}{n - d - 1}.$$

交叉验证:选择模型容量

没有一个绝对"最好"的多项式次数,也没有一个绝对"最好"的 $\lambda$。交叉验证通过留出折数,找出泛化最好的那个选择:

5 折交叉验证揭示偏差-方差的最优点

训练误差随容量增加(更多多项式项、更小 $\lambda$)单调下降。CV 误差呈现 U 形:容量太小是偏差占优(欠拟合),容量太大是方差占优(过拟合)。CV 曲线的最低点就是该选的模型。

多项式回归:偏差与方差的可视化

线性回归是"参数线性",不是"输入线性"。加入多项式特征就能拟合曲线,同时仍是在解一个线性系统。代价是过拟合的风险:

同一组 sin 数据的欠拟合 / 合适 / 过拟合

一阶模型太死板,捕捉不到正弦波(高偏差);三阶多项式刚刚好;十五阶多项式几乎穿过每一个数据点,但点与点之间剧烈震荡——典型过拟合。注意比较三幅图的训练 MSE:单调下降。训练误差对过拟合视而不见,只有保留集才能告诉你真相。

异常值与稳健回归

平方损失有一个众所周知的弱点:单个残差很大的异常值,平方后会以巨大的份额贡献给总损失,模型只好弯下腰去迁就它。看图最直观:

OLS 被异常值拽偏,Huber 回归不为所动

灰色虚线是真值。OLS(紫色)明显被三个异常值拉斜。Huber 损失对小残差用平方、对大残差用线性,温柔地处理异常值:

$$\rho_\delta(r) = \begin{cases} \tfrac{1}{2} r^2, & |r| \le \delta, \\\\ \delta\,(|r| - \tfrac{1}{2}\delta), & |r| > \delta. \end{cases}$$

Huber 拟合(绿色)几乎与真值重合。其他选择还有 RANSAC、M-估计、分位数回归等等,但 Huber 是最常用的主力:处处可微、凸、稳健。

常见问题答疑

Q1:为什么用平方损失而不用绝对值损失?

损失可微?闭式解?异常值稳健?隐含噪声
平方(L2)处处可微高斯
绝对值(L1)0 处不可微无(线性规划)拉普拉斯
Huber处处可微混合

平方损失能成为主流主要因为三点:(i) 光滑;(ii) 有闭式解;(iii) 对应最常见噪声分布的 MLE。需要稳健性时换 Huber。

Q2:正规方程还是梯度下降?

用正规方程的场景:$d \lesssim 10^4$,$X^\top X$ 内存放得下——一步到位且精确。

用梯度下降的场景:$d$ 很大、需要在线更新、或者加了非光滑惩罚(比如 Lasso,根本没有闭式解)。

Q3:为什么 Ridge 一定有解?

因为对任意 $\lambda > 0$,$X^\top X + \lambda I$ 都是正定的:

$$v^\top (X^\top X + \lambda I) v = \|Xv\|^2 + \lambda\|v\|^2 \ge \lambda\|v\|^2 > 0 \quad (v \ne 0).$$

即便 $X v = 0$,$\lambda\|v\|^2$ 这一项也保证了二次型严格大于零。几何上的直观说法是:Ridge 在"数据无法确定的方向上偏好 0"。

Q4:$\lambda$ 怎么选?

交叉验证。几乎永远是交叉验证。scikit-learn 的 RidgeCVLassoCV 一行搞定。在 $[10^{-3}, 10^{3}]$ 区间按对数均匀搜,再细化。

Q5:为什么要标准化特征?

两个原因:

  1. 数值条件。不同量纲会让 $X^\top X$ 病态($\kappa$ 极大),梯度下降会变得非常慢。
  2. 正则化的公平性。$\|w\|_2^2$ 对每个坐标一视同仁。同一个特征用毫米表示和用米表示,权重相差 1000 倍,Ridge 会无理由地往死里压前者。

StandardScaler:减去(训练集的)均值,除以(训练集的)标准差。

Q6:多重共线性会带来什么后果?

两个高度相关的特征 $x_1 \approx x_2$ 会让 $X^\top X$ 接近奇异。症状:$\hat w_1$、$\hat w_2$ 的标准误巨大,符号会随轻微扰动反转,但预测值 $\hat y = X\hat w$ 仍然准确。

诊断:方差膨胀因子 $\text{VIF}_j = 1 / (1 - R_j^2)$,$R_j^2$ 是用其他特征预测特征 $j$ 得到的。经验阈值:VIF $> 10$ 算严重共线。

修复:Ridge 回归、删除冗余特征、用 PCA 降维替换。

Q7:经典假设有哪些?违反了怎么办?

假设诊断违反时的修复
关于 $w$ 的线性残差图无明显模式多项式特征、基函数展开、核方法
误差独立Durbin–Watson $\approx 2$AR/ARIMA、广义最小二乘
同方差残差散布在 $\hat y$ 上均匀加权最小二乘、对 $y$ 取对数
误差正态Q–Q 图近对角线Box–Cox 变换、广义线性模型、稳健损失

统计推断(p 值、置信区间)时四条都要看。只做预测时,正态性假设破坏一般无伤大雅。

Q8:分类特征怎么编码?

绝不要编成整数(那会强行造一个不存在的顺序)。要用独热编码pd.get_dummiesOneHotEncoder)。$k$ 个类别就开 $k$ 个指示变量——再删掉一列以避免列之和恒等于 1 引起的多重共线(drop='first')。

Q9:线性回归能拟合非线性关系吗?

可以——这里的"线性"指关于参数线性,不是关于输入线性。把 $x$ 换成 $\phi(x)$(多项式、对数、sin、ReLU 都可以),再在 $\phi$ 空间里拟一个线性模型。核方法和神经网络做的就是这件事,只是更系统、更深。

Q10:怎么解读系数?

标准化特征之后,$\hat w_j$ 的含义是:在其他特征保持不变的前提下,$x_j$ 增加一个标准差,$\hat y$ 平均变化 $\hat w_j$ 个标准差。两个重要警示:

  • 共线性会让单个 $\hat w_j$ 不稳定(即便预测仍然准)——别孤立地解读某一个 $\hat w_j$。
  • 相关性 ≠ 因果性。回归系数只是数据中的条件关联,仅此而已。要谈因果,需要实验设计或专门的识别策略。

代码与可复现性

本文所有图都由 scripts/figures/ml-math-derivations/05-linear-regression.py 生成,并在脚本里用 scikit-learn 做了交叉验证(例如图 1 中手算的斜率与截距 assert 等于 LinearRegression 的拟合结果,图 2 中数值验证了残差与列空间正交)。这个脚本是图片的唯一权威源——一行命令就能重新生成全部图。

总结

我们从三个独立的方向逼近线性回归,最终都落在同一个方程上:

  • 代数视角。最小化二次函数,令梯度为零,得到 $w^\* = (X^\top X)^{-1} X^\top y$。
  • 几何视角。把 $y$ 正交投影到 $\operatorname{Col}(X)$。残差与列正交这一条件,就是正规方程。
  • 概率视角。高斯噪声下 $w$ 的 MLE 等价于最小化平方残差;给 $w$ 加高斯先验后,MAP 给出 Ridge。

接着我们处理了原始 OLS 的三大失效:共线性下不稳定(Ridge 修复)、不能选特征(Lasso 修复)、对异常值过敏(Huber 修复)。优化工具箱(BGD/SGD/mini-batch)应对 $X^\top X$ 太大无法求逆的情形。而模型容量该取多少,最终交给交叉验证经验决定。

下一章预告。 我们将把场景推广到分类——输出空间从连续变成离散。“sigmoid 函数从哪来”、“交叉熵损失的数学根据是什么”、“决策边界的几何含义”,这些问题都可以从一个朴素的问题出发推出来:二元输出的"线性高斯模型"应该长什么样?

参考文献

  • Hastie, T., Tibshirani, R., & Friedman, J. (2009). The Elements of Statistical Learning (2nd ed.). Springer.
  • Bishop, C. M. (2006). Pattern Recognition and Machine Learning. Springer.
  • Murphy, K. P. (2012). Machine Learning: A Probabilistic Perspective. MIT Press.
  • James, G., Witten, D., Hastie, T., & Tibshirani, R. (2013). An Introduction to Statistical Learning. Springer.
  • Tibshirani, R. (1996). Regression shrinkage and selection via the Lasso. JRSS-B, 58(1), 267–288.
  • Hoerl, A. E., & Kennard, R. W. (1970). Ridge regression: biased estimation for nonorthogonal problems. Technometrics, 12(1), 55–67.
  • Zou, H., & Hastie, T. (2005). Regularization and variable selection via the elastic net. JRSS-B, 67(2), 301–320.
  • Huber, P. J. (1964). Robust estimation of a location parameter. Annals of Math. Stat., 35(1), 73–101.
  • 李航 (2012). 统计学习方法. 清华大学出版社.
  • 周志华 (2016). 机器学习. 清华大学出版社.

系列导航

主题链接
4凸优化理论<– 上一篇
5线性回归当前位置
6逻辑回归与分类下一篇 –>
7决策树前往 –>
8支持向量机前往 –>

Liked this piece?

Follow on GitHub for the next one — usually one a week.

GitHub