• Random Forest,顾名思义 Random 就是随机抽取; Forest 就是说这里不止一棵树,而由 一群决策树组成的一片森林 ,连起来就是用随机抽取的方法训练出一群决策树来完成分类任务。
  • RF用了两次随机抽取, 一次是对训练样本的随机抽取; 另一次是对变量 (特征) 的随机抽取。这主要是为了解决样本数量有限的问题
  • RF的核心是由弱变强思想的运用。每棵决策树由于只用了部分变量、部分样本训练而成, 可能单个的分类准确率并不是很高。 但是当一群这样的决策树组合起来分别对输入数据作出判断时, 可以带来较高的准确率。有点类似于俗语三个㚖皮匠顶个诸葛亮。
  • 随机森林有两个重要参数:树节点预选的变量个数;随机森林中树的个数

随机森林思想来源

PAC  → Bootstrap  → Bagging  → Random Forest  ← CART  \text { PAC } \rightarrow \text { Bootstrap } \rightarrow \text { Bagging } \rightarrow \text { Random Forest } \leftarrow \text { CART }  PAC → Bootstrap → Bagging → Random Forest ← CART

PAC(Probably Approximately Correct)

  • 在该模型中, 若存在一个多项式级的学习算法来识别一组概念, 并且识别正确率很高, 那么这组概念是强学习算法; 而如果学习算法识别一组概念的正确率仅比随机猜测略好, 那么这组概念是弱学习算法。
  • 如果可以将弱学习算法提升成强学习算法, 那么我们就只要找到一个弱学习算法, 然后把它提升成强学习算法, 而不必去找通常情况下很难获得的强学习算法。

Bootstrap

  • 根据PAC由弱得到强的思想, 统计学著名学者Bradley Efron在 1979年提出了Bootstraps算法, 这个名字来自于成语 “pull up by your own bootstraps”, 意思是依靠自己的资源, 称为自助法。
  • 它的思想就是当样本数量不大, 分布情况未知时, 可以从原始样本中随机抽取的多个样本情况 (弱学习) 来估计原样本真实的分布情况。它是非参数统计中一种重要的估计统计量方差进而进行区间估计的统计方法。
  • 其基本步骤如下:
    – (1) 从原始数据集中, 有放回地抽样一定数量的样本
    – (2)根据抽出的样本计算给定的统计量 T \mathrm{T} T
    – (3)重复上述N次 (一般大于1000), 得到 N N N 个统计量 T \mathrm{T} T
    – (4)计算上述 N \mathrm{N} N 个统计量 T \mathrm{T} T 的样本方差, 得到统计量的方差
  • 0.632自助法
    假设给定的数据集包含 d \mathrm{d} d 个样本。该数据集有放回地抽样 d \mathrm{d} d 次, 产生 d \mathrm{d} d 个样本的训练集。原数据中的某些样本很可能在该样本集中出现多次。显然每个样本被选中的概率是 1 / d 1 / \mathrm{d} 1/d,因此未被选中的概率就是 ( 1 − 1 / d ) (1-1/d) (1−1/d),这样一个样本在训练集中没出现的概率就是 d \mathrm{d} d 次都未被选中的概率, 即 ( 1 − 1 / d ) d (1-1/d) ^d (1−1/d)d。当 d d d 趋于无穷大时, 这一概率就将趋近于 e − 1 = 0.368 e^{-1}=0.368 e−1=0.368,所以留在训练集中的样本大概就占原来数据集的 63.2 % 63.2 \% 63.2% 。

Bagging

  • Bagging 又叫bootstrap aggregation, 是Breiman在1993 年提出的方法, 第一步就是根据Bootstrap进行抽样。
  • 基本的步骤:
    – (1)从样本集中用Bootstrap采样选出 n \mathrm{n} n 个样本
    – (2)在所有属性上, 对这 n \mathrm{n} n 个样本建立分类器 (CART or SVM or …)
    – (3)重复以上两步m次, i.e. 建立 m m m 个分类器 (CART or SVM or … )
    – (4)将数据放在这m个分类器上跑, 最后vote看到底分到哪一类
  • 这种方法可以大大降低每个分类器的不稳定性, 从而带来较高的预测准确率。从这个方法再往下发展就是随机森林了

随机森林

  • 随机森林是以决策树为基本分类器的一个集成学习模型, 它包含多个由Bagging集成学习技术训练得到的决策树。
  • Random Forests不同的是: 在Bagging的基础上, 使用一种改进的树学习算法, 在每个候选分裂的学习过程中, 选择特征值的一个随机子集。有时被称为 “feature bagging”。
  • 该算法用随机的方式建立起一棵棵决策树, 然后由这些决策树组成一个森林, 其中每棵决策树之间没有关联, 当有一个新的样本输入时, 就让每棵树独立的做出判断, 按照多数原则决定该样本的分类结果。

构建随机森林

