目录
1 概念
Bagging算法 (Bootstrap aggregating,引导聚集算法),又称装袋算法,是机器学习领域的一种团体学习算法。
Bagging算法可与其他分类、回归算法结合,提高其准确率、稳定性的同时,通过降低结果的方差,避免过拟合的发生。
- bootstrap样本:有放回抽样
有放回抽样是简单随机抽样的操作方式之一。把总体中的抽样单位从 1 至 N 编号, 每抽取一个号码后再将它放回总体。对于任意一次抽取而言,由于总体容量不变,所以 N 个号码被抽中的机会均等。
这种有放回抽样会有 63.2% 的样本出现在采样集中,而剩下的 36.8% 样本可以作为验证集对模型的泛化性能进行包外估计。当基学习器是决策树时,可以用包外样本来辅助剪枝,还可以用于估计决策树中各结点的后验概率来辅助对零训练样本结点的处理。基学习器是神经网络时,用包外样本来辅助早期停止来减小过拟合。
与此相反,若每抽到一个号码后不再放回,第一次是从 N个单位中机会均等地抽取,而第二次则从所余(N-1) 个单位中机会均等地抽取⋯⋯最后在 N-(N-1)个单位中机会均等地抽取,这种方式称无放回抽样。在样本容量相同的情况下,有放回抽样比无放回抽样的平均数估计的标准误sx大。
- aggregating:对多个基学习器进行平均
2 原理
在集成学习中,通常认为Bagging的主要作用是降低方差,而Boosting的主要作用是降低偏差。Boosting能降低偏差很好理解,因为其原理就是将多个弱学习器组合成强学习器。但Bagging为什么能降低方差?
2.1 方差
首先,来看方差的定义:
设X为随机变量,则方差 V a r ( X ) = E [ ( X − E [ X ] ) 2 ] Var(X) = E[(X-E[X])^2] Var(X)=E[(X−E[X])2],表示 X X X与平均值 E [ X ] E[X] E[X]之间差异的平方的期望值,用于刻画 X X X取值的散布程度。
方差有两个重要的性质,后文会用到:
- c为常数,则
V a r ( c X ) = E [ ( c X − E [ c X ] ) 2 ] = c 2 E [ ( X − E [ X ] ) 2 ] = c 2 V a r ( X ) ( 1 ) Var(cX) = E[(cX - E[cX])^2] = c^2E[(X-E[X])^2] = c^2Var(X) \qquad (1) Var(cX)=E[(cX−E[cX])2]=c2E[(X−E[X])2]=c2Var(X)(1) - 独立随机变量之和的方差等于各变量的方差之和:
V a r ( X 1 + ⋯ + X n ) = V a r ( X 1 ) + ⋯ + V a r ( X n ) ( 2 ) Var(X_1 + \cdots + X_n) = Var(X_1) + \cdots +Var(X_n) \qquad (2) Var(X1+⋯+Xn)=Var(X1)+⋯+Var(Xn)(2)
2.2 模型的偏差与方差
通常对于一个模型而言,比起其在训练集的表现,通常我们更关心其在测试集上的表现,或者说希望了解其泛化性能。偏差-方差分解 (bias-variance decomposition)就是其中的一种重要工具。下图形象地展示了偏差与方差的区别:
要理解模型的偏差和方差,首先需要做一个假设 (PRML中称之为“思维实验”,thought experiment)。假设我们有很多个数据集,每个数据集中的样本都是从总体分布 P P P中抽样而得。对于其中一个特定的数据集 D D D,在此数据集上学习算法得到的单模型为 f ( x ; D ) f(x;D) f(x;D)。可以看到对于不同的数据集 D D D,学习到的模型都是不一样的,因此一个学习算法的期望预测为 f ˉ ( x ) = E D [ f ( x ; D ) ] \bar{f}(x)=E_D[f(x;D)] fˉ(x)=ED