集成学习之随机森林

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_17677907/article/details/88107818

1.个体与集成

集成学习通过构建并结合多个学习器来完成学习任务

下图表示集成学习的一般结构:先学习一组"个体学习器",再用某种策略把他们结合起来。
个体学习器通常由一个现有算法从训练数据中产生。
个体学习器可以都是同一类型的,也可以是不同类型的学习器

在这里插入图片描述
集成学习通过对多个学习器进行组合,可以获得比单一学习器显著提高的泛化性能。对弱学习器尤为明显。

那么集成学习如何获得比单一分类器更好的性能呢?

要想得到好的集成,个体学习器应该好而不同,即个体学习器之间要有一定的准确性,并且也要有多样性(即学习器之间具有差异)。

如何产生并结合"好而不同"的个体学习器,是集成学习研究的核心

根据个体学习器的生成方式,目前的集成学习方法大致可以分为两大类:

  • 个体学习器之间存在强依赖关系,必须串行生成的序列化方法,如(Boosting)
  • 个体学习器之间不存在强依赖关系,可同时生成的并行化方法,如(Bagging、随机森林)

2.Bagging与随机森林

前面一节告诉我们,集成中的个体学习器应该尽可能相互独立。实际上可以使基学习器尽可能的具有较大的差异。

一种可能的做法是对训练样本进行采样,产生出不同的子集,对每个子集训练一个基学习器。这样,由于数据的不同,可以获得差异。但是我们还希望个体学习器不能够太差,这样基学习器所用到的数据不能够太小。为了解决这个问题,可以用相互有交叠的采样子集

Bagging

Bagging是并行化集成学习方法最著名的代表。它直接基于自助采样法(bootstrap sampling)。

给定包含m个样本的数据集,先随机采样出一个样本放入采样集中,再把该样本放回初始样本集,使得下次采样时该样本仍有可能被选中。
这样经过m次随机采样操作,得到含m个样本的采样集。
初始训练集中有的样本在采样集里多次出现,有的则从未出现。
自助采样法告诉我们,初始训练集中大概有63.2%的样本出现在采样集中。

  • 得到T个含m个训练样本的采样集
  • 基于每个采样集训练一个基分类器
  • 对这些基分类器进行结合
  • 对分类采取投票法 回归采取平均法

训练一个Bagging集成与直接使用基学习器进行训练一个学习器的复杂度同阶。说明Bagging是一个高效的集成学习方法

自助采样可以使Bagging将采样过程中剩下的36.8%的样本(包外样本)作为验证集来估计泛化性能

Bagging主要关注降低方差

随机森林

随机森林是Bagging的一个扩展变体。

随机森林包括随机和森林两个部分。森林表示是决策树的集成,随机表示属性划分的时候需要随机选一个属性子集。

RF以决策树为基学习器来构建Bagging集成。进一步得在决策树的基础上加入了随机属性选择

传统决策树在选择属性划分的时候,以当前节点的属性集合选择一个最优属性。而在RF中,对基决策树的每个节点,先从该节点的属性集合(假定有d个属性)中,随机选择包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。

这里的k控制了随机性的引入程度。若k=d,则基决策树与传统决策树相同。若k=1,则是随机选择一个属性。一般情况下 k = log 2 d k=\log_2d

随机森林简单、容易实现、计算开销小,性能强大。

可以看出,随机森林只对Bagging进行了小改动。但是Bagging中基学习器的多样性仅通过样本扰动得来不同,随机森林基学习器的多样性不仅仅来自样本扰动(通过对初始训练集采样),还来自属性扰动,这使得最终集成的泛化性能可通过个体学习器之间的差异度的增加而进一步提升

随机森林的特点

  1. 准确率高
  2. 能够运行在大数据集上
  3. 能够处理高维特征的输入样本,而且不需要降维
  4. 能够评估各个特征在分类问题上的重要性
  5. 在生成过程中,能够获得内部生成误差的一种无偏估计
  6. 对于缺省值问题也能获得很好的结果

随机森林生成过程

  1. 训练集为N,每棵树随机有放回地从训练集中抽取N个样本(bootstrap sample),作为该树的训练集
  2. 每个样本有d个特征,指定一个常数k<<d,随机从d个特征中选择k个特征,每次树进行分离时,从d个特征中选择最优
  3. 每棵树都尽最大程度的生长,并且没有剪枝过程

随机森林分离效果(错误率)与两个因素有关:

  • 森林中任意两棵树的相关性:相关性越大,错误率越大;
  • 森林中每棵树的分类能力:每棵树的分类能力越强,整个森林的错误率越低。

减小特征选择个数d,树的相关性和分类能力也会相应降低。增大d,两者都会增大。

问题的关键是如何选择合适的d,这也是随机森林唯一的一个参数

袋外错误率(oob)

上面我们提到,构建随机森林的关键问题就是如何选择最优的m,要解决这个问题主要依据计算袋外错误率oob error(out-of-bag error)

随机森林有一个重要的优点就是,没有必要对它进行交叉验证或者用一个独立的测试集来获得误差的一个无偏估计。它可以在内部进行评估,也就是说在生成的过程中就可以对误差建立一个无偏估计。主要是利用自助采样法所剩下的36.8%的样本。

我们知道,在构建每棵树时,我们对训练集使用了不同的bootstrap sample(随机且有放回地抽取)。所以对于每棵树而言(假设对于第k棵树),大约有1/3的训练实例没有参与第k棵树的生成,它们称为第k棵树的oob样本

而这样的采样特点就允许我们进行oob估计,它的计算方式如下:

  • 对每个样本,计算它作为oob样本的树对它的分类情况(约1/3的树);
  • 然后以简单多数投票作为该样本的分类结果;
  • 后用误分个数占样本总数的比率作为随机森林的oob误分率。

oob误分率是随机森林泛化误差的一个无偏估计,它的结果近似于需要大量计算的k折交叉验证。

猜你喜欢

转载自blog.csdn.net/qq_17677907/article/details/88107818
今日推荐