偏差-方差分解 Bias-Variance Decomposition

设希望估计的真实函数为

f=f(X)

但是观察值会带上噪声,通常认为其均值为 0

Y=f(X)+ϵ,E[ϵ]=0

假如现在观测到一组用来训练的数据

D={(x1,y1),(x2,y2),...,(xN,yN)}

那么通过训练集估计出的函数为

f^=f^(X;D)

为简洁起见,以下均使用 f^(X) 代替 f^(X;D)

 

那么训练的目标是使损失函数的期望最小(期望能表明模型的泛化能力),通常损失函数使用均方误差MSE(Mean Squred Error)

E[Loss(Y,f^)]=E[MSE]=E[1Ni=1N(yif^(xi))2]=1Ni=1NE[(yif^(xi))2]

注意:  yi f^ 都是不确定的;  f^ 依赖于训练集 D yi 依赖于 xi .

 

下面单独来看求和式里的通项

E[(yif^(xi))2]=E[(yif(xi)+f(xi)f^(xi))2]

=E[(yif(xi))2]+E[(f(xi)f^(xi))2]+2E[(yif(xi))(f(xi)f^(xi))]  

=E[ϵ2]+E[(f(xi)f^(xi))2]+2(E[yif(xi)]E[f2(xi)]E[yif^(xi)]+E[f(xi)f^(xi)])

=Var{noise}+E[(f(xi)f^(xi))2]

E[yif(xi)]=f2(xi)   因为 f xi 是确定的而 E[yi]=f(xi)

E[f2(xi)]=f2(xi)   因为 f xi 是确定的

E[yif^(xi)]=E[(f(xi)+ϵ)f^(xi)]=E[f(xi)f^(xi)+ϵf^(xi)]=E[f(xi)f^(xi)]

     E[ϵf^(xi)]=0   因为测试集中的噪声 ϵ 独立于回归函数的预测 f^(xi)

E[ϵ2]=Var{noise}   噪声方差

 

E[(f(xi)f^(xi))2]=E[(f(xi)E[f^(xi)]+E[f^(xi)]f^(xi))2]

=E[(f(xi)E[f^(xi)])2]+E[(E[f^(xi)]f^(xi))2]+2E[(f(xi)E[f^(xi)])(E[f^(xi)]f^(xi))]

=E[(f(xi)E[f^(xi)])2]+E[(E[f^(xi)]f^(xi))2]+2(E[f(xi)E[f^(xi)]]E[E[f^(xi)]2]E[f(xi)f^(xi)]+E[E[f^(xi)]f^(xi)])

=bias2{f^(xi)}+variance{f^(xi)}  

E[f(xi)E[f^(xi)]]=f(xi)E[f^(xi)]   因为 f 是确定的

E[E[f^(xi)]2]=E[f^(xi)]2

E[f(xi)f^(xi)]=f(xi)E[f^(xi)]   因为 f 是确定的

E[E[f^(xi)]f^(xi)]=E[f^(xi)]2

E[(f(xi)E[f^(xi)])2]=bias2{f^(xi)}   偏差

E[(E[f^(xi)]f^(xi))2]=variance{f^(xi)}   方差

 

最终

 

E[(yif^(xi))2]=Var{noise}+bias2{f^(xi)}+variance{f^(xi)}

 

因此,要使损失函数的期望 E[Loss(Y,f^)] 最小,既可以降低bias,也可以减少variance。这也是为什么有偏的算法在一定条件下比无偏的算法更好。

 

              偏差 bias 描述的是算法依靠自身能力进行预测的平均准确程度

              方差 variance 则度量了算法在不同训练集上表现出来的差异程度

 

下面来自The Elements of Statistical Learning P38 Figure 2.11 的图则阐释了模型复杂度与偏差、方差、误差之间的关系:

偏差-方差分解 Bias-Variance Decomposition_第1张图片

 

PS:

装袋算法Bagging通过bootstrap对训练集重采样来并行训练多个分类器(均匀采样),主要是降低方差 variance。

提升算法Boosting通过迭代调整样本权重来串行组合加权分类器(根据错误率采样),因而主要是降低偏差 bias(同时也减少方差 variance)。

你可能感兴趣的:(机器学习)