本文为阅读周志华著的《机器学习》一书中第二章第5节偏差与方差笔记。
之前介绍过ROC曲线下的面积AUC值可以衡量机器学习模型的泛化能力。而“偏差-方差分解”则可以解释学习算法的泛化性能。
在模型训练过程中,不同的训练集上训练得到的模型预测的结果可能不同,即使这些训练集同分布。对于一个测试样本 x x x,令 y D y_D yD为 x x x在数据集中的标记, y y y为 x x x的真实标记, f ( x ; D ) f(x;D) f(x;D)为训练集 D D D上学得模型 f f f在 x x x上的预测输出。
以回归任务为例,学习算法的期望预测为
f
ˉ
(
x
)
=
E
D
[
f
(
x
;
D
)
]
(
公
式
1
)
\bar f(x) = E_D[f(x;D)] \quad\quad\quad\quad(公式1)
fˉ(x)=ED[f(x;D)](公式1)
使用样本数相同的不同训练集产生的方差为
v
a
r
(
x
)
=
E
D
[
(
f
(
x
;
D
)
−
f
ˉ
(
x
)
)
2
]
(
公
式
2
)
var(x)=E_D[(f(x;D)-\bar f(x))^2] \quad\quad\quad\quad(公式2)
var(x)=ED[(f(x;D)−fˉ(x))2](公式2)数据集标签中的噪声为
ε
2
=
E
D
[
(
y
D
−
y
)
2
]
(
公
式
3
)
\varepsilon^2=E_D[(y_D-y)^2]\quad\quad\quad\quad(公式3)
ε2=ED[(yD−y)2](公式3)期望输出与真实标记的差别称为偏差(bias)即:
b
i
a
s
2
(
x
)
=
(
f
ˉ
(
x
)
−
y
)
2
(
公
式
4
)
bias^2(x)=(\bar f(x)-y)^2\quad\quad\quad\quad(公式4)
bias2(x)=(fˉ(x)−y)2(公式4)假定噪声期望为零,即
ε
2
=
0
\varepsilon^2=0
ε2=0。通过简单的多项式展开合并,可对算法的期望泛化误差进行分解:
E
(
f
;
D
)
=
E
D
[
(
f
(
x
;
D
)
−
y
D
)
2
]
E(f;D)=E_D[(f(x;D)-y_D)^2]\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space
E(f;D)=ED[(f(x;D)−yD)2]
=
E
D
[
(
f
(
x
;
D
)
−
f
ˉ
(
x
)
+
f
ˉ
(
x
)
−
y
D
)
2
]
=E_D[(f(x;D)-\bar f(x)+\bar f(x)-y_D)^2]\space\space\space\space\space
=ED[(f(x;D)−fˉ(x)+fˉ(x)−yD)2]
=
E
D
[
(
f
(
x
;
D
)
−
f
ˉ
(
x
)
)
2
]
+
E
D
[
(
f
ˉ
(
x
)
−
y
D
)
2
]
\space\space\space\space\space\space\space\space=E_D[(f(x;D)-\bar f(x))^2]+E_D[(\bar f(x)-y_D)^2]
=ED[(f(x;D)−fˉ(x))2]+ED[(fˉ(x)−yD)2]
+
E
D
[
2
f
(
x
;
D
)
−
f
ˉ
(
x
)
)
(
f
ˉ
(
x
)
−
y
D
)
]
\space\space\space\space\space+E_D[2f(x;D)-\bar f(x))(\bar f(x)-y_D)]
+ED[2f(x;D)−fˉ(x))(fˉ(x)−yD)]
=
E
D
[
(
f
(
x
;
D
)
−
f
ˉ
(
x
)
)
2
]
+
E
D
[
(
f
ˉ
(
x
)
−
y
D
)
2
]
\space\space\space\space\space\space\space\space\space=E_D[(f(x;D)-\bar f(x))^2]+E_D[(\bar f(x)-y_D)^2]
=ED[(f(x;D)−fˉ(x))2]+ED[(fˉ(x)−yD)2]
=
E
D
[
(
f
(
x
;
D
)
−
f
ˉ
(
x
)
)
2
]
+
E
D
[
(
f
ˉ
(
x
)
−
y
+
y
−
y
D
)
2
]
\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=E_D[(f(x;D)-\bar f(x))^2]+E_D[(\bar f(x)-y+y-y_D)^2]
=ED[(f(x;D)−fˉ(x))2]+ED[(fˉ(x)−y+y−yD)2]
=
E
D
[
(
f
(
x
;
D
)
−
f
ˉ
(
x
)
)
2
]
+
E
D
[
(
f
ˉ
(
x
)
−
y
)
2
]
+
E
D
[
(
y
−
y
D
)
2
]
\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=E_D[(f(x;D)-\bar f(x))^2]+E_D[(\bar f(x)-y)^2]+E_D[(y-y_D)^2]
=ED[(f(x;D)−fˉ(x))2]+ED[(fˉ(x)−y)2]+ED[(y−yD)2]
+
2
E
D
[
(
f
ˉ
(
x
)
−
y
)
(
y
−
y
D
)
]
+2E_D[(\bar f(x)-y)(y-y_D)]
+2ED[(fˉ(x)−y)(y−yD)]
=
E
D
[
(
f
(
x
;
D
)
−
f
ˉ
(
x
)
)
2
]
+
(
f
ˉ
(
x
)
−
y
)
2
+
E
D
[
(
y
−
y
D
)
2
]
\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=E_D[(f(x;D)-\bar f(x))^2]+(\bar f(x)-y)^2+E_D[(y-y_D)^2]
=ED[(f(x;D)−fˉ(x))2]+(fˉ(x)−y)2+ED[(y−yD)2]最终:
E
(
f
;
D
)
=
b
i
a
s
2
(
x
)
+
v
a
r
(
x
)
+
ε
2
(
公
式
5
)
E(f;D)=bias^2(x)+var(x)+\varepsilon^2\quad(公式5)
E(f;D)=bias2(x)+var(x)+ε2(公式5)也就是说,泛化误差可以分解为偏差、方差与噪声之和。
偏差(公式4)度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力。
方差(公式2)度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响。
噪声(公式3)则表示当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。
总结:泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度所共同决定的。给定学习任务,为了取得好的泛化性能,则需使偏差较小,即能够充分拟合数据,并 且使方差较小,即使得数据扰动产生的影响小。
如上图,定学习任务,假定我们能控制学习算法的训练程度,则在训练不足时,学习器的拟合能力不够强,训练数据的扰动不足以使学习器产生显著变化,此时偏差主导了泛化错误率;随着训练程度的加深,学习器的拟合能力逐渐增强,训练数据发生的扰动渐渐能被学习器学到,方差逐渐主导了泛化错误率;在训练程度充足后,学习器的拟合能力已非常强,训练数据发生的轻微扰动都会导致学习器发生显著变化,若训练数据自身的、非全 局的特性被学习器学到了,则将发生过拟合。