1.什么是随机森林
顾名思义,是用随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决 策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪一 类被选择最多,就预测这个样本为那一类。
我们可以这样比喻随机森林算法:每一棵决策树就是一个精通于某一个窄领域的专家(因为我们 从M个特征中选择m个让每一棵决策树进行行学习),这样在随机森林中就有了了很多个精通不不同领 域的专家,对一个新的问题(新的输入数据),可以用不不同的角度去看待它,最终由各个专家, 投票得到结果

2.Bootstraping(随机且有放回地抽取)
Leo Breiman于1994年提出的Bagging(又称Bootstrap aggregation,引导聚集)是最基本的集成技术之一。Bagging基于统计学中的bootstraping(自助法),该方法使得评估许多复杂模型的统计数据更可行。
2.1bootstrap方法的流程如下:假设有尺寸为N的样本X。我们可以从该样本中有放回地随机均匀抽取N个样本,以创建一个新样本。换句话说,我们从尺寸为N的原样本中随机选择一个元素,并重复此过程N次。选中所有元素的可能性是一样的,因此每个元素被抽中的概率均为1/N。
2.2假设我们从一个袋子中抽球,每次抽一个。在每一步中,将选中的球放回袋子,这样下一次抽取是等概率的,即,从同样数量的N个球中抽取。注意,因为我们把球放回了,新样本中可能有重复的球。让我们把这个新样本称为X1。
重复这一过程M次,我们创建M个bootstrap样本X1,……,XM。最后,我们有了足够数量的样本,可以计算原始分布的多种统计数据。

3. Bagging

理解了bootstrap概念之后,我们来介绍bagging。
假设我们有一个训练集X。我们使用bootstrap生成样本X1, …, XM。现在,我们在每个bootstrap样本上分别训练分类器ai(x)。最终分类器将对所有这些单独的分类器的输出取均值。在分类情形下,该技术对应投票(voting):


4.袋外误差(OOBE)
我们知道,在构建每棵树时,我们对训练集使用了不同的bootstrap sample(随机且有放回地抽取)。所以对于每棵树而言(假设对于第k棵树),大约有1/3的训练实例没有参与第k棵树的生成,它们称为第k棵树的oob样本。
而这样的采样特点就允许我们进行oob估计,它的计算方式如下:
1对每个样本,计算它作为oob样本的树对它的分类情况(约1/3的树);
2然后以简单多数投票作为该样本的分类结果;
3最后用误分个数占样本总数的比率作为随机森林的oob误分率。

示意图上方为原始数据集。我们将其分为训练集(左)和测试集(右)。在测试集上,我们绘制一副网格,完美地实施了分类。现在,我们应用同一副网格于测试集,以估计分类的正确率。我们可以看到,分类器在4个未曾在训练中使用的数据点上给出了错误的答案。而测试集中共有15个数据点,这15个数据点未在训练中使用。因此,我们的分类器的精确度为11/15 * 100% = 73.33%.

总结一下,每个基础算法在约63%的原始样本上训练。该算法可以在剩下的约37%的样本上验证。袋外估计不过是基础算法在训练过程中留置出来的约37%的输入上的平均估计。

5.随机森林流程
5.1设样本数等于n,特征维度数等于d。
5.2选择集成中单个模型的数目M。
5.3对于每个模型m,选择特征数dm < d。所有模型使用相同的dm值。
5.4对每个模型m,通过在整个d特征集合上随机选择dm个特征创建一个训练集。
5.5训练每个模型。
5.6通过组合M中的所有模型的结果,应用所得集成模型于新输入。

 

