8.7 自助聚合(Bagging)

上文中介绍了自助法(bootstrap)作为一个评估参数估计或预测的准确度的方法。本节介绍如何用自助法来提升估计或预测自身的表现。第 8.4 节考察了自助法和贝叶斯方法之间的联系,发现自助法均值近似于后验平均值。自助聚合进一步地利用了这个联系。

首先考虑回归问题。假设训练数据为 $\mathbf{Z}=\{(x_1,y_1),(x_2,y_2),\dots,(x_N,y_N)\}$,拟合模型得到输入点 $x$ 处的预测值 $\hat{f}(x)$。自助聚合(Bootstrap aggregation,bagging) 对一组自助样本上的预测取平均,因此降低了方差。对每个自助样本 $\mathbf{Z}^{*b}$,$b=1,2,\dots,B$ 拟合模型,得到预测 $f^{*b}(x)$。可定义自助聚合估计为:

$$\hat{f}_\text{bag}(x) = \frac{1}{B} \sum_{b=1}^B \hat{f}^{*b}(x) \tag{8.51}$$

将每个数据点 $(x_i y_i)$ 等概率 $1/N$ 的经验分布记为 $\hat{\mathcal{P}}$。则实际上“真实”的自助聚合估计可定义为 $\operatorname{E}_{\hat{\mathcal{P}}}\hat{f}^*(x)$,其中 $\mathbf{Z}^*=(x_1^*,y_1^*),(x_2^*,y_2^*),\dots(x_N^*,y_N^*)$,并且每个 $(x_i^*,y_i^*)\sim\hat{\mathcal{P}}$。式 8.51 是真实自助聚合估计的一个蒙特卡罗估计,随着 $B\rightarrow\infty$ 接近真实值。

只有在原本的估计 $\hat{f}(x)$ 是数据的非线性或自适应和函数时,自助聚合(表达式 8.51)会与其存在差异。例如,在第 8.2.1 节中的 B-样条上进行自助聚合,对图 8.2 的左下图中的每个 $x$ 值处求曲线的平均。当固定输入变量时,B-样条平滑器对数据是线性的;因此若利用等式 8.6 中的参数自助法进行抽样,则随着 $B\rightarrow\infty$ 有 $\hat{f}_\text{bag}(x)\rightarrow\hat{f}(x)$(练习 8.4)。因此自助聚合恰好重现了图 8.2 的左上图中原本的平滑曲线。如果使用非参数自助法,这个结论也近似成立。

**图 8.2**:左上图为数据的 B-样条平滑曲线。右上图为 B-样条平滑加减 1.96 倍标准误差的区间带。左下图为十次自助法重复计算的 B-样条平滑曲线。右下图为基于自助法分布产生的 B-样条平滑曲线和 95% 的标准误差区间带。
图 8.2:左上图为数据的 B-样条平滑曲线。右上图为 B-样条平滑加减 1.96 倍标准误差的区间带。左下图为十次自助法重复计算的 B-样条平滑曲线。右下图为基于自助法分布产生的 B-样条平滑曲线和 95% 的标准误差区间带。

回归树是一个更有趣的例子,下面记 $\hat{f}(x)$ 为在输入向量 $x$ 处的树模型预测(回归树会在第九章介绍)。每个自助树模型通常会采用与原模型不同的特征,并且可能产生不同数量的终结点。自助聚合估计是这 $B$ 个树模型在 $x$ 点预测值的平均。

现假设树模型产生一个 $K$ 类别输出变量的分类器 $\hat{G}(x)$。这里可引入一个隐含的指示向量函数 $\hat{f}(x)$,其取值中只有一个 1 和 $K-1$ 个 0,因此 $\hat{G}(x)=\underset{k}{\arg\min}\hat{f}(x)$。那么自助聚合估计 $\hat{f}_\text{bag}(x)$(表达式 8.51)是一个长度 $K$ 的向量 $[p_1(x),p_2(x),\dots,p_K(x)]$,其中 $p_k(x)$ 为在 $x$ 点预测类别为 $k$ 的数模型的比例。自助聚合分类器选择 $B$ 个树模型的最多投票类别,$\hat{G}_\text{bag}(x)=\underset{k}{\arg\min}\hat{f}_\text{bag}(x)$。

通常不只要得到预测类别,还需要计算 $x$ 点处每个类别概率的估计。一个自然的想法是将投票比例 $p_k(x)$ 作为这些概率的估计,然而从一个简单的二分类例子中可见这种方法行不通。假设在 $x$ 点处类别 1 的真实概率为 0.75,并且每个自助分类器的预测都为类别 1。那么比例 $p_1(x)=1$ 是错误的类别概率。不过很多分类器 $\hat{G}(x)$ 中已经存在了一个隐含的估计 $x$ 点处类别概率的函数 $\hat{f}(x)$(树模型中为终结点中的类别比例)。另一种自助聚合方式是对这些概率进行平均,而不是对类别的指示投票向量。这样不仅会得到对类别概率更好的估计,同时,尤其是在 $B$ 较小时,也会趋于得到反差更小的自助聚合估计(见下一节例子中的图 8.10)。

