对学习算法除了通过实验估计其性能,人们往往还希望了解它“为什么”具有这样的性能。“偏差-方差分解”是解释学习算法泛化性能的一种重要工具。
对测试样本 x x x ,令 y D y_D yD 为 x 在数据集中的标记, y y y 为 x 的真实标记, f ( x ; D ) f(x; D) f(x;D) 为训练集 D D D 上学得模型 f f f 在 x 上的预测输出。以回归任务为例,算法的期望预测为:
f ‾ ( x ) = E D [ f ( x ; D ) ] (1) \overline f(x)=E_D[f(x;D)] \tag{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)- \overline f(x))^2] \tag{2} var(x)=ED[(f(x;D)−f(x))2](2)
噪声为
ϵ 2 = E D [ ( y D − y ) 2 ] (3) \epsilon^2=E_D[(y_D-y)^2] \tag{3} ϵ2=ED[(yD−y)2](3)
期望输出与真实标记的差别称为偏差,
b i a s 2 ( x ) = ( f ‾ ( x ) − y ) 2 (4) bias^2(x)=(\overline f(x) - y)^2 \tag{4} bias2(x)=(f(x)−y)2(4)
算法的泛化误差
E ( f ; D ) = b i a s 2 ( x ) + v a r ( x ) + ϵ 2 (5) E(f;D)=bias^2(x)+var(x)+\epsilon^2 \tag{5} E(f;D)=bias2(x)+var(x)+ϵ2(5)
也就是说,泛化误差等于偏差,方差和噪声之和。
从公式中可以看出,偏差度量了算法的期望预测与真实结果的偏离程度,即刻画了算法本身的拟合能力;方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响;噪声表达了当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了问题本身的难度。
偏差-方差分解说明,泛化性能由算法能力,数据充分性,任务本身难度所共同决定的。
一般,偏差和方差是有冲突的,称为偏差-方差窘境。
参考
周志华《机器学习》