这篇文章仅仅是为了帮助自己理解在分布式环境下是如何进行随机森林模型构建的,文章中记录的内容可能不太准确,仅仅是大致上的一个理解。

1.特征切分点统计

  不管是连续取值型特征还是离散取值型特征,分裂树结点时都需要寻找最优特征的最优切分点。离散型特征还好一点,对连续型特征,其取值情况多,若是遍历所有数据样本,寻找特征的所有取值情况,然后找出全部的候选分割点,计算每个候选分割点下分割的效果,这个过程的空间和时间的耗费非常大。spark中采取的策略是,在数据样本集中进行随机采样,获取一定数量的样本,依据这批样本中各个特征的取值来计算特征切分点。当然,这样做会损失模型精度,但是提升了计算效率。

2.特征取值分箱

  在spark上,不管特征是连续型还是离散型,取值都要分箱,目的是简化计算过程,连续型特征分箱还起到离散化作用。在分箱时,采取的是等频分箱。

经过1,2点中的内容,对原始样本数据进行一些预处理,后面就可以构建RF了。

3.逐层训练

  在单机环境下,构建随机森林中每棵树时采用的是递归结点的方式,对左子节点和右子结点,不断地递归构建,直接从根结点到叶子结点,如果单机内存不够用,那么每次构建一个结点时都需要从磁盘中读取一次数据。I/O操作是很费时间的,假设子树个数为m,一棵树上结点个数为n,那么I/O次数为m*n,如果在spark中也按照这种方式来构建随机森林,还有数据传输时网络带宽的开销,在数据量很大时这种方式的效率是不敢想的,因此在spark中构建随机森林时采用了“逐层训练”的方式。

  “层” 指树的深度,不同深度代表不同的层。逐层训练过程中,每从样本数据集中读取一次数据时, 就把随机森林中所有树上同一层的结点构建完毕,这样I/O操作的次数就是树的最大深度。以根节点的构造过程为例,说明逐层训练是如何进行:

  (1)样本数据集在hdfs上存储时会有多个分区partition,假设RF中有k棵树,在每个partition上首先会对每个样本进行k次0/1抽样(当然,这里也可以设置每个树使用的数据样本占总样本数的比例,不过spark默认是1,这里就以1为例来说明),以此来决定该样本是否用于构建决策树p(p=1,2,...,k);

  (2)每棵树会在某个partition所属的服务器上构建,那么在构建RF的第一层、树的根节点时,需要在属于某棵树的样本中寻找最优特征及其最优分割点,在第1,2点中已经描述了切分点选择与分箱的内容,那此时spark中的做法是,先在每个partition上统计每个特征、每个分割点下样本类别的分布情况,然后再把各个partition的统计结果汇总起来,计算结点分割后的gini指数变化(如果是采用gini指数),这样最终可以计算出最优特征及其最优分割点,通过这样的方式,可以把所有的根节点全部构建出来;

(3)根节点构建完成后,一棵树上样本会依据划分结果被标记其属于左子节点还是右子节点(这种标记在之后会不断的更新),那在左子结点和右子结点上,又会重复着根节点上进行的操作,这样可以构建RF上第二层的结点,后续的过程类似,以上就是逐层训练的大致过程。

  

  

转载于:https://www.cnblogs.com/hgz-dm/p/11454654.html

