偏差-方差分解

  • 2019 年 10 月 3 日
  • 筆記

当训练得到一个模型(f)时,我们希望(f)的泛化能力足够强,这样也代表它对于新的样本有比较好的预测能力。我们会通过实验检验(f)的泛化误差,那它的泛化误差到底是由哪几部分贡献?

这里先给出结论:噪声、偏差与方差。

定义

训练模型的前提是我们能拿到一个数据集(D),它其中包含多个样本,来自同一个分布。但是(D)不可能包含这个分布上的所有样本,也就是说(D)本身是总体的一个子集。

在总体中取相同数量的样本组成不同的(D_i),用同一个算法训练得到的模型也会不同。所以训练得到的模型针对某一个样本(x)的预测值有一个期望的概念。即:
[
begin{equation}
overline{f}(boldsymbol{x})=mathbb{E}_{D}[f(boldsymbol{x} ; D)]
end{equation}
]

这里(D)是来自同一个分布样本数量相同的不同训练集,它是一个变量的概念。不同的(D_i)训练得到不同的模型(f_i)。使用它们预测(x),再对预测的值取期望就是(1)式的含义。(overline{f}(boldsymbol{x}))是模型对样本(x)预测的期望值。

所以也就有一个方差的概念,即不同模型(f_i)对于(x)的预测值的波动情况。如果是回归任务的话,那么预测值的方差可以表示为:
[
begin{equation}
operatorname{var}(boldsymbol{x})=mathbb{E}_{D}left[(f(boldsymbol{x} ; D)-overline{f}(boldsymbol{x}))^{2}right]
end{equation}
]

(2)式是方差的定义。下面看一下噪声,怎么理解噪声?

可能出现噪声的场景,还是以回归任务为例。样本(x)对应的(y)在输入的输出错了,多加了30上去。那么多出来的30就是噪声。噪声是Irreducible error,它难以依靠模型优化消除。
[
begin{equation}
varepsilon^{2}=mathbb{E}_{D}left[left(y_{D}-yright)^{2}right]
end{equation}
]

上述是噪声的方差定义,(y)是样本的真实标签,(y_D)是样本在不同(D_i)中的标签。比如在得到(D_1)这个数据集时,往其中加入((x, y))这个样本,将标签(y)误输为(y+30),此时便产生了噪声。为了方便计算,我们假设噪声期望为0,即:
[
begin{equation}
mathbb{E}_{D}left[y_{D}-yright]=0
end{equation}
]

最后定义偏差,预测值的期望(overline{f}(boldsymbol{x}))与真实标签(y)之差,偏差的平方如下:
[
begin{equation}
operatorname{bias}^{2}(boldsymbol{x})=(overline{f}(boldsymbol{x})-y)^{2}
end{equation}
]

推导

经过上面一番定义,有了许多和噪声、方差、偏差相关的量。下面开始推导,对于样本(x)的预测误差的期望可以写为:
[
begin{equation}
Expected prediction error at x = mathbb{E}_{D}left[left(f(boldsymbol{x} ; D)-y_{D}right)^{2}right]
end{equation}
]

为了简便,作一些缩写,记:
[
f(boldsymbol{x} ; D) rightarrow f \
y_{true} rightarrow y \
overline{f}(x) rightarrow overline{f}
]

第一次分解,引入真实标签(y),

(
原式=mathbb{E}_{D}left[left(f-y_{D}right)^{2}right] \
=mathbb{E}_{D}left[left(f-y+y-y_{D}right)^{2}right] \
=mathbb{E}_{D}left[left(f-yright)^{2}+left(y-y_{D}right)^{2}+2left(f-yright)left(y-y_{D}right)right] \
=mathbb{E}_{D}left[left(f-yright)^{2}right]+mathbb{E}_{D}left[left(y-y_{D}right)^{2}right]+mathbb{E}_{D}left[2left(f-yright)left(y-y_{D}right)right] \
=mathbb{E}_{D}left[left(f-yright)^{2}right]+varepsilon^{2}+0
)

接下来对第一项进行分解,引入(overline{f}),将其分解为方差与偏差的组合:

(
原式=mathbb{E}_{D}left[left(f-yright)^{2}right] \
=mathbb{E}_{D}left[left(f-overline{f}+overline{f}-yright)^{2}right] \
=mathbb{E}_{D}left[left(f-overline{f}right)^{2}+left(overline{f}-yright)^{2}+2left(f-overline{f}right)left(overline{f}-yright)right] \
=mathbb{E}_{D}left[left(f-overline{f}right)^{2}right]+mathbb{E}_{D}left[left(overline{f}-yright)^{2}right]+mathbb{E}_{D}left[2left(f-overline{f}right)left(overline{f}-yright)right] \
=operatorname{var}(boldsymbol{x})+left(overline{f}-yright)^{2}+2left(overline{f}-yright)mathbb{E}_{D}left(f-overline{f}right)
\
=operatorname{var}(boldsymbol{x})+operatorname{bias}^{2}(boldsymbol{x})+2left(overline{f}-yright)left(mathbb{E}_{D}left(fright)-overline{f}right)
\
=operatorname{var}(boldsymbol{x})+operatorname{bias}^{2}(boldsymbol{x})
)

至此,分解结束。

参考文献

[1]《机器学习》. 周志华
[2]《神经网络与深度学习》. 邱锡鹏
[3] 华盛顿大学机器学习课程Regression,week3.《Formally defining the 3 sources of error》