机器学习——随机森林(Random Forest)

1、随机森林(random forest)简介

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

  • Bagging:训练多个分类器取平均f(x)=1Mm=1Mfm(x)f(x)=\frac{1}{M}\displaystyle\sum_{m=1}^Mf_m(x)
  • Boosting:从弱学习器开始加强,通过加权来进行训练(每加入一颗树都要比原来的强)
  • Stacking:聚合多个分类器或回归模型
    机器学习——随机森林(Random Forest)
    BaggingBagging结构
    图片来源于:https://www.jianshu.com/p/a779f0686acc

Bagging算法说白了就是并行训练一堆分类器,最典型的就是随机森林

  • 随机:数据采样随机,特征选择随机
  • 森林:很多决策树并行放在一起
    机器学习——随机森林(Random Forest)
    之所以要进行随机,是要保证泛化能力,如果树都是一样的,那就没有意义了
2、随机森林的优势
  • 能够处理很高维度(特征数量多)的数据,并且不用做特征选择
  • 训练完之后可以得出特征的重要程度
  • 容易做成并行化,速度快
  • 可以做成可视化展示,便于分析

理论上越多的树得到的效果越好,但实际上树的数量超过一定的数目之后结果就处于上下浮动,不会有很大的改进了。

3、Boosting类型

Boosting思想相当的简单,大概是,对一份数据,建立M个模型(比如分类),一般这种模型比较简单,称为弱分类器(weak learner)每次分类都将上一次分错的数据权重提高一点再进行分类,这样最终得到的分类器在测试数据与训练数据上都可以得到比较好的成绩。
机器学习——随机森林(Random Forest)
每个分类器根据自身的准确性来确定各自的权重,最后求出结果
典型的算法有:AdaBoost XgBoost