不仅如此,因为随机森林的天然并行特性,许多分布式框架的机器学习库中也有随机森林的身影,例如 Spark。

问题0:随机森林为什么是森林?

随机森林是有若干颗树(Decision Tree)构成,大于一颗树就是森林咯,,,,,

问题1:随机森林(Random Forest)的随机性体现在哪里?

因为随机森林有行采样和列采样机制

问题2:行采样和列采样又是什么东西?

随机森林里面采样的Bootstrap方法其实就是行采样,而在计算最佳分裂或者分叉特征时不使用全部特征进行计算而是采样一定的随机机制在一个小的子集里面去挑选而引入列采样。

随机森林就是通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策树,而它的本质属于机器学习的一大分支——集成学习(Ensemble Learning)方法。

 

随机森林是一种集成算法(Ensemble Learning),它属于Bagging类型,通过组合多个弱分类器,最终结果通过投票或取均值,使得整体模型的结果具有较高的精确度和泛化性能。其可以取得不错成绩,主要归功于“随机”和“森林”,一个使它具有抗过拟合能力,一个使它更加精准。

随机森林分类示意图 随机森林的定义_机器学习

 

需要注意的是:

Bagging是一种方法论,而随机森林是Bagging中的经典算法;

 

随机森林(Random Forest):

 

随机森林实际上是一种特殊的bagging方法,它将决策树用作bagging中的模型。首先,用bootstrap方法生成m个训练集,然后,对于每个训练集,构造一颗决策树,在节点找特征进行分裂的时候,并不是对所有特征找到能使得指标(如信息增益)最大的,而是在特征中随机抽取一部分特征,在抽到的特征中间找到最优解,应用于节点,进行分裂。随机森林的方法由于有了bagging,也就是集成的思想在,实际上相当于对于样本和特征都进行了采样(如果把训练数据看成矩阵,就像实际中常见的那样,那么就是一个行和列都进行采样的过程),所以可以避免过拟合。

它有很多的优点:

  • 在数据集上表现良好
  • 在当前的很多数据集上,相对其他算法有着很大的优势
  • 它能够处理很高维度(feature很多)的数据,并且不用做特征选择
  • 在训练完后,它能够给出哪些feature比较重要
  • 在创建随机森林的时候,对generlization error使用的是无偏估计
  • 训练速度快
  • 在训练过程中,能够检测到feature间的互相影响
  • 容易做成并行化方法
  • 实现比较简单

 

参考:随机森林原理介绍与适用情况(综述篇)

参考:随机森林(Random Forest)算法原理

参考:sklearn