Bagging与随机森林(RF)算法原理总结
Bagging与随机森林算法原理总结
在集成学习原理小结中,我们学习到了两个流派,一个是Boosting,它的特点是各个弱学习器之间存在依赖和关系,另一个是Bagging,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合,本文就对集成学习中的Bagging和随机森林做一个总结。
随机森林是集成学习中可以和GBDT相较衡的算法,尤其是它可以很方便地进行并行训练,在现在的大数据大样本下很有诱惑力。
1.Bagging的原理
在集成学习原理总结的Bagging原理这一块,我们画了这么一张流程图
从上图可以看出,Bagging的弱学习器之间没有像Boosting的弱学习器之间存在很强的联系,他的特点在“随机采样”,下面来介绍一下随机采样原理。
随机采样(bootsrap)就是从我们的训练集里面采集固定样本个数的样本,但是每一次采集过后,都会将采集到的样本重新放回。也就说,这一次采集到的样本,下一次人仍有可能会继续被采集到。对于我们的Bagging系列算法,一般会随机采集和训练样本数m一样个数的样本。这样得到的采样集和训练集样本个数相同,但是样本内容不同。如果我们对有m个样本训练集做T次的随机采样,则由于随机性,T个采样集各不相同。
注意到这和GBDT的子采样是不同的,GBDT的子采样是无放回采样,而Bagging的子采样是有有放回采样。

对于这36.8%的没有被采集到的数据,我们称之为袋外数据(Out of bag,简称oog)。这些数据没有参与训练模型的拟合,因此可以检验模型泛化能力。
Bagging对弱学习器没有限制,这和adaboost一样,但是最常用的同样也是决策树和随机森林。
Bagging的集合策略也比较简单,对于分类问题,采用简单投票法,得到票别数最多的那一类作为输出样本的预测类别。对于回归问题,采用简单平均法,对T个弱学习器得到的回归结果进行算数平均得到最终模型输出。
由于Bagging每次训练都进行采样来训练模型,所以模型的泛化能力很强,对于降低模型的方差很有作用。当然对于训练基地额拟合误差就会大一点,也就输模型偏倚会大一些。
2.Bagging算法流程
上一节我们对bagging算法的原理做了总结,这里就对bagging算法的流程做一个总结。相对于Boosting系列的Adaboost和GBDT,bagging算法要简单的多。

输出为最终的强分类器f(X)
1)对于t = 1,2,3,...,T:

- 如果是分类算法预测,则T个弱学习器投出最多票数的类别或者类别之一为最终类别。如果是回归算法,T个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。
 
3.随机森林算法
理解了bagging,随机森林(Random Forest 一下简称RF)就好理解了。它是Bagging算法的进化版,也就是说,它的思想仍然是bagging,但是进行了独有的改进。改进如下:
首先,RF使用了CART决策树作为弱学习器,这让我们想到了梯度提升树GBDT。
第二,在梯度提升树的基础上,RF对决策树的建立做了改进,我们会在节点上所有的n个样本特征中选择一个最优的特征来做决策树的左右子树划分,但是RF通过随机选择节点上的而一部分样本特征,这个数字小于n,假设为α,然后在这些随机选择的α个样本特征中,选择一个最优的特征来做进行决策树的左右子树划分,进一步提高了决策树的泛化能力。
说明:如果α = n时,则此时的RF的CART决策树和普通的CART决策树没有什么区别。α值越小,则模型越壮硕,当然此时对于训练集的拟合程度会变差。也就是说α越小,模型的方差会减小(即在测试集上的泛化误差减少),但是偏倚(偏差)会增大。在实际案例中,一般会通过交叉验证调参获取一个合适的m的值。
除了以上两点,RF与普通的bagging算法没有什么差别,下面来总结RF的算法流程:

2)如果时分类算法预测,则T个学习器投出最多票数的类别或者时类别之一为最终类别。如果是回归算法,T个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。
4.随机森林小结
作为一个可以高度并行并优化的算法,RF在大数据时代大有作为,这里对RF的主要优缺点做一个小小的总结 。
RF的主要优点是:
1)训练可以高度并行化,对于大数据大样本时代训练速度有优势。
2)由于随机选择决策树节点划分特征,这样在样本特征纬度很高的情况下,仍然能够高效率训练模型。
3)在训练后可以输出各个特征对于输出的重要性。
4)由于采取了随机采样,模型的泛化能力强,方差小。
5)相比于Boosting系列的GBDT和Adaboost,RF实现比较简单。
6)对于部分特征确实并不敏感。(这个不太懂!)
RF的主要缺点是:
1)在某些噪音比较大的样本,RF容易陷入过拟合。
2)取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。
5.参考资料
刘建平老师博客:
Bagging与随机森林原理小结
Bagging与随机森林(RF)算法原理总结的更多相关文章
- Bagging与随机森林算法原理小结
		
