zoukankan      html  css  js  c++  java
  • 第九篇:随机森林(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语言包中提供的随机森林功能包还有很多,对于调优很有帮助,请务必查询相关资料并掌握。

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

  • 相关阅读:
    linux基本命令
    Linux中常用的50个命令
    Selenium2之XPath定位
    Selenium2浏览器启动及配置
    python学习内容.05
    python学习内容.04
    python学习内容.03
    python学习内容.02
    python学习内容.01
    RESTful
  • 原文地址:https://www.cnblogs.com/muchen/p/6883263.html
Copyright © 2011-2022 走看看