在 CART 分类回归树的基础之上,我们可以很容易的掌握随机森林算法,它们之间的区别在于,CART 决策树较容易过拟合,而随机森林可以在一定程度上解决该问题。

随机森林的主要思想是:使用随机性产生出一系列简单的决策树,并组合它们的预测结果为最终的结果,可谓三个臭皮匠赛过一个诸葛亮,下面我们就来具体了解一下。

产生随机森林的具体步骤

产生随机森林的步骤大致为三步

  1. 准备样本
  2. 产生决策树
  3. 循环第 1 、2 步,直到产生足够的决策树,一般为上百个

在第 1 步,它是一个可放回抽样,即所产生的样本是允许重复的,这种抽样又被称为 Bootstrap,例如我们有以下 dummy 数据

在做完 Bootstrap 之后,可能的样本数据如下

可见,样本数据中,第 3 条和第 4 条样本是一样的,都对应的是原始数据中的第 4 条。

接下来,就是要使用上面的样本数据来产生决策树了,产生决策树的方法和 CART 基本一致,唯一的不同地方在于,节点的构建不是来自于全部的候选特征,而是先从中随机的选择 n 个特征,在这 n 个特征中找出一个作为最佳节点。

举个例子,假设 n = 2,且我们随机选择了「血液循环正常」和「血管堵塞」这两个特征来产生根节点,如下:

我们将在上述两个特征中选择一个合适的特征作为根节点,假设在计算完 Gini 不纯度之后,「血液循环正常」这个特征胜出,那么我们的根节点便是「血液循环正常」,如下图所示

接下来我们还需要构建根节点下面的节点,下一个节点将会在剩下的「胸口疼痛」、「血管堵塞」和「体重」三个特征中产生,但我们依然不会计算所有这 3 个特征的 Gini 不纯度,而是从中随机选择 2 个特征,取这 2 个特征中的 Gini 不纯度较低者作为节点。

例如我们随机选到了「胸口疼痛」和「体重」这两列,如下:

假设此时「体重」的 Gini 不纯度更低,那么第 2 个节点便是「体重」,如下图:

继续下去,我们便产生了一棵决策树。

随机森林是多棵决策树,在产生完一棵决策树后,接着会循环执行上述过程:Bootstrap 出训练样本,训练决策树,直到树的数量达到设置值——通常为几百棵树。

随机森林的预测

现在我们产生了几百棵树的随机森林,当我们要预测一条数据时,该怎么做呢?我们会聚合这些树的结果,选择预测结果最多的那个分类作为最终的预测结果。

例如我们现在有一条数据:

该条数据被所有树预测的结果如下:

上述结果聚合后为:

取最多的那项为最终的预测结果,即 Yes——该病人被诊断为患有心脏病。

以上,随机森林的两个过程:Bootstrap 和 Aggregate 又被称为 Bagging

总结

本文我们一起学习了随机森林的算法,和 CART 决策树比起来,它主要被用来解决过拟合问题,其主要的思想为 Bagging,即随机性有助于增强模型的泛化(Variance) 能力。