在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系.另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合. ...
 - 机器学习 —— 决策树及其集成算法(Bagging、随机森林、Boosting)
		
本文为senlie原创,转载请保留此地址:http://www.cnblogs.com/senlie/ 决策树--------------------------------------------- ...
 - sklearn_随机森林random forest原理_乳腺癌分类器建模(推荐AAA)
		
sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...
 - 机器学习总结(二)bagging与随机森林
		
一:Bagging与随机森林 与Boosting族算法不同的是,Bagging和随机森林的个体学习器之间不存在强的依赖关系,可同时生成并行化的方法. Bagging算法 bagging的算法过程如下: ...
 - 机器学习回顾篇(12):集成学习之Bagging与随机森林
		
.caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...
 - 随机森林RF、XGBoost、GBDT和LightGBM的原理和区别
		
目录 1.基本知识点介绍 2.各个算法原理 2.1 随机森林 -- RandomForest 2.2 XGBoost算法 2.3 GBDT算法(Gradient Boosting Decision T ...
 - 机器学习——Bagging与随机森林算法及其变种
		
Bagging算法: 凡解:给定M个数据集,有放回的随机抽取M个数据,假设如此抽取3组,3组数据一定是有重复的,所以先去重.去重后得到3组数据,每组数据量分别是s1,s2,s3,然后三组分别训练组合 ...
 - 04-10 Bagging和随机森林
		
目录 Bagging算法和随机森林 一.Bagging算法和随机森林学习目标 二.Bagging算法原理回顾 三.Bagging算法流程 3.1 输入 3.2 输出 3.3 流程 四.随机森林详解 4 ...
 - Bagging之随机森林
		
随机森林(Random Forest)是一种Bagging(Bootstrap Aggregating)集成算法,在样本随机(样本扰动)的基础上,进一步运用特征随机(属性扰动)的机制,得到比一般的Ba ...
 
随机推荐
- FFT专练
			
就多项式乘法这个地方不太熟 再多巩固一下. LINK:[ZJOI2014力](https://www.luogu.com.cn/problem/P3338) 把$(j-i)^2$看成一个函数 可以发现 ...
 - bzoj 4305 数列的GCD
			
LINK:数列的GCD 题意: 给出一个长度为N的数列{a[n]},1<=a[i]<=M(1<=i<=N). 现在问题是,对于1到M的每个整数d,有多少个不同的数列b[1], ...
 - 使用Scrapy编写爬虫程序中遇到的问题及解决方案记录
			
1.创建与域名不一致的Request时,请求会报错 解决方法:创建时Request时加上参数dont_filter=True 2.当遇到爬取失败(对方反爬检测或网络问题等)时,重试,做法为在解析res ...
 - ifstream
			
eof() 这个东西是返回文件是否达到尾部. 在读取错误的时候才会触发. 这点要小心,如果写在while(eof) 即使到了文件尾部, 但并没有读取错误,很有可能再次进入循环,然后出现读取错误 .ge ...
 - 2  DC电参数测试 (1)
			
基本常识: (1)Hot switch好的程序应避免使用热切换(这里热的含义类似于热插拔的“热“),热切换是指带点操作,有电流的情况下断开开关或闭合开关的瞬间,有电流通过,这会减少开关的寿命甚至直接损 ...
 - MySQL8.0.20安装配置+用Navicat连接详细教程(win10,Navicat15)
			
MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用 ...
 - Python3 网络爬虫:漫画下载,动态加载、反爬虫这都不叫事
			
一.前言 作者:Jack Cui 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知道如何去学习更加高深的知识.那 ...
 - WebService简单Demo
			
看了网上好多关于webservice的例子,基本上对初学者来说都是模棱两可云里雾里,现在,我将网上关于webservice的讲解提炼出来,通过一个最简单使用并且方便的例子,告诉大家什么是webserv ...
 - JS 下拉菜单案例
			
css代码 .nav { width: 300px; height: 400px; list-style: none; padding:; margin: 0 auto; } .nav>li { ...
 - URL中加号(+)转义问题
			
URL中加号(+)转义问题 前端通过URL传入一个参数,在后台日志中发现参数中的加号变成了空格. 前端传入a+b 后台日志a b 可以看到,+ 变成了空格. 先说结论 HTTP为了避免歧义,一些字符传 ...