随机森林算法原理解析
集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系。另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合。
1. bagging的原理
在集成学习原理总结中,给出bagging的原理图。
(1)、Bagging的特点“随机采样”。随机采集跟训练集个数m相同的样本,采集T次。得到采样集。
(注意:GBDT(Gradient Boosted Decision Tree)的子采样是无放回采样,而Bagging的子采样是放回采样。)
(2)、对于一个样本,在m个样本的随机采样中,每次被采集到的概率是1/m。
在m次采样中没有采集到的概率是:
P(一次都未被采集) = (1-1/m)m
对m取极限得到:
也就是说bagging的每轮随机采样中,训练集大约有36.8%的数据没被采集。
对于大约36.8%没被采样的数据,称为“袋外数据”。这些数据没参与训练集模型的拟合,但可以作为测试集用于测试模型的泛化能力,这样的测试结果称为“外包估计”。
(3)、bagging对于弱学习器没有限制,这和Adaboost一样。但是最常用的一般也是决策树和神经网络。
(4)、bagging的结合策略也比较简单,对于分类问题,通常使用简单投票法,得到最多票数的类别或者类别之一为最终的模型输出。对于回归问题,通常使用简单平均法,对T个弱学习器得到的回归结果进行算术平均得到最终的模型输出。
由于Bagging算法每次都进行采样来训练模型,因此泛化能力很强,对于降低模型的方差很有作用。当然对于训练集的拟合程度就会差一些,也就是模型的偏倚会大一些。
2. bagging算法流程
相对于Boosting系列的Adaboost和GBDT,bagging算法简单的多。
输入样本集,弱学习器算法,迭代次数T。
输出为最终的强分类器 f(x)
(1)对于 t = 1,2,...,T:
- 对训练街进行第t次随机采样,共采集m次,得到包含m个样本的采样集Dt
- 用采样集Dt训练第 t 个弱学习器Gt(x)
(2)如果是分类算法预测,则T个弱学习器投出最多票数的类别或者类别之一为最终类别。如果是回归算法,T个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。
3. 随机森林算法
RF(Random Forest)算法是对Bagging算法进行了改进。
首先,RF使用了CART决策树作为弱学习器,这让我们想到梯度提升树GBDT。
第二,在使用决策树的基础上,RF对决策树的建立做了改进,对于普通的决策树,我们会在节点上所有的n个样本特征中选择一个最优的特征来做决策树的左右子树划分,但是RF通过的随机选择节点上的一部分样本特征,这个数字小于n,假设为nsub,然后在这些随机选择的nsub(小于n)个样本特征中,选择一个最优的特征来做决策树的左右子树划分。这样进一步增强了模型的泛化能力。
除了上面两点,RF和普通的bagging算法没什么不同,下面简单总结下RF的算法。
输入为样本集,弱分类器迭代次数T。
输出为最终的强分类器f(x)
(1)对于t = 1,2,3,...,T;
- 对训练集进行第t次采样,共采集m次,得到包含m个样本的采样集Dt
- 用采样集Dt训练第t个决策树模型Gt(x),在训练决策树模型的节点的时候,在节点上所有的样本特征中选择一部分样本特征,在这些随机选择的部分样本特征中选择一个最优的特征来做决策树的左右子树划分。
(2)如果是分类算法预测,则T个弱学习器投出最多票数的类别或者类别之一为最终类别。如果是回归算法,T个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。
----------------------------------------------------------------------------------------------------------------------------------------------
随机森林是集成学习中可以和梯度提升树GBDT分庭抗礼的算法,尤其是它可以很方便的并行训练,在如今大数据大样本的的时代很有诱惑力。
随机森林是一种比较新的机器学习模型,经典的机器学习模型是神经网络。神经网络预测精确,但是计算量很大。
2001年Breiman把分类树组合成随机森林(Breiman 2001a),即在变量(列)的使用和数据(行)的使用上进行随机化,生成很多分类树,再汇总分类树的结果。随机森林在运算量没有显著提高的前提下提高了预测精度。
随机森林对多元公线性不敏感,结果对缺失数据和非平衡的数据比较稳健,可以很好地预测多达几千个解释变量的作用(Breiman 2001b),被誉为当前最好的算法之一(Iverson et al. 2008)。
随机森林顾名思义,是用随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪一类被选择最多,就预测这个样本为那一类。
随机森林算法原理:
随机森林是从原始训练样本集N中有放回地重复随机抽取k个样本生成新的训练样本集合,然后根据自助样本集生成k个分类树组成随机森林,新数据的分类结果按分类树投票多少形成的分数而定。其实质是对决策树算法的一种改进,将多个决策树合并在一起,每棵树的建立依赖于一个独立抽取的样品,森林中的每棵树具有相同的分布,分类误差取决于每一棵树的分类能力和它们之间的相关性。特征选择采用随机的方法去分裂每一个节点,然后比较不同情况下产生的误差。能够检测到的内在估计误差、分类能力和相关性决定选择特征的数目。单棵树的分类能力可能很小,但在随机产生大量的决策树后,一个测试样品可以通过每一棵树的分类结果经统计后选择最可能的分类。
在建立每一棵决策树的过程中,有两点需要注意采样与完全分裂。首先是两个随机采样的过程,random forest对输入的数据要进行行、列的采样。对于行采样,采用有放回的方式,也就是在采样得到的样本集合中,可能有重复的样本。假设输入样本为N个,那么采样的样本也为N个。这样使得在训练的时候,每一棵树的输入样本都不是全部的样本,使得相对不容易出现over-fitting。然后进行列采样,从M个feature中,选择m个(m << M)。之后就是对采样之后的数据使用完全分裂的方式建立出决策树,这样决策树的某一个叶子节点要么是无法继续分裂的,要么里面的所有样本的都是指向的同一个分类。一般很多的决策树算法都一个重要的步骤——剪枝,但是这里不这样干,由于之前的两个随机采样的过程保证了随机性,所以就算不剪枝,也不会出现over-fitting。
关于随机:
(1)训练每棵树时,从全部训练样本中选取一个子集进行训练(即bootstrap取样)。用剩余的数据进行评测,评估其误差;
(2)在每个节点,随机选取所有特征的一个子集,用来计算最佳分割方式。
算法流程:
(1)训练总样本的个数为N,则单棵决策树从N个训练集中有放回的随机抽取n个作为此单颗树的训练样本(bootstrap有放回取样)。
(2)令训练样例的输入特征的个数为M,m远远小于M,则我们在每颗决策树的每个节点上进行分裂时,从M个输入特征里随机选择m个输入特征,然后从这m个输入特征里选择一个最好的进行分裂。m在构建决策树的过程中不会改变。
注意:要为每个节点随机选出m个特征,然后选择最好的那个特征来分裂。
注意:决策树中分裂属性的两个选择度量:信息增益和基尼指数。
(3)每棵树都一直这样分裂下去,直到该节点的所有训练样例都属于同一类,不需要剪枝。由于之前的两个随机采样的过程保证了随机性,所以就算不剪枝,也不会出现over-fitting。
结果判定:
(1)目标特征为数字类型:取t个决策树的平均值作为分类结果。
(2)目标特征为类别类型:少数服从多数,取单棵树分类结果最多的那个类别作为整个随机森林的分类结果。
预测:
随机森林是用随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类,然后看看哪一类被选择最多,就预测这个样本为那一类。
说明:通过bagging有放回取样后,大约36.8%的没有被采样到的数据,我们常常称之为袋外数据。这些数据没有参与训练集模型的拟合,因此可以用来检测模型的泛化能力。
随机森林算法原理解析相关推荐
- Bagging与随机森林算法原理小结
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boos ...
- Spark 随机森林算法原理、源码分析及案例实战
图 1. Spark 与其它大数据处理工具的活跃程度比较 回页首 环境要求 操作系统:Linux,本文采用的 Ubuntu 10.04,大家可以根据自己的喜好使用自己擅长的 Linux 发行版 Jav ...
- (转载)机器学习知识点(十七)Bagging与随机森林算法原理小结
集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系.另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合.本文就对集成学习中Bagging ...
- 机器学习-集成之随机森林算法原理及实战
Bagging和随机森林 前言 集成学习是目前机器学习的一大热门方向.简单来说,集成学习就是组合许多弱模型以得到一个预测结果比较好的强模型.对于常见的分类问题就是指采用多个分类器对数据集进行预测,把这 ...
- 随机森林算法原理小结
随机森林算法 理解了bagging算法,随机森林(Random Forest,以下简称RF)就好理解了.它是Bagging算法的进化版,也就是说,它的思想仍然是bagging,但是进行了独有的改进.我 ...
- 随机森林算法原理及OpenCV应用
随机森林算法是机器学习.计算机视觉等领域内应用较为广泛的一个算法.它不仅可以用来做分类(包括二分类和多分类),也可用来做回归预测,也可以作为一种数据降维的手段. 在随机森林中,将生成很多的决策树,并不 ...
- 集成学习算法之boosting、bagging和随机森林算法原理
集成学习的定义 集成学习的主要思路是先通过一定的规则生成多个学习器,再采用某种集成策略进行组合,最后综合判断输出最终结果.一般而言,通常所说的集成学习中的多个学习器都是同质的"弱学习器&qu ...
- 基于随机森林算法的贷款违约预测模型研究(Give me some credit)
本文实验代码github:https://github.com/dengsiying/give-me-some-credit/tree/master 参考链接:从决策树到随机森林 http://www ...
- 基于随机森林算法的糖尿病数据集回归
基于随机森林算法的糖尿病数据集回归 作者介绍 1. 随机森林算法原理 1.1决策树与Bagging 1.2 随机森林算法 2. 实验过程 2.1 糖尿病数据集 2.2 实验过程 2.3 实验结果展示 ...
- 基于随机森林算法的人脸数据集分类
目录 1. 作者介绍 2. 关于理论方面的知识介绍 随机森林 3. 实验过程 3.1 数据集介绍 3.2 实验代码 3.3 运行结果 3.3 实验总结 参考 1. 作者介绍 李佳敏,女,西安工程大学电 ...
最新文章
- STM32的晶振脚(OSCIN和OSCOUT)当成普通IO来使用
- table ADR6 引起的equipment download error
- 动态链接库.so和静态链接库.a的区别
- Java常用设计模式————组合模式
- [转]Oracle中字符集的类型决定varchar2的字符长度
- python接收最新邮件_Python接收Gmail新邮件并发送到gtalk的方法
- 修改样式_Word小技巧:如何设置样式 快速修改文本格式
- 九大类背包问题专题1---01背包问题(二维和优化一维法附代码)
- pandas输出到excel_精通Pandas,从零基础到中级运用,看这一篇就够了
- Spring核心模块及功能汇总
- java 清理页面缓存数据_清除浏览器缓存的几种方法总结(必看)
- linux 函数式编程,理解函数式编程_Linux编程_Linux公社-Linux系统门户网站
- 20P37 Premiere预设200种文字标题介绍动画合集包 200 Titles Collection下载
- 旅行售货员问题及其近似算法(NPC问题)
- 微信小程序申请+开发+发布流程
- Amazon DynamoDB详解
- 地理信息科学前沿-[热词]
- elasticsearch-head设置登录用户和密码
- mysql 创建索引失败_mysql创建多列索引及优化 - 没有所谓的失败!除非你不再尝试! - PHPChina ......
- 【FCL学习第二讲】使用Assimp库导入外部模型碰撞检测
热门文章
- 图的深度优先遍历和广度优先遍历
- VMware搭建docker mastodon
- mdpi Algorithms 期刊word 模板下载
- PowerShell抓取电脑序列号
- linux中不用命令安装flash,Linux下安装flash player的方法
- python分离gif_python图片合成与分解gif方法
- GIF动态图片分解,多帧动态图分解成多张静态图片
- 笔记本计算机的连接无线网络,笔记本电脑连接无线网络受限解决方法
- javascript页面刷新的几种方法
- EXFO 收购RF over CPRI 测试方案提供商Absolute Analysis