8.7.1 示例:树模型和模拟数据

在这个例子中,生成样本大小为 $N=30$,输出变量有两个类别;有 $p=5$ 个特征变量,都服从标准高斯分布,两两之间相关性为 0.95。输出变量 $Y$ 的生成概率为 $\operatorname{Pr}(Y=1|x_1 \leq 0.5) = 0.2$,$\operatorname{Pr}(Y=1|x_1 > 0.5) = 0.8$。贝叶斯错误率为 0.2。同时从总体样本分布中生成大小为 2000 的测试样本集。在训练样本和所有的 200 个自助样本上拟合分类树模型(第九章介绍决策树)。拟合中没有使用剪枝(pruning)。图 8.9 展示了原本的树模型和十一个自助树模型。注意到这些树模型之间的差异,它们有不同的划分特征和划分点。图 8.10 展示了原本树模型和自助聚合树模型的测试误差。在这个例子中,自变量中的相关性导致了树模型方差较大。自助聚合成功地抵消了这部分方差,因而降低了测试误差。

**图 8.9**:模拟数据中的自助聚合树模型。左上图为原本的树模型。其余为十一个自助抽样上的树模型。图中为每个树模型标注了第一次划分的标准。
图 8.9:模拟数据中的自助聚合树模型。左上图为原本的树模型。其余为十一个自助抽样上的树模型。图中为每个树模型标注了第一次划分的标准。
**图 8.10**:图 8.9 中自助聚合例子的错误率曲线。图中展示了原本树模型和自助聚合树模型的测试误差率,横轴为自助抽样的次数。橙色点对应着预测类别投票(比例),而绿色点为估计概率的平均。
图 8.10:图 8.9 中自助聚合例子的错误率曲线。图中展示了原本树模型和自助聚合树模型的测试误差率,横轴为自助抽样的次数。橙色点对应着预测类别投票(比例),而绿色点为估计概率的平均。

自助聚合可以极大地降低类系树模型这种不稳定方法的方差,从而得到更好的预测。下面以平方误差损失为例,简单地说明自助聚合的作用;简言之就是因为取平均的操作降低了方差而没有改变偏差。

假设训练集 $(x_i,y_i),i=1,\dots,N$ 是分布 $\mathcal{P}$ 的独立抽样,那么一个理想的聚合估计为 $f_\text{ag}(x)=\operatorname{E}_\mathcal{P}\hat{f}^{*}(x)$。其中固定了 $x$ 并且自助集 $\mathbf{Z}^*$ 中的观测值 $(x_i^*,y_i^*),i=1,2,\dots,N$ 是从 $\mathcal{P}$ 的抽样。注意 $f_\text{ag}(x)$ 是一个自助聚合估计,其自助集是从真实总体样本的分布 $\mathcal{P}$ 的抽样,而不是从训练数据的抽样。这是一个无法在实践中使用的估计,只是为了分析的方便。那么可写出:

$$\begin{align} \operatorname{E}_\mathcal{P} [Y-\hat{f}^*(x)]^2 &= \operatorname{E}_\mathcal{P} [Y - f_\text{ag}(x) + f_\text{ag}(x) - \hat{f}^*(x)]^2 \\ &= \operatorname{E}_\mathcal{P} [Y - f_\text{ag}(x)]^2 + \operatorname{E}_\mathcal{P} [\hat{f}^*(x) - f_\text{ag}(x)]^2 \\ & \geq \operatorname{E}_\mathcal{P} [Y - f_\text{ag}(x)]^2 \end{align}$$ $$\tag{8.52}$$

右侧中额外的误差来自于 $\hat{f}^*(x)$ 在其均值 $f_\text{ag}(x)$ 附近变动的方差。因此对真实总体样本的聚合不会增加均方误差。这意味着从训练集抽取样本的自助聚合通常会降低均方误差。

在 0-1 损失的分类问题中,由于偏差和方差不存在加性,所以上述的讨论不再适用。此时,自助聚合可以改善一个好分类器,但却会恶化一个不好的分类器。下面用随机规则的简单例子加以说明。假设对所有的 $x$,$Y=1$;一个分类器 $\hat{G}(x)$ 对所有的 $x$ 预测 $Y=1$ 的概率为 0.4,预测 $Y=0$ 的概率为 0.6。则 $\hat{G}(x)$ 的误分类比率为 0.6,但自助聚合的分类器的比率为 1.0。

