偏差与方差

“偏差-方差分解” (bias-variance decomposition)是解释学习算法泛化性能的一种重要工具。它试图对模型的期望泛化错误率进行拆解。很容易知道,即使在来自同一分布的不同训练集上训练的模型,他们的结果很可能不同。

符号定义

对于测试样本x;
yDy_D为x在数据集D中的标签(由于可能存在噪声使得yDyy_D \neq y);
y为x的真实标签;
f(x;D)f(x;D)为训练集D上学得模型f在x上的预测输出。
以回归任务为例,学习算法的期望预测为:
f(x)=E[f(x;D)] \overline{f}(x) = \mathbb{E}[f(x;D)],

方差

使用样本相同的不同训练集产生的方差为:
var(x)=ED[(f(x;D)f(x))2] var(x) = \mathbb{E}_D[(f(x;D)-\overline{f}(x))^2], 噪声为:
ε2=ED[(yDy)2] \varepsilon^2 = \mathbb{E}_D[(y_D-y)^2],

偏差

期望输出与真实标签之间的差别为偏差:
bias2(x)=(f(x)y)2. bias^2(x) = (\overline{f}(x)-y)^2.

偏差-方差分解

为了便于讨论,假定噪声期望为0,通过多项式展开,可对算法的期望泛化误差进行分解,分解过程中需要使用到期望的性质E[X+Y]=E[X]+E[Y]\mathbb{E}[X+Y]=\mathbb{E}[X]+\mathbb{E}[Y]
E(f;D)=ED[(f(x;D)yD)2]=ED[(f(x;D)f(x)+f(x)yD)2]=ED[(f(x;D)f(x))2+(f(x)yD)2+2(f(x;D)f(x))(f(x)yD)] \begin{aligned} E(f;D) & = \mathbb{E}_D[(f(x;D)-y_D)^2] \\ & =\mathbb{E}_D[(f(x;D) - \overline{f}(x) +\overline{f}(x) - y_D)^2] \\ & = \mathbb{E}_D[(f(x;D) - \overline{f}(x))^2 +(\overline{f}(x) - y_D)^2 + 2(f(x;D)-\overline{f}(x))(\overline{f}(x)-y_D)] \\ \end{aligned}


最后一步的化简过程:
到这里我们来对最后一项进行化简。首先进行展开并利用期望的性质。
ED[2(f(x;D)f(x))(f(x)yD)]=ED[2(f(x;D)f(x))f(x)]ED[2(f(x;D)f(x))yD] \mathbb{E}_D[2(f(x;D)-\overline{f}(x))(\overline{f}(x)-y_D)]\\ = \mathbb{E}_D[2(f(x;D)-\overline{f}(x)) \cdot \overline{f}(x)]-\mathbb{E}_D[2(f(x;D)-\overline{f}(x)) \cdot y_D] 首先,计算展开后的第一项
ED[2(f(x;D)f(x))f(x)]=ED[2f(x;D)f(x)2f(x)f(x)] \mathbb{E}_D[2(f(x;D)-\overline{f}(x)) \cdot \overline{f}(x)] = \mathbb{E}_D[2f(x;D) \cdot \overline{f}(x)- 2\overline{f}(x) \cdot \overline{f}(x)] 由于,f(x)\overline{f}(x)是常量,所以由期望的运算性质:ED[AX+B]=AED[X]+B\mathbb{E}_D[AX+B] = A\mathbb{E}_D[X] + B,其中A,B均为常量,可得:
ED[2(f(x;D)f(x))f(x)]=ED[2f(x;D)f(x)2f(x)f(x)]=2f(x)ED[f(x;D)]2f(x)f(x) \mathbb{E}_D[2(f(x;D)-\overline{f}(x)) \cdot \overline{f}(x)]\\ = \mathbb{E}_D[2f(x;D) \cdot \overline{f}(x)- 2\overline{f}(x) \cdot \overline{f}(x)]\\ = 2 \overline{f}(x) \cdot \mathbb{E}_D[f(x;D)] - 2\overline{f}(x) \cdot \overline{f}(x) 又因为学习算法的期望预测为f(x)=E[f(x;D)]\overline{f}(x) = \mathbb{E}[f(x;D)]
所以,上式最终化简结果为0。
其次,计算展开后的第二项
ED[2(f(x;D)f(x))yD]=2ED[f(x;D)yD]2f(x)ED[yD] \mathbb{E}_D[2(f(x;D)-\overline{f}(x)) \cdot y_D] = 2\mathbb{E}_D[f(x;D) \cdot y_D] - 2\overline{f}(x)\cdot \mathbb{E}_D[y_D] 由于噪声和f无关,所以f(x;D)f(x;D)yDy_D是两个互相独立的随机变量。根据独立随机变量期望的性质E[XY]=E[X]E[Y]\mathbb{E}[XY] = \mathbb{E}[X]\mathbb{E}[Y]可得:
ED[2(f(x;D)f(x))yD]=2ED[f(x;D)yD]2f(x)ED[yD]=2ED[f(x;D)]ED[yD]2f(x)ED[yD]=2f(x)ED[yD]2f(x)ED[yD]=0 \begin{aligned} \mathbb{E}_D[2(f(x;D)-\overline{f}(x)) \cdot y_D] & = 2\mathbb{E}_D[f(x;D) \cdot y_D] - 2\overline{f}(x)\cdot \mathbb{E}_D[y_D] \\ & = 2\mathbb{E}_D[f(x;D)] \cdot \mathbb{E}_D[y_D] - 2\overline{f}(x)\cdot \mathbb{E}_D[y_D] \\ & = 2\overline{f}(x) \cdot \mathbb{E}_D[y_D] - 2\overline{f}(x)\cdot \mathbb{E}_D[y_D] \\ & = 0 \end{aligned}


