Bagging、随机森林、Boosting
1.Bagging(装袋算法)
bootstrap抽样:反复地从原始数据集中有放回地抽取观测数据,得到多个数据集。
- 优点:适用于样本数量较小,可从原始数据中产生多个训练集。
- 缺点:会引入相同样本,改变了原始数据的分布,导致偏差;模型的可理解性差。
在决策树中(或其他高方差模型中),由于其高方差低偏差地特性(即对训练集样本很敏感),样本发生个别变化时,生成的决策树可能会完全不同。为了减小高方差,引入Bagging方法。
假设有n个数据集, Z 1 , Z 2 , . . . Z n Z_1,Z_2,...Z_n Z1,Z2,...Zn,每个数据集的方差为 σ 2 \sigma^2 σ2,则其样本平均值 Z ˉ \bar{Z} Zˉ的方差为 σ 2 n \frac{\sigma^2}{n} nσ2。
可以发现,对一系列观测值取平均可以显著降低方差。因此,类比可知,依赖原训练集生成许多新的训练集,再分别对新的训练集训练模型
f
^
1
(
x
)
,
f
^
2
(
x
)
,
.
.
.
f
^
B
(
x
)
\hat{f}^1(x),\hat{f}^2(x),...\hat{f}^B(x)
f^1(x),f^2(x),...f^B(x),最终取得各模型预测结果的平均。(分类问题即可以少数服从多数)
f
^
a
v
g
(
x
)
=
1
B
∑
b
=
1
B
f
^
b
(
x
)
\hat{f}_{avg}(x)=\frac{1}{B}\sum_{b=1}^B\hat{f}^b(x)
f^avg(x)=B1b=1∑Bf^b(x)
Bagging(Boostrap aggregation):给定一个训练集,采用boostrap抽样生成b个训练集,再分别这b个训练集去训练模型,生成b个模型,再通过取平均值或取多数票等方法得到模型预测或分类结果。
- Out-of-Bag Error(袋外错误)
运用Boostrap抽样方式不可避免地存在一个问题,即当从样本数为n的训练集D中,运用Bootstrap抽样时,第j个观测值在bootstrap抽样集中的概率为:
P = ( 1 − ( 1 − 1 n ) n ) lim n → ∞ P = 1 − 1 e ≈ 2 3 P= (1-(1-\frac{1}{n})^n)\\ \lim_{n\rightarrow\infty }P=1- \frac{1}{e}\approx \frac{2}{3} P=(1−(1−n1)n)n→∞limP=1−e1≈32
可以得知,每个抽样集平均利用了原数据集的三分之二去训练子模型,而剩下的三分之一数据没有被利用去拟合该子模型,称这部分数据为Out-of-Bag(OOB)观测值(即子模型拟合未用到的训练集)。
OOB误分率:对所有样本,计算它作为OOB样本时的预测或分类情况;通过平均或多数投票的方式得到该样本的分类样本;最后用误分个数占样本总数的比率作为OOB误分率。(因为OOB样本的预测利用的模型并不是用其拟合的模型,相当于测试集,所以可以近似将OBB错误作为test error)
2.随机森林
随机森林是在Bagging方法上的改进,子模型为决策树,在Bagging中抽样时进行模型拟合时,利用了观测值的所有特征p个,而在随机森林模型中,各子模型仅利用观测值所有特征中 m = p m=\sqrt{p} m=p个进行拟合。
- m越大,单棵树的效果会提升,但树之间相关性也会增强
- B越大,模型效果会有提升,但计算量会变大
优势:降维;当强特征存在时,bagging生成的各树模型可能高度相似,因此平均或多数投票不能够显著降低方差,而随机森林平均上
(
p
−
m
)
/
p
(p-m)/p
(p−m)/p的split不会考虑强特征。
劣势:对小量数据集和低维数据集的分类不一定可以得到很好的效果。
bagging与随机森林均不会因为B值的增大而产生过拟合,所以一般采用较大的B去减小误差。
一方面:在样本的抽样中,会产生重复的样本,这样每一个子模型在拟合时都不会采用全部的样本,就不会产生过拟合现象。
另一方面:在特征值的采样中,选择有限的特征,这样每一个子模型可能不会生成完整的决策树(效果上类似于剪枝),所以不会产生过拟合现象。
3.Boosting
提升方法(Boosting)在该文进行了详细阐述。
提升树中,子模型的split为1时(即模型为树桩)通常效果较好,因为每次迭代产生的子模型都依赖于上一个子模型的结果(即与每次迭代的残差有关),因此每个模型之间的相关度越低,提升的效果越好。此时每一个子模型只包括一个特征,相当于加法模型。split越多,子模型考虑的特征数就越多,interaction depth就越大。
Boosting与前两者的区别:
- Boosting根据错误率调整样本权重,错误率越大的样本权重越大;
- Bagging使用的是均匀取样,每个样本权重相等。
- Boosting各个预测函数必须按顺序迭代生成;
- Bagging各个预测函数可以并行生成。
- Boosting中误差越小的预测函数其权重越大;
- Bagging所有的预测函数的权重相等。
参考
[1]《An introduction to statistical learning; with Application in R》