随机森林算法简介

今天在练习 Kaggle 的项目时,发现网上很多博主都选择用 RandomForest (随机森林)算法训练模型,虽然最后参照他们的写法我也写出来了,但是没有很明白其中的原理,在此打算深入了解一下这个算法。

1. 什么是随机森林

随机森林是通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策树,而它的本质属于机器学习的一大分支——集成学习(Ensemble Learning)方法。
在集成学习中,主要分为 bagging 算法 和 boosting 算法,而这里的随机森林则主要运用了 bagging 算法。也就是说

Bagging + 决策树 = 随机森林

随机森林算法简介_第1张图片

1.1 集成学习

集成学习通过建立几个模型组合的来解决单一预测问题。它的工作原理是生成多个分类器/模型,各自独立地学习和作出预测。这些预测最后结合成单预测,因此优于任何一个单分类的做出预测。
本文主要介绍集成学习中的 bagging 算法:
bagging的名称来源于 ( Bootstrap AGGregatING ),意思是自助抽样集成,这种方法将训练集分成m个新的训练集,然后在每个新训练集上构建一个模型,各自不相干,最后预测时我们将这个m个模型的结果进行整合,得到最终结果。整合方式就是:分类问题用majority voting,回归用均值。

Bagging 算法的过程:
1、从原始样本集中使用Bootstraping方法随机抽取n个训练样本,共进行k轮抽取,得到k个训练集。(k个训练集之间相互独立,元素可以有重复)
2、对于k个训练集,我们训练k个模型(这k个模型可以根据具体问题而定,比如决策树,knn等)
3、对于分类问题:由投票表决产生分类结果;

Bagging 算法的特点:

  1. Bagging采用的是Bootstrap随机有放回抽样;
  2. Bagging使用的是均匀取样,每个样本权重相等;
  3. Bagging所有的预测函数的权重相等;
  4. Bagging各个预测函数可以并行生成;

1.2 决策树

一颗决策树是由一系列的决策组合而成的,可用于数据集的观测值进行分类 。
随机森林算法简介_第2张图片

2. 为什么要使用随机森林

随机森林相当于 Bagging 的进化版,它机器学习方法中的 Leatherman(多功能折叠刀)。你几乎可以把任何东西扔给它。它在估计推断映射方面做的特别好,不需要类似SVM一样过多的调参(这点对时间紧迫的朋友非常好)。

3. 随机森林应用举例

由于网上有很多优秀的案例,我在这里推荐几个我觉得不错的案例

  1. 收入层次预测
  2. 随机森林分类方面运用

随机森林凭借着准确率方面的优势被越来越多的人青睐,我对此的了解还很浅薄,后续有新的发现还会来这里继续补充的。感谢一下博主分享他们宝贵的经验

[1] 随机森林算法入门(python)
[2] 随机森林(Random Forest)算法原理
[3] 机器学习总结(lecture 15)算法:随机森林Random Forest(RF)
[4] [Machine Learning & Algorithm] 随机森林(Random Forest)
[5] python_sklearn机器学习算法系列之RandomForest(随机森林算法)

你可能感兴趣的:(机器学习,决策树,机器学习,算法)