在spark上构造随机森林模型过程的一点理解相关推荐

  1. 在真实数据集上的随机森林模型参数调优

    向AI转型的程序员都关注了这个号

  2. GPU上的随机森林:比Apache Spark快2000倍

    作者|Aaron Richter 编译|VK 来源|Towards Data Science 随机森林是一种机器学习算法,以其鲁棒性.准确性和可扩展性而受到许多数据科学家的信赖. 该算法通过boots ...

  3. R语言构建随机森林模型randomForest分类模型并评估模型在测试集和训练集上的效果(accuray、F1、偏差Deviance):随机森林在Bagging算法的基础上加入了列采样(分枝特征随机)

    R语言构建随机森林模型randomForest分类模型并评估模型在测试集和训练集上的效果(accuray.F1.偏差Deviance):随机森林在Bagging算法的基础上加入了列采样(分枝特征随机) ...

  4. R语言随机森林模型:计算随机森林模型的特征重要度(feature importance)并可视化特征重要度、使用少数重要特征拟合随机森林模型(比较所有特征模型和重要特征模型在测试集上的表现差异)

    R语言随机森林模型:计算随机森林模型的特征重要度(feature importance)并可视化特征重要度.使用少数重要特征拟合随机森林模型(比较所有特征模型和重要特征模型在测试集上的表现差异) 目录

  5. 随机森林模型构建--在凯斯西储(CWRU)数据上的简单测试(1)

    随机森林模型构建测试–在凯斯西储(CWRU)数据上的简单测试(1) 文章目录 随机森林模型构建测试--在凯斯西储(CWRU)数据上的简单测试(1) 1. 实验数据集说明 2. 测试数据说明 3. 随机 ...

  6. kaggle项目:基于随机森林模型的心脏病患者预测分类!

    公众号:尤而小屋 作者:Peter 编辑:Peter 大家好,我是Peter~ 新年的第一个项目实践~给大家分享一个新的kaggle案例:基于随机森林模型(RandomForest)的心脏病人预测分类 ...

  7. R语言实现可理解的随机森林模型(Random Forest)——iml包

    Random Forest 解释模型 1. 介绍 2. 理解随机森林运行机理 2.1导入需要的包 2.2 构建随机森林模型 2.3 RF特征重要性: 2.4 特征对预测结果的影响 2.5 交互作用 2 ...

  8. 大数据分析案例-基于随机森林模型对北京房价进行预测

    目录 1.项目背景 2.项目简介 2.1数据说明 2.2技术工具 3.算法原理 4.项目实施步骤 4.1理解数据 4.2数据预处理 4.2.1缺失值处理 4.2.2重复值处理 4.2.3异常值处理 4 ...

  9. 随机森林模型_观点速递65|使用随机森林模型模拟短期空气污染效应:基于交通和气象数据...

    概念 · 解读 随机森林:机器学习中的一种集成算法,它属于"装袋"类型,通过组合多棵决策树,最终结果通过投票或取均值,使得整体模型的结果具有较高的精确度和稳定性. 决定系数(R2) ...

最新文章

  1. 学术-数学:哥德巴赫猜想
  2. anaconda下tensorflow安装遇到的问题记录及解决办法
  3. 搜狗浏览器挡住了任务栏,上下显示不全
  4. 移动端HTML5框架
  5. go 修改结构体方法_Go36-13-结构体及其方法
  6. 超时尚的UI电子商务PSD分层模板,临摹学习必备
  7. radiobutton 设置为不能点击_谷歌要求:安卓 11 相机默认不能设置为“美颜”模式...
  8. hibernate 实现数据库查询
  9. 用matlab数学建模报告,Matlab数学建模实验报告.doc
  10. 传奇世界3D手游电脑版使用教程:无需安卓模拟器,tcgames完美适配
  11. HOUR 13 Developing Advanced References and Pointer
  12. 2015CGMC 参赛游戏名单
  13. 网站如何做引流推广?SEO引流效果好吗?
  14. 程序员自学理财8~理财必读《富人思维》精典笔记
  15. 工程力学(17)—应力状态和强度理论
  16. 日本现场常用日语词汇
  17. python程序设计是什么专业-那门用Python讲授的程序设计课程能带给学生什么?
  18. Linux最常用命令50条【呕心沥血呐,望用之取之】
  19. Android获取设备的唯一识别码|设备号|序号|UUID
  20. 树莓派 EC20 mini pcie 开机自动拨号

热门文章

  1. 零基础Python培训入门 教你认识下这些基础内容
  2. 4. Brackets 前端编辑器试用
  3. mongoengine中queryset触发网络访问机制剖析
  4. 如何使用Azure ML Studio开启机器学习
  5. centos中用MySQL创建新表_CentOS下使用Shell批量创建数据库表
  6. DSP的GEL文件介绍
  7. char str[]与char *str的区别
  8. latex 文章前头引用包
  9. python以及MATLAB终止循环的快捷键
  10. 张量功率谱CAMB参数调试