集成学习之随机森林(RandomForest)

Bagging与随机森林

要得到泛化性能强的集成,集成中的个体学习器应尽可能相互独立,虽然这在现实任务中很难做到,但我们可以设法使基学习器尽可能具有较大的差异。

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

按照这种方法,我们可以采样出T个含m个训练样本的采样集,然后基于每个采样集训练处一个基学习器,再将这些基学习器进行结合,这就是Bagging的基本流程。在对预测输出进行结合时,Bagging通常对分类任务使用简单投票法,对回归任务使用简单平均法。

从随机性来看,bagging技术可以有效的减小方差,即减小过拟合程度。

随机森林是Bagging的一个扩展,Leo Breiman(2001)提出。随机森林在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择(即引入随机特征选择)。传统决策树在选择划分属性时时在当前节点的属性集合(假定有d个属性)中选择一个最优属性;而在随机森林中,对基决策树的每个节点,先从该节点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。这里的参数k控制了随机性的引入程度:若令k=d,则基决策树的构建与传统决策树相同;若令k=1,则是随机选择一个属性进行划分。

简单来说,随机森林就是对决策树的集成,但有两点不同:

(1)采样的差异性:从含m个样本的数据集中有放回的采样,得到含m个样本的采样集,用于训练。这样能保证每个决策树的训练样本不完全一样。

(2)特征选取的差异性:每个决策树的n个分类特征是在所有特征中随机选择的(n是一个需要我们自己调整的参数)

分类和回归

随机森林可以应用在分类和回归问题上。实现这一点,取决于随机森林的每颗cart树是分类树还是回归树。

优缺点:

随机森林有很多优点:
1) 每棵树都选择部分样本及部分特征,一定程度避免过拟合;
2) 每棵树随机选择样本并随机选择特征,使得具有很好的抗噪能力,性能稳定;
3) 能处理很高维度的数据,并且不用做特征选择;
4) 适合并行计算;
5) 实现比较简单;

缺点:
1) 参数较复杂;
2) 模型训练和预测都比较慢。

几乎不需要输入的准备
它们不需要测算就能够处理二分特征、分类特征、数值特征的数据。随机森林算法能完成隐含特征的选择,并且提供一个很好的特征重要度的选择指标。
训练速度快
性能优化过程刚好又提高了模型的准确性,这种精彩表现并不常有,反之亦然。这种旨在多样化子树的子设定随机特征,同时也是一种突出的性能优化!调低给定任意节点的特征划分,能让你简单的处理带有上千属性的数据集。(如果数据集有很多行的话,这种方法同样的也可以适用于行采样)
很难被打败
针对任何给定的数据集,尽管你常能找到一个优于它的模型(比较典型的是神经网络或者一些增益算法 boosting algorithm),但这类算法肯定不多,而且通常建这样的模型并调试好要比随机森林算法模型要耗时的更多。这也是为何随机森林算法作为基准模型表现出色的原因。
建立一个差劲的随机森林模型很难
因为随机森林算法对指定使用的超参数(hyper-parameters )并不十分敏感。为了要得到一个合适的模型,它们不需要做很多调整。只需使用大量的树,模型就不会产生很多偏差。大多数的随机森林算法的实现方法的参数设置初始值也都是合理的。
通用性
随机森林算法可以应用于很多类别的模型任务。它们可以很好的处理回归问题,也能对分类问题应付自如(甚至可以产生合适的标准概率值)。虽然我从没亲自尝试,但它们还可以用于聚类 分析问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值