可以用独立的弱学习器的一致表决来理解分类问题中自助聚合的作用(Dietterich, 2000a)。以二分类为例,令 $x$ 处的贝叶斯最优决策为 $G(x)=1$。假设每个弱学习器 $G_b^*$ 的错误率为 $e_b=e<0.5$,令 $S_1(x)=\sum_{b=1}^BI(G_b^*(x)=1)$ 为类别 1 的一致表决票数。由于假设了若学习器相互独立,所以有 $S_1(x)\sim\operatorname{Binom}(B,1-e)$,并且随着 $B$ 增大 $\operatorname{Pr}(S_1>B/2)\rightarrow 1$。这个思想在统计学之外也被熟知为“群体的智慧”(Wisdom of Crowds)(Surowiecki, 2004):一个多样且独立的群体的集体认知通常优于其中任一个体的认知,并且可以通过投票来获得这种优势。当然,其中“独立”是一个关键的条件,而自助聚合树模型并不满足。图 8.11 用模拟例子演示了一致表决的作用,其中只有 30% 的投票者了解相关信息。

**图 8.11**:模拟学院奖(奥斯卡)投票。有 50 个投票者对 10 个奖项投票,每个奖项有 4 个提名。对每个奖项,只有 15 个投票者了解相关信息,这体现在他们在这个奖项中选择“正确”参选者的概率中(所以等概率 $P=0.25$ 的投票意味着对奖项没有了解)。对每个奖项,从 50 个投票者中随机选取 15 个作为专家。图中展示了(基于 50 次模拟)一致表决和个体(专家)的期望正确次数。误差边界代表了一个标准差。从例子中可见,若在一个奖项中存在 15 个有 50% 概率选择正确参选者的专家,那么一致表决的期望正确次数是个体的两倍。
图 8.11:模拟学院奖(奥斯卡)投票。有 50 个投票者对 10 个奖项投票,每个奖项有 4 个提名。对每个奖项,只有 15 个投票者了解相关信息,这体现在他们在这个奖项中选择“正确”参选者的概率中(所以等概率 $P=0.25$ 的投票意味着对奖项没有了解)。对每个奖项,从 50 个投票者中随机选取 15 个作为专家。图中展示了(基于 50 次模拟)一致表决和个体(专家)的期望正确次数。误差边界代表了一个标准差。从例子中可见,若在一个奖项中存在 15 个有 50% 概率选择正确参选者的专家,那么一致表决的期望正确次数是个体的两倍。

第十五章中介绍的随机森林通过减少自助抽样树模型之间的相关性来改进自助聚合方法。

注意对一个模型进行自主聚合后,该模型不再有其原本的简单结构。例如,自助聚合树模型不再是一个树模型。从对模型的可解释性来说这明显是一个缺点。诸如最近邻域的更稳定方法往往不会太受自助聚合的影响。相反地,最能通过自助聚合得到提升的不稳定模型,其不稳定性通常是由于对可解释性有所要求,但这却会被自助聚合破坏。

**图 8.12**:两个特征和两个类别的模拟数据,以线性边界分类。左图:对基于一个变量分割的分类器的决策规则进行自助聚合估计出的判别边界。右图:对同样分类器的决策规则进行提升估计出的判别边界。测试误差率分别为 0.166 和 0.065。提升方法在第十章介绍。
图 8.12:两个特征和两个类别的模拟数据,以线性边界分类。左图:对基于一个变量分割的分类器的决策规则进行自助聚合估计出的判别边界。右图:对同样分类器的决策规则进行提升估计出的判别边界。测试误差率分别为 0.166 和 0.065。提升方法在第十章介绍。

图 8.12 展示了一个自助聚合没有作用的例子。图中为两个特征的 100 个数据点;输出变量为二分类,其灰色的线性边界为 $x_1+x_2=1$。分类器 $\hat{G}(x)$ 为基于一个特征的分割,选择最大程度降低训练集误分类比率的 $x_1$ 或 $x_2$ 的分割。

左图中的蓝色曲线为 $B=50$ 个自助抽样上 0-1 决策规则的自助聚合得到的判别边界。它没有很好地近似出真实的边界。从训练集中得到的一次分割规则的分割点在 0 附近($x_1$ 或 $x_2$ 的中位位置),因此其对远离中心的区域没有什么作用。这个例子中对概率而不是类别(指示向量)的平均也不会有所改善。自助聚合估计的是一次分割规则产生的期望类别概率,即在很多次重复的平均。但要注意自助聚合计算出的期望类别概率无法在任一单次重复中实现,就如同一个母亲无法有 2.4 个孩子一样。从这个角度看,自助聚合从某种程度扩大了单个基学习器产生的模型空间。然而,在这个例子和一些其他例子中,这种扩展不足以改善模型,而需要对模型类别进行更大程度地扩展。第十章介绍的“提升”(boosting)方法就是这样的一种方法。右图中的判别边界就是提升方法的结果,其大致地符合对角线边界。


本节练习

练习 8.4

Consider the bagging method of Section 8.7. Let our estimate $\hat{f}(x)$ be the B-spline smoother $\hat{\mu}(x)$ of Section 8.2.1. Consider the parametric bootstrap of equation (8.6), applied to this estimator. Show that if we bag $\hat{f}(x)$, using the parametric bootstrap to generate the bootstrap samples, the bagging estimate $\hat{f}_\text{bag}(x)$ converges to the original estimate $\hat{f}(x)$ as $B\to\infty$.

上一页
下一页