我们继续对E(f;D)E(f;D) 进行化简:

E(f;D)=ED[(f(x;D)f(x))2+(f(x)yD)2+2(f(x;D)f(x))(f(x)yD)]=ED[(f(x;D)f(x))2]+ED[(f(x)yD)2]=ED[(f(x;D)f(x))2]+ED[(f(x)y+yyD)2]=ED[(f(x;D)f(x))2]+ED[(f(x)y)2]+ED[(yyD)2]+2ED[(f(x)y)(yyD)]=ED[(f(x;D)f(x))2]+(f(x)y)2+ED[(yyD)2]+2(f(x)y)ED[(yyD)] \begin{aligned} E(f;D) & = \mathbb{E}_D[(f(x;D) - \overline{f}(x))^2 +(\overline{f}(x) - y_D)^2 + 2(f(x;D)-\overline{f}(x))(\overline{f}(x)-y_D)] \\ & = \mathbb{E}_D[(f(x;D) - \overline{f}(x))^2] +\mathbb{E}_D[(\overline{f}(x) - y_D)^2] \\ & = \mathbb{E}_D[(f(x;D) - \overline{f}(x))^2] +\mathbb{E}_D[(\overline{f}(x) -y + y- y_D)^2] \\ & = \mathbb{E}_D[(f(x;D) - \overline{f}(x))^2] +\mathbb{E}_D[(\overline{f}(x) -y)^2] +\mathbb{E}_D[(y- y_D)^2] +2\mathbb{E}_D[(\overline{f}(x)-y)(y-y_D)] \\ & = \mathbb{E}_D[(f(x;D) - \overline{f}(x))^2] +(\overline{f}(x) -y)^2 +\mathbb{E}_D[(y- y_D)^2] +2(\overline{f}(x)-y)\mathbb{E}_D[(y-y_D)] \\ \end{aligned}

由于假定噪声期望为0,即ED[yyD]=0\mathbb{E}_D[y-y_D]=0,所以上式最后一项为0.
那么,最后的化简结果为:
E(f;D)=ED[(f(x;D)f(x))2]+(f(x)y)2+ED[(yDy)2]=bias2(x)+var(x)+ε2 \begin{aligned} E(f;D) & = \mathbb{E}_D[(f(x;D) - \overline{f}(x))^2] +(\overline{f}(x) -y)^2 +\mathbb{E}_D[(y_D- y)^2]\\ & = bias^2(x) + var(x) + \varepsilon^2 \end{aligned}

也就是说,泛化误差可分解为偏差、方差和噪声之和。
这里再总结下三个概念:

  • 偏差是学习算法的期望预测与真实结果之间的偏离程度,即刻画了学习算法的拟合能力
  • 方差度量了同样大小的训练集的变动所导致的学习性能的变化,即数据扰动造成的影响
  • 噪声表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题的本身难度

由偏差-方差分解我们可以说明,泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度共同决定的。因此,对于给定的学习任务,我们需要偏差尽可能小,学习算法的拟合能力尽可能强,同时,方差也需要较小,即数据扰动产生的影响小。

方差-偏差窘境

todo
给定一个学习任务,假定我们能控制学习算法的训练程度,那么可以将学习算法的训练程度进行如下分类:

  • 训练不足时,算法的拟合能力不够强,训练数据的扰动不足以使得学习器产生显著变化,此时偏差主导了泛化错误率;
  • 随着训练程度加深,算法的拟合能力变强,训练数据的扰动渐渐能被学习器学习到,方差逐渐主导了泛化错误率;
  • 在训练程度充足后,学习器的拟合能力已经非常强,训练数据发生的轻微扰动都会导致学习器发生显著变化,若训练数据自身的、非全局的特性都被学习器学习到,则将发生过拟合