【随机森林算法】{0} —— Bagging和随机森林算法的简单介绍

B a g g i n g Bagging Bagging 与随机森林

​ 由个体与集成的知识可知,欲得到泛化性能强的集成,集成中的个体学习器应尽可能相互独立;虽然“独立”在现实任务中无法做到,但可以设法使基学习器尽可能具有较大的差异。给定一个训练数据集,一种可能的做法是对训练样本进行采样,产生出若干个不同的子集,再从每个数据子集中训练出一个基学习器。这样,由于训练数据不同,我们获得的基学习器可望具有比较大的差异。然而,为获得好的集成,我们同时还希望个体学习器不能太差。如果采样出的每个子集都完全不同,则每个基学习器只用到了一小部分训练数据,甚至不足以进行有效学习,这显然无法确保产生出比较好的基学习器。为解决这个问题,我们可考虑使用相互有交叠的采样子集。


B a g g i n g Bagging Bagging

B a g g i n g Bagging Bagging 这个名字是由 B o o t s t r a p    A G G r e g a t I N G Bootstrap\,\,AGGregatING BootstrapAGGregatING 缩写而来。

B a g g i n g Bagging Bagging 是并行式集成学习方法最著名的代表。从名字即可看出,它直接基于自助采样法(bootstrap sampling)。给定包含 m m m 个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中,这样,经过 m m m 次随机采样操作,我们得到含 m m m 个样本的采样集,初始训练集中有的样本在采样集里多次出现,有的则从未出现。它的特点是各个弱学习器之间没有依赖关系,可以并行拟合,而且是随机采样。

随机采样就是从训练集里采集固定个数的样本,但是每采集一个样本后,都将样本放回。

​ 照这样,我们可采样出 T T T 个含 m m m 个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些基学习器进行结合。这就是 B a g g i n g Bagging Bagging 的基本流程。**在对预测输出进行结合时, B a g g i n g Bagging Bagging 通常对分类任务使用简单投票法,对回归任务使用简单平均法。**若分类预测时出现两个类收到同样票数的情形,则最简单的做法是随机选择一个,也可进一步考察学习器投票的置信度来确定最终胜者。 B a g g i n g Bagging Bagging 的算法描述如下图所示。

即每个基学习器使用相同权重的投票、平均。

【随机森林算法】{0} —— Bagging和随机森林算法的简单介绍_第1张图片

D b s D_{bs} Dbs 是自助采样产生的样本分布。


B a g g i n g Bagging Bagging 的优点:

  • 训练一个 B a g g i n g Bagging Bagging 集成与直接使用基学习算法训练一个学习器的复杂度同阶,这说明 B a g g i n g Bagging Bagging 是一个很高效的集成学习算法。

    假定基学习器的计算复杂度为 O ( m ) O(m) O(m),则 B a g g i n g Bagging Bagging 的复杂度大致为 T ( O ( m ) + O ( s ) ) T(O(m)+O(s)) T(O(m)+O(s)),考虑到采样与投票/平均过程的复杂度 O ( s ) O(s) O(s)很小,而 T T T 通常是一个不太大的常数。

  • 与标准 A d a B o o s t AdaBoost AdaBoost 只适用于二分类任务不同, B a g g i n g Bagging Bagging 能不经修改地用于多分类、回归等任务。

  • 自助采样过程还给 B a g g i n g Bagging Bagging 带来了另一个优点:由于每个基学习器只使用了初始训练集中约 63.2 % 63.2\% 63.2% 的样本,剩下约 36.8 % 36.8\% 36.8% 的样本可用作验证集来对泛化性能进行“包外估计”(out-of-bag estimate)。为此需记录每个基学习器所使用的训练样本。

  • 由于 B a g g i n g Bagging Bagging 算法每次都进行采样来训练模型,因此泛化能力很强,对于降低模型的方差很有作用。当然对于训练集的拟合程度就会差一些。

