第九篇:随机森林(Random Forest)

前言

随机森林非常像《机器学习实践》里面提到过的那个AdaBoost算法,但区别在于它没有迭代,还有就是森林里的树长度不限制。

因为它是没有迭代过程的,不像AdaBoost那样需要迭代,不断更新每个样本以及子分类器的权重。因此模型相对简单点,不容易出现过拟合。

下面先来讲讲它的具体框架流程。

框架流程

随机森林可以理解为Cart树森林,它是由多个Cart树分类器构成的集成学习模式。其中每个Cart树可以理解为一个议员,它从样本集里面随机有放回的抽取一部分进行训练,这样,多个树分类器就构成了一个训练模型矩阵,可以理解为形成了一个议会吧。

然后将要分类的样本带入这一个个树分类器,然后以少数服从多数的原则,表决出这个样本的最终分类类型。

设有N个样本,M个变量(维度)个数,该算法具体流程如下:

1. 确定一个值m,它用来表示每个树分类器选取多少个变量。(注意这也是随机的体现之一)
2. 从数据集中有放回的抽取 k 个样本集,用它们创建 k 个树分类器。另外还伴随生成了 k 个袋外数据,用来后面做检测。
3. 输入待分类样本之后,每个树分类器都会对它进行分类,然后所有分类器按照少数服从多数原则,确定分类结果。

性能制约

1. 森林中的每个树越茂盛,分类效果就越好。
       2. 树和树的枝叶穿插越多,分类效果就越差。

重要参数

1. 预选变量个数 (即框架流程中的m);
2. 随机森林中树的个数。

这两个参数的调优非常关键,尤其是在做分类或回归的时候。

构建随机森林模型

函数名:randomForest(......);

函数重要参数说明:

- x,y参数自然是特征矩阵和标签向量;

- na.action:是否忽略有缺失值的样本;

- ntree:树分类器的个数。500-1000为佳;

- mtry:分枝的变量选择数;

- importance:是否计算各个变量在模型中的重要性(后面会提到)。

构建好模型之后,带入predict函数和待预测数据集就可得出预测结果。然而,R语言中对随机森林这个机制的支持远远不止简单的做分类这么简单。它还提供以下这几个功能,在使用这些功能之前,都要先调用randomForest函数架构出模型。

使用随机森林进行变量筛选

之前的文章提到过使用主成分分析法PCA,以及因子分析EFA,但是这两种方法都有各自的缺点。它们都是属于变量组合技术,会形成新的变量,之后一般还需要一个解释的阶段。

对于一些解释起来比较麻烦,以及情况不是很复杂的情况,直接使用随机森林进行特征选择就可以了,下面为具体步骤:

执行这个脚本后:

其中的两列是衡量变量重要性的指标,越高表示该变量对分类的影响越大。第一列是根据精度平均减少值作为标准度量,而第二列则是采用节点不纯度的平均减少值作为度量标准。

重要度的计量方法参考下图(摘自百度文库):

使用随机森林绘制MDS二维图

通过MDS图我们能大致看出哪些类是比较容易搞混的:

生成下图:

可以看出,第二列第三列存在着容易混淆的情况。

小结

R语言包中提供的随机森林功能包还有很多,对于调优很有帮助,请务必查询相关资料并掌握。

另外,部分变种的随机森林算法还可以用来做回归。

时间: 2024-11-02 23:51:58

第九篇:随机森林(Random Forest)的相关文章

【机器学习】随机森林 Random Forest 得到模型后,评估参数重要性

