机器学习进阶(17.5)
第 17.5 篇:偏差-方差公式推导——为什么模型误差 = 偏差² + 方差 + 噪声
在第十七篇里,我们用直觉理解了:
模型误差通常来自三个来源:
- 学得不够 → 偏差高
- 学得太细 → 方差高
- 数据本身有随机性 → 噪声
这一篇我们把这件事用数学形式写出来,并解释每一项到底代表什么。
经典公式是:
Error=Bias2+Variance+Noise Error = Bias^2 + Variance + Noise Error=Bias2+Variance+Noise
这条公式非常重要,因为它解释了:
为什么模型复杂度不能无限增加,也不能无限降低。
1. 从最基本的问题开始
假设真实世界存在一个函数:
y=f(x)+ε y = f(x) + \varepsilon y=f(x)+ε
这里:
- f(x)f(x)f(x) 是真实规律
- ε\varepsilonε 是随机噪声
- ε\varepsilonε 的期望是 0:
E[ε]=0 E[\varepsilon] = 0 E[ε]=0
我们训练模型得到一个预测函数:
f^(x) \hat{f}(x) f^(x)
目标是:
让预测尽量接近真实值。
误差定义为:
E[(y−f^(x))2] E[(y - \hat{f}(x))^2] E[(y−f^(x))2]
即:
真实值和预测值之间的平方误差。
2. 把真实值代入公式
由于:
y=f(x)+ε y = f(x) + \varepsilon y=f(x)+ε
代入:
E[(f(x)+ε−f^(x))2] E[(f(x) + \varepsilon - \hat{f}(x))^2] E[(f(x)+ε−f^(x))2]
展开:
E[(f(x)−f^(x)+ε)2] E[(f(x) - \hat{f}(x) + \varepsilon)^2] E[(f(x)−f^(x)+ε)2]
平方展开:
E[(f(x)−f^(x))2+2ε(f(x)−f^(x))+ε2] E[(f(x) - \hat{f}(x))^2 + 2\varepsilon(f(x)-\hat{f}(x)) + \varepsilon^2] E[(f(x)−f^(x))2+2ε(f(x)−f^(x))+ε2]
利用期望性质:
由于:
E[ε]=0 E[\varepsilon] = 0 E[ε]=0
因此中间项为 0:
E[2ε(f(x)−f^(x))]=0 E[2\varepsilon(f(x)-\hat{f}(x))] = 0 E[2ε(f(x)−f^(x))]=0
最终得到:
E[(f(x)−f^(x))2]+E[ε2] E[(f(x) - \hat{f}(x))^2] + E[\varepsilon^2] E[(f(x)−f^(x))2]+E[ε2]
第二项:
E[ε2] E[\varepsilon^2] E[ε2]
就是噪声。
它代表:
数据本身的不确定性。
无法消除。
3. 对模型误差进一步拆解
我们现在关注:
E[(f(x)−f^(x))2] E[(f(x) - \hat{f}(x))^2] E[(f(x)−f^(x))2]
关键在于:
模型 f^(x)\hat{f}(x)f^(x) 并不是固定的。
因为:
不同训练数据,会训练出不同模型。
所以我们需要考虑:
模型预测的期望:
E[f^(x)] E[\hat{f}(x)] E[f^(x)]
这个期望代表:
在所有可能训练集上,模型的平均预测。
4. 加一个中间项
我们加一个:
E[f^(x)] E[\hat{f}(x)] E[f^(x)]
来帮助拆解:
f(x)−f^(x)=f(x)−E[f^(x)]+E[f^(x)]−f^(x) f(x) - \hat{f}(x)= f(x) - E[\hat{f}(x)] + E[\hat{f}(x)] - \hat{f}(x) f(x)−f^(x)=f(x)−E[f^(x)]+E[f^(x)]−f^(x)
平方后:
(f(x)−E[f^(x)]+E[f^(x)]−f^(x))2 (f(x)-E[\hat{f}(x)] + E[\hat{f}(x)]-\hat{f}(x))^2 (f(x)−E[f^(x)]+E[f^(x)]−f^(x))2
展开:
会得到三部分:
Bias2+Variance Bias^2 + Variance Bias2+Variance
最终结果是:
E[(f(x)−f^(x))2]=(f(x)−E[f^(x)])2+E[(f^(x)−E[f^(x)])2] E[(f(x)-\hat{f}(x))^2]= (f(x)-E[\hat{f}(x)])^2 + E[(\hat{f}(x)-E[\hat{f}(x)])^2] E[(f(x)−f^(x))2]=(f(x)−E[f^(x)])2+E[(f^(x)−E[f^(x)])2]
5. 三项误差分别代表什么
现在我们得到完整公式:
Error=Bias2+Variance+Noise Error = Bias^2 + Variance + Noise Error=Bias2+Variance+Noise
下面逐个解释。
6. Bias(偏差)
偏差定义:
Bias=f(x)−E[f^(x)] Bias = f(x) - E[\hat{f}(x)] Bias=f(x)−E[f^(x)]
它表示:
模型平均预测,与真实函数之间的差距。
换句话说:
模型的整体假设,离真实规律有多远。
偏差高意味着:
模型表达能力不足。
例如:
真实关系是曲线,但模型只能画直线。
无论训练多少数据,都会有系统误差。
这就是欠拟合。
7. Variance(方差)
方差定义:
Variance=E[(f^(x)−E[f^(x)])2] Variance = E[(\hat{f}(x)-E[\hat{f}(x)])^2] Variance=E[(f^(x)−E[f^(x)])2]
它表示:
不同训练集得到的模型,预测差异有多大。
如果训练数据稍微变化,模型预测就变化很大:
说明方差高。
这通常意味着:
模型过于依赖训练数据细节。
容易过拟合。
8. Noise(噪声)
噪声定义:
Noise=E[ε2] Noise = E[\varepsilon^2] Noise=E[ε2]
它表示:
数据本身的随机性。
例如:
测量误差
标签误差
现实世界随机波动
这部分误差:
无法通过模型消除。
即使真实函数已知,也仍然存在。
9. 为什么模型复杂度影响 Bias 和 Variance
一般来说:
模型越简单:
Bias 高
Variance 低
模型越复杂:
Bias 低
Variance 高
原因是:
简单模型:
无法表达复杂关系。
复杂模型:
对数据变化更敏感。
10. 用一个具体例子帮助理解
假设真实函数:
y=x2 y = x^2 y=x2
我们用三种模型拟合:
模型1:
线性回归
无法表示二次关系。
Bias 高。
模型2:
二次多项式
可以表示真实关系。
Bias 低。
Variance 适中。
模型3:
20次多项式
可以穿过所有训练点。
Variance 高。
容易过拟合。
11. 为什么测试误差通常呈 U 型
随着模型复杂度增加:
Bias 下降
Variance 上升
测试误差:
先下降
再上升
即:
U 型曲线。
最低点:
是最佳复杂度。
也是偏差和方差的平衡点。
12. 为什么 Bagging 能降低方差
设单个模型方差:
σ2 \sigma^2 σ2
B 个模型平均:
Var(fˉ)=σ2B Var(\bar{f}) = \frac{\sigma^2}{B} Var(fˉ)=Bσ2
模型平均:
降低预测波动。
因此:
降低方差。
提高稳定性。
这也是随机森林有效的原因。
13. 为什么正则化会增加 Bias 但降低 Variance
正则化限制参数大小:
模型不再完全贴训练数据。
结果:
Bias ↑
Variance ↓
总体误差可能下降。
因为:
Variance 下降更多。
14. 为什么增加数据通常降低 Variance
Variance 与样本数量关系:
Variance∝1n Variance \propto \frac{1}{n} Variance∝n1
样本越多:
模型对单个样本依赖越小。
结果更稳定。
泛化能力更好。
15. 偏差-方差不是对立,而是需要平衡
机器学习的核心难点之一:
无法同时让:
Bias = 0
Variance = 0
因为:
复杂模型:
Variance 高。
简单模型:
Bias 高。
因此需要找到:
最佳平衡点。
16. 为什么理解这个公式非常重要
因为它统一解释了很多方法:
| 方法 | 作用 |
|---|---|
| 简化模型 | 降低 variance |
| 正则化 | 降低 variance |
| 剪枝 | 降低 variance |
| 增加数据 | 降低 variance |
| 更复杂模型 | 降低 bias |
| 特征工程 | 降低 bias |
| 集成学习 | 降低 variance |
看起来不同的技术:
其实都在调节 Bias 和 Variance。
17. 这一篇最核心的 takeaway
机器学习的目标,不是:
找到最复杂的模型。
而是:
找到 Bias 和 Variance 平衡的模型。
理解这个公式后,你会更清楚:
什么时候该让模型更强
什么时候该让模型收一点
这会让调参不再只是“盲试”。
而是更有方向。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)