不妨令 D t D_t Dt 表示 h t h_t ht 实际使用的训练样本集,令 H o o b ( x ) H^{oob}(x) Hoob(x) 表示对样本 x x x 的包外预测,即仅考虑那些未使用 x x x 训练的基学习器在 x x x 上的预测,有
H o o b ( x ) = arg ⁡ y ∈ γ max ⁡ ∑ t = 1 T Ⅱ ( h t ( x ) = y )   ⋅   Ⅱ ( x ∉ D t )    , (1) H^{oob}(x)=\arg\limits_{y∈γ}\max\sum^T_{t=1}Ⅱ(h_t(x)=y)\,·\,Ⅱ(x\notin D_t)\,\,,\tag{1} Hoob(x)=yγargmaxt=1T(ht(x)=y)(x/Dt),(1)
B a g g i n g Bagging Bagging 泛化误差的包外估计为
ϵ o o b = 1 ∣ D ∣ ∑ ( x , y ) ∈ D Ⅱ ( H o o b ( x ) ≠ y )    . (2) \epsilon^{oob}=\frac{1}{|D|}\sum_{(x,y)\in D}Ⅱ(H^{oob}(x)\neq y)\,\,.\tag{2} ϵoob=D1(x,y)D(Hoob(x)=y).(2)
​ 事实上,包外样本还有许多其他用途:

  • 当基学习器是决策树时,可使用包外样本来辅助剪枝,或用于估计决策树中各结点的后验概率以辅助对零训练样本结点的处理;
  • 当基学习器是神经网络时,可使用包外样本来辅助早期停止以减小过拟合风险。

​ 从偏差方差分解的角度看, B a g g i n g Bagging Bagging 主要关注降低方差,因此它在不剪枝决策树、神经网络等易受样本扰动的学习器上效用更为明显。


随机森林

​ 随机森林(Random Forest,简称RF)是 B a g g i n g Bagging Bagging 的一个扩展变体。 R F RF RF 在以决策树为基学习器构建 B a g g i n g Bagging Bagging 集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。具体来说,传统决策树在选择划分属性时是在当前结点的属性集合(假定有 d d d 个属性)中选择一个最优属性;而在 R F RF RF 中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含 k k k 个属性的子集,然后再从这个子集中选择一个最优属性用于划分。

这里的参数 k k k 控制了随机性的引入程度:若令 k = d k=d k=d,则基决策树的构建与传统决策树相同;若令 k = 1 k= 1 k=1,则是随机选择一个属性用于划分;一般情况下,推荐值 k = l o g 2 d k= log_2d k=log2d

​ 随机森林简单、容易实现、计算开销小,令人惊奇的是,它在很多现实任务中展现出强大的性能,被誉为“代表集成学习技术水平的方法”。可以看出,随机森林对 B a g g i n g Bagging Bagging 只做了小改动,但是与 B a g g i n g Bagging Bagging 中基学习器的“多样性”仅通过样本扰动(通过对初始训练集采样)而来不同,随机森林中基学习器的多样性不仅来自样本扰动,还来自属性扰动,这就使得最终集成的泛化性能可通过个体学习器之间差异度的增加而进一步提升。

​ 随机森林的收敛性与 B a g g i n g Bagging Bagging 相似。如下图所示,随机森林的起始性能往往相对较差,特别是在集成中只包含一个基学习器时。这很容易理解,因为通过引入属性扰动,随机森林中个体学习器的性能往往有所降低。然而,随着个体学习器数目的增加,随机森林通常会收敛到更低的泛化误差。值得一提的是,随机森林的训练效率常优于 B a g g i n g Bagging Bagging,因为在个体决策树的构建过程中, B a g g i n g Bagging Bagging 使用的是“确定型”决策树,在选择划分属性时要对结点的所有属性进行考察,而随机森林使用的“随机型”决策树则只需考察一个属性子集。

【随机森林算法】{0} —— Bagging和随机森林算法的简单介绍_第2张图片

随机森林的主要优点:

  • 训练可以高度并行化。
  • 由于可以随机选择决策树节点划分特征,这样在样本特征维度很高的时候,仍然能高效的训练模型。
  • 在训练后,可以给出各个特征对于输出的重要性。
  • 由于采用了随机采样,训练出的模型的方差小,泛化能力强。
  • 相对于 B o o s t i n g Boosting Boosting 系列的 A d a b o o s t Adaboost Adaboost G B D T GBDT GBDT R F RF RF 实现比较简单。
  • 对部分特征缺失不敏感。

随机森林的主要缺点:

  • 在某些噪音比较大的样本集上,RF模型容易陷入过拟合。
  • 取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。

随机森林需要调整的参数有:

  • 决策树的个数
  • 特征属性的个数
  • 递归次数(决策树的深度)

Reference:《机器学习》

你可能感兴趣的:(【机器学习】)