在得出random forest 模型后,评估参数重要性 importance() 示例如下 特征重要性评价标准 %IncMSE 是 increase in MSE.就是对每一个变量 比如 X1 随机赋值, 如果 X1重要的话, 预测的误差会增大,所以 误差的增加就等同于准确性的减少,所以MeanDecreaseAccuracy 是一个概念的. IncNodePurity 也是一样, 如果是回归的话, node purity 其实就是 RSS(残差平方和residual sum of squar

随机森林——Random Forests

[基础算法] Random Forests 2011 年 8 月 9 日 Random Forest(s),随机森林,又叫Random Trees[2][3],是一种由多棵决策树组合而成的联合预测模型,天然可以作为快速且有效的多类分类模型.如下图所示,RF中的每一棵决策树由众多split和node组成:split通过输入的test取值指引输出的走向(左或右):node为叶节点,决定单棵决策树的最终输出,在分类问题中为类属的概率分布或最大概率类属,在回归问题中为函数取值.整个RT的输出由众多决策树

决策树模型组合之(在线)随机森林与GBDT

前言: 决策树这种算法有着很多良好的特性,比如说训练时间复杂度较低,预测的过程比较快速,模型容易展示(容易将得到的决策树做成图片展示出来)等.但是同时, 单决策树又有一些不好的地方,比如说容易over-fitting,虽然有一些方法,如剪枝可以减少这种情况,但是还是不够的. 模型组合(比如说有Boosting,Bagging等)与决策树相关的算法比较多,这些算法最终的结果是生成N(可能会有几百棵以上)棵树,这样可以大 大的减少单决策树带来的毛病,有点类似于三个臭皮匠等于一个诸葛亮的做法,虽然这几

机器学习中的算法(1)-决策树模型组合之随机森林与GBDT

版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系[email protected] 前言: 决策树这种算法有着很多良好的特性,比如说训练时间复杂度较低,预测的过程比较快速,模型容易展示(容易将得到的决策树做成图片展示出来)等.但是同时,单决策树又有一些不好的地方,比如说容易over-fitting,虽然有一些方法,如剪枝可以减少这种情况,但是还是不够的. 模型组合(比如

转载:scikit-learn随机森林调参小结

在Bagging与随机森林算法原理小结中,我们对随机森林(Random Forest, 以下简称RF)的原理做了总结.本文就从实践的角度对RF做一个总结.重点讲述scikit-learn中RF的调参注意事项,以及和GBDT调参的异同点. 1. scikit-learn随机森林类库概述 在scikit-learn中,RF的分类类是RandomForestClassifier,回归类是RandomForestRegressor.当然RF的变种Extra Trees也有, 分类类ExtraTreesC

Bagging与随机森林算法原理小结

在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系.另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合.本文就对集成学习中Bagging与随机森林算法做一个总结. 随机森林是集成学习中可以和梯度提升树GBDT分庭抗礼的算法,尤其是它可以很方便的并行训练,在如今大数据大样本的的时代很有诱惑力. 1.  bagging的原理 在集成学习原理小结中,我们给Bagging画了下面一张原理图. 从上图可以看出,

机器学习中的算法——决策树模型组合之随机森林与GBDT

前言: 决策树这种算法有着很多良好的特性,比如说训练时间复杂度较低,预测的过程比较快速,模型容易展示(容易将得到的决策树做成图片展示出来)等.但是同时,单决策树又有一些不好的地方,比如说容易over-fitting,虽然有一些方法,如剪枝可以减少这种情况,但是还是不够的. 美国金融银行业的大数据算法:随机森林模型+综合模型 模型组合(比如说有Boosting,Bagging等)与决策树相关的算法比较多,这些算法最终的结果是生成N(可能会有几百棵以上)棵树,这样可以大大的减少单决策树带来的毛病,有

机器学习实战之 第七章 集成方法(随机森林和 AdaBoost)

第7章 集成方法 ensemble method 集成方法: ensemble method(元算法: meta algorithm) 概述 概念:是对其他算法进行组合的一种形式. 通俗来说: 当做重要决定时,大家可能都会考虑吸取多个专家而不只是一个人的意见. 机器学习处理问题时又何尝不是如此? 这就是集成方法背后的思想. 集成方法: 投票选举(bagging: 自举汇聚法 bootstrap aggregating): 是基于数据随机重抽样分类器构造的方法 再学习(boosting): 是基于

决策树模型组合之随机森林与GBDT

本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系[email protected] 前言: 决策树这种算法有着很多良好的特性,比如说训练时间复杂度较低,预测的过程比较快速,模型容易展示(容易将得到的决策树做成图片展示出来)等.但是同时,单决策树又有一些不好的地方,比如说容易over-fitting,虽然有一些方法,如剪枝可以减少这种情况,但是还是不够的. 模型组合(比如说有Boos