← 返回模块
Q2.6.1.2beta 可读 · 未来免费校验通过内容版本 2026-05-26

偏差-方差分解与泛化

2.6.1 · 监督学习基础 · 数学与统计能力

偏差-方差分解与泛化

Hook:周一的因子复盘

上海某私募的因子研究员周一收到了风控的复盘邮件。他原本用 6 个 Barra 风格因子在沪深300 成份股上做截面回归预测次日超额收益,样本内 R2=0.18R^2 = 0.18,模型经理觉得「不够性感」。一周后他把因子从 6 个铺到 36 个——叠加了 28 个行业哑变量、过去 30 日动量分位、几个高频微观结构特征——样本内 R2R^2 一跃到 0.620.62,PPT 终于过了投委会。隔了一个月把策略推到 SSE 真实成交回测:样本外 R2=0.04R^2 = -0.04,相对中证基准跑输 1.3%。​​​0.620.040.62 \to -0.04 之间的 0.660.66R2R^2 去哪儿了?​ 上一节我们承认了泛化误差(generalization error)的存在,这一节把它拆成三块,告诉你那 30 个新因子真正买到的是什么。

一、把期望平方误差拆成三块

设数据满足 Y=f(X)+εY = f(X) + \varepsilon,其中 ε\varepsilon 是零均值、方差为 σ2\sigma^2 的噪声(noise),与训练集 D={(xi,yi)}i=1nD = \{(x_i, y_i)\}_{i=1}^n 独立——工作假设通常是 εN(0,σ2)\varepsilon \sim \mathcal{N}(0, \sigma^2),即标准正态分布(Gaussian distribution)。把训练集 DD 喂给学习器(learner)得到预测函数 h^(;D)\hat{h}(\cdot; D)。在任一固定测试点 xx 上,​​对噪声 ε\varepsilon 与训练集 DD 同时取期望​​的均方误差等于:

E[(Yh^(x))2]=σ2+(ED[h^(x;D)]f(x))2+VarD[h^(x;D)]\mathbb{E}\big[(Y - \hat{h}(x))^2\big] = \sigma^2 + \big(\mathbb{E}_D[\hat{h}(x; D)] - f(x)\big)^2 + \mathrm{Var}_D[\hat{h}(x; D)]

右端三项各有名字:​​不可约噪声方差​​(irreducible noise variance)σ2\sigma^2 是数据本身的下限,再聪明的学习器也消不掉;​​偏差平方​​(squared bias)刻画「平均预测器 hˉ(x)=ED[h^(x;D)]\bar h(x) = \mathbb{E}_D[\hat h(x; D)]」距离真实信号 f(x)f(x) 多远,是欠拟合(underfit)的标志;​​方差​​(variance)刻画「训练集每换一份,h^(x)\hat h(x) 抖几下」,是过拟合(overfit)的标志。

二、四步推导

  1. ​加减平均预测​​:记 hˉ(x)=ED[h^(x;D)]\bar h(x) = \mathbb{E}_D[\hat h(x; D)],把残差三段拆分:Yh^(x)=(Yf(x))=ε+(f(x)hˉ(x))偏差+(hˉ(x)h^(x))抖动Y - \hat h(x) = \underbrace{(Y - f(x))}_{=\varepsilon} + \underbrace{(f(x) - \bar h(x))}_{\text{偏差}} + \underbrace{(\bar h(x) - \hat h(x))}_{\text{抖动}}

  2. ​展开平方​​:三段相加再平方,得到三个平方项与三个交叉项,对 ε\varepsilonDD 同时取期望。

  3. ​交叉项逐一归零​​:噪声 ε\varepsilon 与训练集 DD 独立且零均值,因此 E[ε(f(x)hˉ(x))]=0\mathbb{E}[\varepsilon(f(x) - \bar h(x))] = 0E[ε(hˉ(x)h^(x))]=0\mathbb{E}[\varepsilon(\bar h(x) - \hat h(x))] = 0;余下的交叉项 ED[(f(x)hˉ(x))(hˉ(x)h^(x))]\mathbb{E}_D[(f(x) - \bar h(x))(\bar h(x) - \hat h(x))](f(x)hˉ(x))(f(x) - \bar h(x)) 不依赖 DD,可提出期望外,内剩 ED[hˉ(x)h^(x)]=0\mathbb{E}_D[\bar h(x) - \hat h(x)] = 0

  4. ​回代​​:E[ε2]=σ2\mathbb{E}[\varepsilon^2] = \sigma^2(f(x)hˉ(x))2(f(x) - \bar h(x))^2 不随机即偏差平方、ED[(hˉ(x)h^(x))2]=VarD[h^(x;D)]\mathbb{E}_D[(\bar h(x) - \hat h(x))^2] = \mathrm{Var}_D[\hat h(x; D)]。三块合并即得上一节的等式。

把视角扩到多元线性模型:用普通最小二乘(ordinary least squares)拟合时,VarD[h^(x;D)]\mathrm{Var}_D[\hat h(x; D)] 由设计矩阵 XX 通过 σ2(XTX)1\sigma^2 (X^T X)^{-1} 决定;一旦因子之间高度共线,XTXX^T X 的协方差矩阵(covariance matrix)结构恶化,条件数(condition number)飙升,方差项就被放大——这就是「加 30 个高度相关的行业哑变量」对样本外做的事。

