《ISLR》学习笔记 —— Bagging、随机森林、Boosting

本文深入探讨了Bagging和随机森林算法的工作原理,包括bootstrap抽样、Out-of-Bag错误评估、随机森林的改进之处及其在降维和处理强特征方面的优势。同时对比了Boosting方法的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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=1Bf^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(1n1)n)nlimP=1e132
    可以得知,每个抽样集平均利用了原数据集的三分之二去训练子模型,而剩下的三分之一数据没有被利用去拟合该子模型,称这部分数据为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 (pm)/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》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值