(1) 从样本集中用bagging采样选出 n \mathrm{n} n 个样本, 预建立CART
(2) 在树的每个节点上, 从所有属性中随机选择 k \mathrm{k} k 个属性, 选择出一个最佳分割属性作为节点(RI 和 RC )
(3) 重复以上两步m次, i.e. 构建m棵CART (不剪枝)
(4) 这 m \mathrm{m} m 个CART形成Random Forest

利用随机森林预测

(1) 向建立好的随机森林中输入一个新样本
(2) 随机森林中的每棵决策树都独立的做出判断
(3) 将得到票数最多的分类结果作为该样本最终的类别

影响性能的因素

  • 森林中单棵树的分类强度(Strength):每棵树的分类强度越大, 则随机森林的分类性能越好
  • 森林中树之间的相关度(Correlation):树之间的相关度越大,则随机森林的分类性能越差。

【随机森林】random forests 简单介绍相关推荐

  1. 随机森林 (Random Forests) 简单介绍与应用

    1 集成方法(Ensemble methods) 1.1 什么是集成方法 简单来说,集成方法 就是组合多个模型,以获得更好效果. 1.2 两种集成方法 平均法(averaging methods):也 ...

  2. 统计学中的Bootstrap方法(Bootstrap抽样)用来训练bagging算法,如果随机森林Random Forests

    统计学中的Bootstrap方法(Bootstrap抽样)用来训练bagging算法,如果随机森林Random Forests 提示:系列被面试官问的问题,我自己当时不会,所以下来自己复盘一下,认真学 ...

  3. 随机森林 – Random forest

    随机森林 – Random forest 随机森林是一种由决策树构成的集成算法,他在很多情况下都能有不错的表现. 本文将介绍随机森林的基本概念.4 个构造步骤.4 种方式的对比评测.10 个优缺点和 ...

  4. 【机器学习】随机森林 – Random forest

    文章目录 一.随机森林是什么? 1. 随机森林是一种集成学习算法 2. 随机森林的基学习器是决策树 二.随机森林 – Random Forest | RF 三.构造随机森林的 4 个步骤 四.随机森林 ...

  5. 初勘数据处理之预测算法(随机森林random forest)附matlab源码

    初勘数据处理之预测算法(随机森林random forest)附matlab源码 集成学习方法 集成学习方法,是整合多个分类方法的预测结果,以提高分类准确率.集成学习方法先用训练数据构建一组基分类器,再 ...

  6. 机器学习方法(六):随机森林Random Forest,bagging

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 前面机器学习方法(四)决策树讲了经典 ...

  7. 随机森林Random Forest,bagging

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld.  技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 前面机器学习方法(四)决策树讲了经 ...

  8. 通俗解读随机森林Random Forest

    通俗解读随机森林Random Forest 写在前面 1. 什么是集成学习 2. 什么是Bagging 3 随机森林 写在前面 声明:本文主要参考的是周志华老师的<机器学习>西瓜书,参杂了 ...

  9. 【ML】随机森林(Random Forest) 从入门到放弃再到掌握

    目录 集成学习 决策树 Boosting Adaboost GBDT 梯度提升决策树是属于boosting集成学习的一种方法,通过构建多颗CART回归树,每一轮利用上一轮学习器的残差进行树的创建.该残 ...

最新文章

  1. 【JOURNAL】城邦组诗之十二 - 心肠
  2. SAX解析XML文件
  3. 关于ACE_Svc_Handler
  4. 局域网物理机与虚拟机的互通访问
  5. MySQL使用CREATE INDEX创建索引
  6. CSS 实现三角形、梯形、等腰梯形
  7. query的list()和iterate()区别 面试题
  8. 教你如何防止电脑插入u盘后自动运行
  9. kotlin中既继承又实现_Kotlin程序| 解决继承中的主要冲突的示例
  10. android studio连接服务端代码,Android studio - 无法连接到LDAP服务器(示例代码)
  11. Apache的多处理模块MPM
  12. html怎么把view变成标签_html单选按钮默认选中怎么做?input标签的单选按钮用法实例...
  13. 国产系统linux硬盘分区,Linux系统硬盘分区方案推荐
  14. mysql时间加减运算
  15. 【车牌识别】基于matlab车牌识别【含Matlab源码 417期】
  16. c语言编程技术列表,C语言系统编程技术点
  17. TypeScript学习日记
  18. Python常用字符编码
  19. 多云时代下数据管理技术_建立一个混合的多云数据湖并使用Apache Spark执行数据处理...
  20. 航空工业直升机与泰雷兹签订战略合作备忘录

热门文章

  1. 【笔记】入门级All in one系列(二):入门级家用AIO需求分析参考
  2. 安装、配置和测试Asterisk过程中遇到的问题及解决方法
  3. sharepoint2010 匿名访问
  4. stm32 控制 lcd1602
  5. 【IVI】CarService启动
  6. 给一个培训还是自学的理由
  7. 【python】使用turtle绘制立体五角星
  8. 调用EnableWindow禁止窗口接收输入
  9. nux下mysql的安装,配置,主从配置,卸载
  10. 胡渊鸣大神:import一个“太极”库,让Python代码提速100倍!