三、模型容量与训练/测试曲线

固定样本量 n=240n = 240(一年沪深300 月频面板),同一组真实数据上用多项式特征拟合次日截面收益,典型结果如下表:

多项式阶 dd样本内 R2R^2样本外 R2R^2区域
10.040.03欠拟合(高偏差)
30.160.14良好拟合
60.280.11偏过拟合
120.55-0.02过拟合(高方差)

训练误差几乎单调下降,测试误差先降后升——​​两条曲线之间的距离即方差项的实际体现​​。开篇那位研究员把容量从 6 推到 36,正是把自己从中段推到了最后一行:样本内分数翻三倍,但泛化已经塌掉。

下面的滑块演示总误差关于容量 dd 的 U 形:左侧偏差主导、右侧方差主导,最低点是「良好拟合」窗口。

Formula Explorer

b / d + v * d + s^2

四、学习曲线:样本量 nn 的作用

把容量固定、变化样本量 nn。粗略地,方差项以 VarD[h^(x;D)]1/n\mathrm{Var}_D[\hat h(x; D)] \propto 1/n 衰减,而偏差项​​不随 nn 改变​​——它只随假设空间 H\mathcal{H} 的能力变化。典型学习曲线(learning curve)的样子:训练误差从极低位缓慢上升,测试误差从高位下降,两条像剪刀一样合拢,合拢的水平即 偏差2+σ2^2 + \sigma^2。诊断:两条曲线​​已经合拢但仍远高于业务可接受水平​​,是高偏差信号——加因子、换更灵活的 H\mathcal{H};两条曲线​​间距很大​​,是高方差信号——加样本、做正则化、降容量。

题外话:现代神经网络(modern neural networks)能观察到「双下降」(double descent)现象,过参数化模型在容量极大时反而再次降低测试误差。本课不展开,留到模块 2.6.3 神经网络。

五、No-Free-Lunch 与归纳偏置

非形式版本的​​没有免费午餐定理​​(no-free-lunch theorem)说:在所有可能的数据分布上平均,任何学习算法的期望泛化误差都相同。直白点说:​​没有「普适最优」的模型​​。一个学习器之所以在你的因子数据上有用,是因为它的假设空间 H\mathcal{H} 恰好编码了与该数据相容的​​归纳偏置​​(inductive bias)。下一课选定 H\mathcal{H} 为线性函数族,基于「沪深300 截面信号大体近似线性可加」的经验先验;再下一课用正则化进一步收紧 H\mathcal{H} 的有效容量;模型选择则把这个收紧旋钮交给交叉验证去拧。

六、练习

Exercise

给定 6 个观测 (xi,yi)=(1,1.1),(2,1.9),(3,3.0),(4,4.2),(5,4.8),(6,6.1)(x_i, y_i) = (1, 1.1), (2, 1.9), (3, 3.0), (4, 4.2), (5, 4.8), (6, 6.1),真实信号 f(x)=xf(x) = x,噪声方差 σ2=0.04\sigma^2 = 0.04

(i) 计算常数预测器 h^0(x)=yˉ\hat h_0(x) = \bar y 与一元线性预测器 h^1(x)=β^0+β^1x\hat h_1(x) = \hat\beta_0 + \hat\beta_1 x(用普通最小二乘拟合)在 x=4x = 4 处的偏差2^2、方差与总均方误差。把数据反复重抽 200 次后(数值已替你算好):常数预测器 hˉ0(4)=3.5\bar h_0(4) = 3.5VarD[h^0(4)]0.012\mathrm{Var}_D[\hat h_0(4)] \approx 0.012;线性预测器 hˉ1(4)4.0\bar h_1(4) \approx 4.0VarD[h^1(4)]0.020\mathrm{Var}_D[\hat h_1(4)] \approx 0.020

(ii) 在 σ2=0.04\sigma^2 = 0.04 当前噪声水平下哪一个更优? 若噪声方差升到 σ2=1.0\sigma^2 = 1.0,结论会如何变?

提示
偏差2=(hˉ(x)f(x))2^2 = (\bar h(x) - f(x))^2,在 x=4x = 4 处真实信号 f(4)=4f(4) = 4。先把两个学习器各自的 hˉ(4)\bar h(4) 代入这条定义,你会立刻看出常数预测器哪一项主导了它的 MSE。
提示
线性预测器总 MSE 0+0.020+0.04=0.060\approx 0 + 0.020 + 0.04 = 0.060;常数预测器 0.25+0.012+0.04=0.302\approx 0.25 + 0.012 + 0.04 = 0.302,线性更优。若 σ2=1.0\sigma^2 = 1.0,两边各加 0.960.96,差异被噪声本身淹没,简单模型的相对吸引力随之上升——噪声越大,偏差占总误差的比例越小。

七、通往下一节

到这里你已经手握偏差-方差分解这把尺子,能解释「加因子之后样本外塌掉」的现象,也能在容量与样本量两个旋钮之间做权衡。下一节我们让最简单的非平凡 H\mathcal{H} ——​​线性回归​​——上场:偏差与方差都能写成 XTXX^T X 的特征值与 σ2\sigma^2 的闭式函数,因此线性回归是检验上述分解最干净的场地,也是后续岭回归、Lasso 与交叉验证的入口。