PRML——偏差方差分析

引言

偏差方差分析是机器学习中常用的来衡量模型对数据拟合好坏的度量方式,PRML中对这一个问题进行了数学理论上的分析。

最理想回归函数

对于回归问题的朴素方式是对输入的每一个样本x,输出对真实回归值t的一个估计y(x),这样做之后,会得一个估计值和真实值之间的损失L(y(x),t),则平均损失就是:

E[L]=L(y(x),t)p(x,t)dxdt
例如假设选择的是平方损失函数
L(y(x),t)=(y(x)t)2
E[L]={y(x)t}2p(x,t)dxdt
我们的目标是选择y(x)来最小化E(L),则根据变分法发有:
Ey(x)=2{y(x)t}p(x,t)dxdt=0
求解y(x)有:
y(x)=tp(x,t)dtp(x)=tp(t|x)dt=Et[t|x]
,同样我们可以损失函数写成:
{y(x)t}2={y(x)E[t|x]+E[t|x]t}2
={y(x)E[t|x]}2+{E[t|x]t}2+2{yE[t|x]}{E[t|x]t}
带入损失函数中,对t进行积分得:
E[L]={y(x)E[t|x]}2p(x)dx+var[t|x]p(x)dx
var,由于我们要求的y(x)之和第一项有关,要得损失函数最小则只需要:
y(x)=E[t|x]
在对最理想的回归函数分析时,借助后验期望(均值),从而把损失函数分解成为回归函数与期望的偏差,以及噪音造成的偏差。

方差偏差

考虑不同的损失函数,一旦知道了p(t|x),每一种损失函数都能够给出最好的预测结果,如果考虑平均损失,此时最优预测由条件期望个给出:

h(x)=E[t|x]=tp(t|x)dt
由上面的分析可知,损失期望可写成
E[L]={y(x)E[t|x]}2p(x)dx+var[t|x]p(x)dx
var[t|x]={tE[t|x]}2,因此可写成:
E[L]={y(x)h(x)}2p(x)dx+{h(x)t}2p(x,t)dxdt
把后面一项看成是噪音引起产生的,则我们关于预测函数和损失之间的关系只和前面一项有关,给定一个特定数据集D,对第一项进行改写:
{y(x;D)h(x)}2={y(x;D)ED[y(x;D)]+ED[y(x;D)]h(x)}2
展开,并对D求期望得:
ED[{y(x;D)h(x)}2]={ED[y(x;D)]h(x)}2+ED[{y(x;D)ED[y(x;D)}2]
第一项叫做偏差,衡量的是所有数据平均预测值和预期回归值之间的差异。第二项就是偏差,衡量的是预测值在预测平均值附近的波动情况,也可以看作y(x;D)对数据集的敏感程度。从而就有:
=2++
其中
2={ED[y(x;D)]h(x)}2p(x)dx
=ED[{y(x;D)ED[y(x;D)}p(x)dx2
={h(x)t}2p(x,t)dxdt

偏差方差分析

⽬标是最⼩化期望损失,它可以分解为(平⽅)偏置、⽅差和⼀个常数噪声项和,正如看到的那样,在偏置和⽅差之间有⼀个折中。对于⾮常灵活的模型来说,偏置较⼩,⽅差较⼤。对于相对固定的模型来说,偏置较⼤,⽅差较⼩。最好的模型应该是在偏差和方差之间有一个最好的平衡。

例子

产⽣了100个数据集合,每个集合都包含N = 25个数据点,都是独⽴地从正弦曲线h(x) = sin(2πx)抽取的。数据集的编号为l = 1; : : : ; L,其中L = 100,并且对于每个数据集D(l),我们通过最⼩化正则化的平方误差函数拟合了⼀个带有24个⾼斯基函数的模型,然后给出了预测函数y(l)(x),如图所⽰。第⼀⾏对应着较⼤的正则化系数λ,这样的模型的⽅差很⼩(因为左侧图中的红⾊曲线看起来很相似),但是偏置很⼤(因为右侧图中的两条曲线看起来相当不同)。相反,在最后⼀⾏,正则化系数λ很⼩,这样模型的⽅差较⼤(因为左侧图中的红⾊曲线变化性相当⼤),但是偏置很⼩(因为平均拟合的结果与原始正弦曲线⼗分吻合)。注意,把M = 25这种复杂模型的多个解进⾏平均,会产⽣对于回归函数⾮常好的拟合,这表明求平均是⼀个很好的步骤。事实上,将多个解加权平均是贝叶斯⽅法的核⼼,虽然这种求平均针对的是参数的后验分布,⽽不是针对多个数据集。
PRML——偏差方差分析
PRML——偏差方差分析
PRML——偏差方差分析
PRML——偏差方差分析

总结

偏置-⽅差分解能够从频率学家的⾓度对模型的复杂度提供⼀些有趣的认识,但是它的实⽤价值很有限。这是因为偏置-⽅差分解依赖于对所有的数据集求平均,⽽在实际应⽤中我们只有⼀个观测数据集。如果我们有⼤量的已知规模的独⽴的训练数据集,那么我们最好的⽅法是把它们组合成⼀个⼤的训练集,这显然会降低给定复杂度的模型的过拟合程度。