参考:

  • Random Forests (http://1t.click/bh8X)

相关文章:

  • 决策树算法之分类回归树 CART(Classification and Regression Trees)【1】(http://1t.click/bhSm)
  • 决策树算法之分类回归树 CART(Classification and Regression Trees)【2】(http://1t.click/bhSn)

bootstrap算法_决策树算法之随机森林相关推荐

  1. 决策树 随机森林 xgboost_决策树算法之随机森林

    在 CART 分类回归树的基础之上,我们可以很容易的掌握随机森林算法,它们之间的区别在于,CART 决策树较容易过拟合,而随机森林可以在一定程度上解决该问题. 随机森林的主要思想是:使用随机性产生出一 ...

  2. r语言 C4.5 剪枝是用什么算法_决策树算法

    决策树算法,从名字中也可以理解到该算法是以树形结构建立模型的,该算法主要根据分层和分割的方式将预测变量空间划分为一系列简单区域.对某个给定的待预测的观测值,用它所属区域中训练的平均值或众数进行预测.决 ...

  3. python图像分割算法_用python实现随机森林图像分割

    下面是python中的一个随机森林实现.在 如果您需要它进行图像分割,我建议您使用ITKsnap,监督学习,分割包,它使用随机森林,并在python中实现. 这很简单,你可以插入或定义你的标签和训练你 ...

  4. 基于java的随机森林算法_基于Spark实现随机森林代码

    本文实例为大家分享了基于Spark实现随机森林的具体代码,供大家参考,具体内容如下 public class RandomForestClassficationTest extends TestCas ...

  5. gis 路径拟合算法_决策树算法十问及经典面试问题

    简介和 算法 决策树是机器学习最常用的算法之一,它将算法组织成一颗树的形式.其实这就是将平时所说的if-then语句构建成了树的形式.这个决策树主要包括三个部分:内部节点.叶节点和边.内部节点是划分的 ...

  6. 机器学习-有监督学习-分类算法:决策树算法【CART树:分类树(基于信息熵;分类依据:信息增益、信息增益率、基尼系数)、回归树(基于均方误差)】【损失函数:叶节点信息熵和】【对特征具有很好的分析能力】

    一.决策树概述 注:生产实践中,不使用决策树,太简单,而是使用决策树的升级版:集成学习算法. 集成学习算法有: Random Forest(随机森林) Extremely Randomized For ...

  7. 数据挖掘算法(logistic回归,随机森林,GBDT和xgboost)-腾讯云社区

    机器学习就是样本中有大量的x(特征量)和y(目标变量)然后求这个function.(了解更多可以看: https://zhuanlan.zhihu.com/p/21340974?refer=mlear ...

  8. CART分类树算法与随机森林

    说明:本博客是学习<python机器学习算法>赵志勇著的学习笔记,其图片截取也来源本书. CART分类树算法与随机森林 对于一个复杂的分类问题,训练一个复杂的分类模型通常比较耗时,同时为了 ...

  9. 集成学习、Bagging算法、Bagging+Pasting、随机森林、极端随机树集成(Extra-trees)、特征重要度、包外评估

    集成学习.Bagging算法.Bagging+Pasting.随机森林.极端随机树集成(Extra-trees).特征重要度.包外评估 目录

最新文章

  1. 全球主要城市经纬度api
  2. Dubbo和SpringCloud的区别
  3. vtk鼠标不交互_vtk 各种不同的鼠标交互方式
  4. mysql云数据库 磁盘利用率_云数据库MySQL参数的那些事儿
  5. UVA1585 Score
  6. 虚拟资源拳王公社:上班族做什么兼职副业赚钱,大学生最适合做什么兼职副业
  7. PHP修改表格(增删改)
  8. char数组转换成字符串_将字符串转换为char数组java –将字符串转换为char
  9. spark相关原理介绍
  10. U盘文件消失没有被隐藏却占内存的几种解决方案
  11. 【01】分别使用头插法和尾插法建立单链表
  12. MySQL查年龄18到22的信息_Mysql查询SQL相关总结(根据生日以及身份证查询年龄以及性别区域等)...
  13. php批量解密decoder,IonCube v8.3 Decoder解密工具
  14. 数据库设计三大范式原则
  15. 手机写python脚本_用Python写王者荣耀刷金币脚本
  16. 毕业设计 - 基于java web的在线考试系统【源码+论文】
  17. python 矩阵类型转换_Python 矩阵转置的几种方法小结
  18. Git常用命令学习手册
  19. 查看Linux镜像的版本
  20. MapReduce的分片机制源码解析

热门文章

  1. 从网络IO看高性能框架
  2. MySQL事务控制语句
  3. python通过hive transform处理数据
  4. 深入学习consul
  5. 新的博客 bincoding.github.io
  6. windows使用git时出现:warning: LF will be replaced by CR
  7. jquery动态改变onclick属性导致失效的问题解决方法
  8. Dictionary帮助类
  9. 创建简单的Flex组件
  10. 利用Crawlspider爬取腾讯招聘数据(全站,深度)