spark 机器学习 随机森林 原理(一)的更多相关文章

  1. spark 机器学习 随机森林 实现(二)

    通过天气,温度,风速3个特征,建立随机森林,判断特征的优先级结果 天气 温度 风速结果(0否,1是)天气(0晴天,1阴天,2下雨)温度(0热,1舒适,2冷)风速(0没风,1微风,2大风)1 1:0 2 ...

  2. 使用基于Apache Spark的随机森林方法预测贷款风险

    使用基于Apache Spark的随机森林方法预测贷款风险   原文:Predicting Loan Credit Risk using Apache Spark Machine Learning R ...

  3. Spark mllib 随机森林算法的简单应用(附代码)

    此前用自己实现的随机森林算法,应用在titanic生还者预测的数据集上.事实上,有很多开源的算法包供我们使用.无论是本地的机器学习算法包sklearn 还是分布式的spark mllib,都是非常不错 ...

  4. 机器学习——随机森林,RandomForestClassifier参数含义详解

    1.随机森林模型 clf = RandomForestClassifier(n_estimators=200, criterion='entropy', max_depth=4) rf_clf = c ...

  5. 【Spark机器学习速成宝典】模型篇06随机森林【Random Forests】(Python版)

    目录 随机森林原理 随机森林代码(Spark Python) 随机森林原理 参考:http://www.cnblogs.com/itmorn/p/8269334.html 返回目录 随机森林代码(Sp ...

  6. 【机器学习实战】第7章 集成方法(随机森林和 AdaBoost)

    第7章 集成方法 ensemble method 集成方法: ensemble method(元算法: meta algorithm) 概述 概念:是对其他算法进行组合的一种形式. 通俗来说: 当做重 ...

  7. 什么是机器学习的分类算法?【K-近邻算法(KNN)、交叉验证、朴素贝叶斯算法、决策树、随机森林】

    1.K-近邻算法(KNN) 1.1 定义 (KNN,K-NearestNeighbor) 如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类 ...

  8. Spark随机森林实现学习

    前言 最近阅读了spark mllib(版本:spark 1.3)中Random Forest的实现,发现在分布式的数据结构上实现迭代算法时,有些地方与单机环境不一样.单机上一些直观的操作(递归),在 ...

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

    1.什么是随机采样? Bagging可以简单的理解为:放回抽样,多数表决(分类)或简单平均(回归): Bagging的弱学习器之间没有boosting那样的联系,不存在强依赖关系,基学习器之间属于并列 ...

随机推荐

  1. C#中 ??、 ?、 ?: 、?.、?[ ] 问号

    1. 可空类型修饰符(?) 引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; 是正确的,int i=null; 编译器就会报错.为了使值类型也 ...

  2. 预测分析建模 Python与R语言实现

    预测分析建模 Python与R语言实现 目录 前言 第1章 分析与数据科学1第2章 广告与促销10第3章 偏好与选择24第4章 购物篮分析31第5章 经济数据分析42第6章 运营管理56第7章 文本分 ...

  3. unittest中的TestLoader使用

    一:unittest中的TestLoader使用说明 第一步:unittest增加TestSuit() suite=unittest.TestSuite() 第二步:unittest增加Testloa ...

  4. tomcat一闪而过,无法开启

    记事本打开startup.bat,找到最后一句话::end,我们知道end表示结束的意思,:end是一个标记,我们在后面加上一句pause,然后启动该脚本 正常情况下回像下图显示 如果一闪而过的话,可 ...

  5. [LeetCode] 45. Jump Game II 跳跃游戏 II

    Given an array of non-negative integers, you are initially positioned at the first index of the arra ...

  6. java通过下划线数字字面量增加可读性:10_00_00表示100000

    用法 int x1 = 2_014; // Underscore in deciaml format int x2 = 2___014; // Multiple consecutive undersc ...

  7. 进程间之异步通信:信号Signal

    信号 信号是进程间通信机制中唯一的异步通信机制:信号机制是进程间传递消息的一种机制,是异步进程中通信的一种方式 一个进程一旦接收到信号就会打断原来的程序执行流程来处理信号 内核处理一个进程收到的软中断 ...

  8. 最新 途牛java校招面经 (含整理过的面试题大全)

    从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.途牛等10家互联网公司的校招Offer,因为某些自身原因最终选择了途牛.6.7月主要是做系统复习.项目复盘.LeetCode ...

  9. SpringBoot常用注解(二)

    这是整个 web 工程的入口,也是与其他框架最大的不同之处.这里主要关注 @SpringBootApplication注解,它包括三个注解: @Configuration:表示将该类作用springb ...

  10. 第7/7Beta冲刺

    1.团队成员 成员姓名 成员学号 秦裕航 201731062432(组长) 刘东 201731062227 张旭 201731062129 王伟 201731062214 2.SCRU部分 2.1各成 ...