在机器学习中,误差是由偏差、方差和固有噪声三部分组成。偏差方差分解是从频率学派的角度对模型的复杂性进行一定的分析。
1. 偏差方差分解
由前文中(8)式可知,若选择平方损失函数,则期望损失如下 $$\mathbb{E}[L]=\iint \{y(\mathbf{x})-t\}^2p(\mathbf{x},t)\mathrm{d}\mathbf{x}\mathrm{d}t\tag{1}$$展开其中的平方项$$\begin{array}{l,l}\{y(\mathbf{x})-t\}^2&=&\{y(\mathbf{x})-\mathbb{E}[t|\mathbf{x}]+\mathbb{E}[t|\mathbf{x}]-t\}^2 \\ &=&\{y(\mathbf{x})-\mathbb{E}[t|\mathbf{x}]\}^2+2\{y(\mathbf{x})-\mathbb{E}[t|\mathbf{x}]\}\{\mathbb{E}[t|\mathbf{x}]-t\}+\{\mathbb{E}[t|\mathbf{x}]-t\}^2\end{array}$$将展开的平方项代回到(1),再关于 $t$ 积分,则中间项变为:$$\begin{array}{r,l}&\displaystyle\iint 2\{y(\mathbf{x})-\mathbb{E}[t|\mathbf{x}]\}\{\mathbb{E}[t|\mathbf{x}]-t\}p(\mathbf{x},t)\mathrm{d}\mathbf{x}\mathrm{d}t \\ =&\displaystyle 2\int\{y(\mathbf{x})-\mathbb{E}[t|\mathbf{x}]\}\int\{\mathbb{E}[t|\mathbf{x}]-t\}p(\mathbf{x},t)\mathrm{d}t\mathrm{d}\mathbf{x} \\ =&\displaystyle 2\int\{y(\mathbf{x})-\mathbb{E}[t|\mathbf{x}]\}\left\{\int\mathbb{E}[t|\mathbf{x}]p(\mathbf{x},t)\mathrm{d}t-\int tp(\mathbf{x},t)\mathrm{d}t\right\}\mathrm{d}\mathbf{x} \\ =&\displaystyle 2\int\{y(\mathbf{x})-\mathbb{E}[t|\mathbf{x}]\}\{\mathbb{E}[t|\mathbf{x}]p(\mathbf{x})-p(\mathbf{x})\int tp(t|\mathbf{x})\mathrm{d}t\}\mathrm{d}\mathbf{x} \\ =&\displaystyle 2\int\{y(\mathbf{x})-\mathbb{E}[t|\mathbf{x}]\}\{\mathbb{E}[t|\mathbf{x}]p(\mathbf{x})-p(\mathbf{x})\mathbb{E}[t|\mathbf{x}]\}\mathrm{d}\mathbf{x} \\ =&0\end{array}$$用 $h(\mathbf{x})$ 表示 $\mathbb{E}[t|\mathbf{x}]$,则(1)式可化为$$\mathbb{E}[L]=\int\{y(\mathbf{x})-h(\mathbf{x})\}^2p(\mathbf{x})\mathrm{d}\mathbf{x}+\int\{h(\mathbf{x})-t\}^2p(\mathbf{x},t)\mathrm{d}\mathbf{x}\mathrm{d}t\tag{2}$$
注意到,上式中的第二项是独立于 $y(\mathbf{x})$ 的。也就是说,不论我们找到什么样的 $y(\mathbf{x})$,这一项的误差都不会变化,称为固有噪声(intrinsic noise)。我们的目标就变成了寻找一个最好的 $y(\mathbf{x})$,使得第一项值最小,即 $y(\mathbf{x})$ 最接近于 $h(\mathbf{x})$。由于现实中我们只有有限的数据集 $\mathcal{D}$,不能达到任意的精确性,所以将 $y(\mathbf{x})$ 写成 $y(\mathbf{x};\mathcal{D})$。
如果用一个含参数的函数 $y(\mathbf{x},\mathbf{w})$ 来拟合未知的 $h(\mathbf{x})$,那么从贝叶斯的角度来看,模型的不确定性由参数 $\mathbf{w}$ 的后验分布来诠释。而频率学派的做法是,利用数据集对参数 $\mathbf{w}$ 进行点估计,即求出一个最优的 $\mathbf{w}$,然后通过下面的思维实验来解释不确定性。假设有大量的相同大小(大小为 $N$)的数据集,每个都是独立地从分布 $p(\mathbf{x},t)$ 中取出。对于任意给定的数据集 $\mathcal{D}$,都可以运行我们的学习算法,得到一个预测函数 $y(\mathbf{x};\mathcal{D})$。不同的数据集会计算出不同的预测函数,进而产生不同的平方损失。我们用所有数据集的平均来衡量模型的性能。
从图1中,可以看出,用多个模型的平均来衡量模型的性能。
在图1中,共有 $L=100$ 个数据集,每个数据集含有 $N=25$ 个数据点,每个模型含有 $M=25$ 个参数。左侧显示的是每个数据集在不同规范化参数 $\lambda$ 下的拟合情况(为了清晰,只画出了100个模型中的20个),右侧红色线是对这100个模型拟合结果的平均,绿线则是生成数据的正弦曲线。
考虑(2)式中第一项中的 $\{y(\mathbf{x})-h(\mathbf{x})\}^2$,对于某个特定的数据集 $\mathcal{D}$,有$$\begin{array}{r,l,l} &\{y(\mathbf{x};\mathcal{D})-h(\mathbf{x})\}^2 \\ =& \{y(\mathbf{x};\mathcal{D})-\mathbb{E}_{\mathcal{D}}[y(\mathbf{x};\mathcal{D})]+\mathbb{E}_{\mathcal{D}}[y(\mathbf{x};\mathcal{D})]-h(\mathbf{x})\}^2 \\ =&\{y(\mathbf{x};\mathcal{D})-\mathbb{E}_{\mathcal{D}}[y(\mathbf{x};\mathcal{D})]\}^2+\{\mathbb{E}_{\mathcal{D}}[y(\mathbf{x};\mathcal{D})]-h(\mathbf{x})\}^2 \\ &\qquad\quad+2\{y(\mathbf{x};\mathcal{D})-\mathbb{E}_{\mathcal{D}}[y(\mathbf{x};\mathcal{D})]\}\{\mathbb{E}_{\mathcal{D}}[y(\mathbf{x};\mathcal{D})]-h(\mathbf{x})\}\end{array}$$对其关于 $\mathcal{D}$ 取期望,最后一项就会消失 $$\mathbb{E}_{\mathcal{D}}[\{y(\mathbf{x};\mathcal{D})-h(\mathbf{x})\}^2]=\{\mathbb{E}_{\mathcal{D}}[y(\mathbf{x};\mathcal{D})]-h(\mathbf{x})\}^2+\mathbb{E}_{\mathcal{D}}[\{y(\mathbf{x};\mathcal{D})-\mathbb{E}_{\mathcal{D}}[y(\mathbf{x};\mathcal{D})]\}^2]\tag{3}$$
我们可以看到,$y(\mathbf{x};\mathcal{D})$ 和 $h(\mathbf{x})$ 之间差值平方的期望由两部分组成。第一部分称为偏差(在式子中其实是偏差的平方),描述了所有数据集上的平均预测值与真实回归函数之间的差距大小。第二部分称为方差,描述了不同数据集上的预测值的离散程度,因此描述了方程 $y(\mathbf{x};\mathcal{D})$ 对数据集 $\mathcal{D}$ 的选取的敏感性。方差与偏差的特点可以用图2形象地描述
将上面的结果代回到(2)式中,可以得到$$\text{expected loss $=$ (bias)$^2$ + variance + noise}\tag{4}$$其中$$\begin{array}{r,l,l}\text{(bias)}^2&=&\int\{\mathbb{E}_{\mathcal{D}}[y(\mathbf{x};\mathcal{D})]-h(\mathbf{x})\}^2p(\mathbf{x})\mathrm{d}\mathbf{x} \\ \text{variance}&=&\int\mathbb{E}_{\mathcal{D}}[\{y(\mathbf{x};\mathcal{D})-\mathbb{E}_{\mathcal{D}}[y(\mathbf{x};\mathcal{D})]\}^2]p(\mathbf{x})\mathrm{d}\mathbf{x} \\ \text{noise}&=&\int\{h(\mathbf{x})-t\}^2p(\mathbf{x},t)\mathrm{d}\mathbf{x}\mathrm{d}t\end{array}\tag{5}$$
2. 偏差方差的一些特点
与规范化系数 $\lambda$ 关系
对图1中的例子,我们可以从下图中看出偏差方差与规范化参数 $\lambda$ 的关系
实际意义
偏差方差分解虽然从频率学派的角度对模型复杂性有一定解释,但不具有太大实际意义。因为,方差偏差分解是基于对多个等大数据集进行集成(求平均),但现实中我们只有一个数据集。而如果有多个数据集,我们就可以将它们合并成一个更大的数据集,这样当然会降低过拟合的程度。
然而,从贝叶斯角度出发,不仅能作出很好的解释,同时也可以提出不错的解决办法。
3. 处理偏差方差
当处理偏差与方差时,下面这几点值得注意
克服直觉的错误
许多人的直觉是要尽可能地减小偏差,哪怕会增大方差。这是一种错误的逻辑,因为高方差低偏差的模型只有求多个的平均时才能表现得比较好。在现实中只有一个数据集得情况下,高方差低偏差模型的表现是很不理想的。
比如图2中右上角的图,尽管多次的平均值是集中在红圈里的,但现实中我们只能得到一个点的结果,这样效果就很可能比较差。
Bagging和重采样
Bagging和一些重采样的方法可以用来降低方差。利用这些方法可以生成许多个新数据集,然后对预测结果进行集成,就好像我们对图2中方差大的那些点求平均(或其它投票原则)。Bagging方法中最强大的就是随机森林算法。有关Bagging和随机森林的内容可以参见这篇文章。
算法的渐进性质
统计学论文中经常会提到关于预测算法的两个术语:渐进一致和渐进效率。在实际中,它们指的是:当训练集大小趋近无穷时,模型的偏差会减小到0(渐进一致),模型的方差将会不差于任何可能使用的模型(渐进效率)。
这两个性质是十分好的性质,具有这样性质的算法在大数据集(百万以上)上的偏差会很小。而在小数据集上,具有这样性质的算法甚至可能会比不具有这样性质的算法效果差很多。所以,在实际应用中,需要根据具体情况判断,不能只关注理论性质。
参考资料
- Pattern Recognition and Machine Learning (PRML)
- Understanding the Bias-Variance Tradeoff