bagging和随机森林
文章目录
- 前言
- 决策树
- 集成学习分类
- 1. bagging
- 2. 随机森林
- 2.1 随机森林原理
- 2.2 随机理解
- 2.3 RF 与 bagging的比较
- 2.4 随机森林的特征重要性原理
- 2.5 RF优缺点
- 2.6 RF与GBDT的区别
前言
接下来会介绍一些基于决策树的具有代表性的集成模型,如随机森林(RF),GBDT,XGBoost以及lightGBM。
本章主要介绍随机森林(Random Forest,简写RF)
,RF是bagging
集成模型的扩展变体,所以前面会简要介绍一些关于bagging的内容,后面会有专门的 “集成学习” 的章节来重点介绍bagging相关内容。
决策树
决策树
与随机森林都属于机器学习中监督学习的范畴,主要用于分类问题。
决策树算法有这几种:ID3、C4.5、CART等,基于决策树的算法有bagging、随机森林、GBDT等。
决策树
是一种利用树形结构进行决策的算法,对于样本数据根据已知条件或叫特征进行分叉,最终建立一棵树,树的叶子结节标识最终决策。新来的数据便可以根据这棵树进行判断。随机森林是一种通过多棵决策树进行优化决策的算法
。
集成学习分类
根据个体学习器之间的依赖关系,集成学习方法大致可分为两大类:
- 个体学习器之间存在强依赖关系,必须
串行
生成的序列化方法:代表是Boosting
- 个体学习器间不存在强依赖关系,可同时生成的
并行
化方法:代表是Bagging和“随机森林”(Random Forest)
1. bagging
bagging
是并行式集成学习
方法的著名代表。
bagging希望集成中的个体学习器尽可能 相互独立,而这在现实任务中几乎无法做到,更简单方便的实现是 使基学习器具有较大差异
,或者说使得基学习器更具有 “多样性
” 。
bagging基学习器的多样性通过“样本扰动
”达到,而这是通过自主采样法(bootstrap sampling)
实现
bootstrap sampling:
- 给定包含 mmm 个样本的数据集 DDD,每次随机、有放回的挑选一个样本,执行 mmm 次,最后得到一个包含 mmm 个样本的数据集 DDD。一个样本在 mmm 次采样中始终不被抽取到的概率是 (1−1m)m≈0.368(1 − \frac{1}{m} )^m ≈0.368(1−m1)m≈0.368,
limm→∞(1−1m)m→1e≈0.368lim_{m\rightarrow \infty }(1-\frac{1}{m})^{m}\rightarrow \frac{1}{e}\approx 0.368limm→∞(1−m1)m→e1≈0.368
即初始训练集中有63.2%
的样本会出现在采样集中。
bagging对分类任务使用简单投票法
,对回归任务使用简单平均法
。
从偏差-方差分解角度看,bagging主要关注降低方差
。
2. 随机森林
随机森林即由多个决策树组成,每个决策树并不相同
,在构建决策树时,我们从训练数据中有放回的随机选取一部分样本
,并且也不会使用数据的全部特征,而是随机选取部分特征
进行训练。每棵树使用的样本和特征都不相同,训练出的结果也不相同。
这么做的原因:为开始训练前,无法知道哪部分数据存在异常样本,也无法知道哪些特征最能决定分类结果,随机过程降低了两个影响因素对于分类结果的影响。
2.1 随机森林原理
随机森林由Leo Breiman(2001)提出的一种分类算法,它通过自助法(bootstrap)重采样技术,从原始训练样本集 NNN 中有放回地重复随机抽取 nnn 个样本生成新的训练样本集合训练决策树,然后按以上步骤生成 mmm 棵决策树组成随机森林,新数据的分类结果按分类树投票多少形成的分数而定。其实质是对决策树算法的一种改进,将多个决策树合并在一起,每棵树的建立依赖于独立抽取的样本。
单棵树的分类能力可能很小,但在随机产生大量的决策树后,一个测试样本可以通过每一棵树的分类结果经统计后选择最可能的分类。
随机森林大致过程如下:
- 1)从样本集中有放回随机采样选出 nnn 个样本;
- 2)从所有特征中随机选择 kkk 个特征,对选出的样本利用这些特征建立决策树(一般是CART,也可是别的或混合);
- 3)重复以上两步 mmm 次,即生成 mmm 棵决策树,形成随机森林;
- 4)对于新数据,经过每棵树决策,最后投票确认分到哪一类。
2.2 随机理解
随机森林就是通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策树
。
随机森林的名称中有两个关键词,一个是“随机”,一个就是“森林”。“森林”我们很好理解,一棵叫做树,每棵决策树都是一个分类器(假设现在针对的是分类问题),那么对于一个输入样本,NNN 棵树会有 NNN 个分类结果。而 RF 集成了所有的分类投票结果,将投票次数最多的类别指定为最终的输出,这就是一种最简单的 Bagging 思想
。那么成百上千棵就可以叫做森林了
森林好理解,那么如何理解随机呢?两个随机
随机有放回的抽样
:如果不随机有放回抽样,每棵树的训练集都一样,那么最终训练出的树分类结果也是完全一样的随机抽取m个特征
:MMM 维特征,随机抽取 k<Mk<Mk<M 个特征进行最优特征的选取:如果每个样本的特征维度为 MMM,指定一个常数 m<<Mm<<Mm<<M,随机地从 MMM 个特征中选取 mmm个特征子集,每次树进行分裂时,从这m个特征中选择最优的。
每棵树都尽最大程度的生长,并且没有剪枝过程,两个随机性的引入对随机森林的分类性能至关重要。由于它们的引入,使得随机森林不容易陷入过拟合,并且具有很好得抗噪能力(比如:对缺省值不敏感)
随机森林分类效果(错误率)与两个因素有关:
- 森林中任意两棵树的相关性:相关性越大,错误率越大
- 森林中每棵树的分类能力:每棵树的分类能力越强,整个森林的错误率越低
减小特征选择个数 mmm,树的相关性和分类能力也会相应的降低;增大 mmm,两者也会随之增大。所以关键问题是如何选择最优的 mmm(或者是范围),这也是随机森林唯一的一个参数。
2.3 RF 与 bagging的比较
random forest是bagging的扩展变体
。在以决策树为基学习器构建bagging集成的基础上,进一步在决策树训练过程中引入“随机属性选择”。
传统决策树在选择划分属性时,是在当前节点的属性集合 kkk 中选择一个最优属性;而在RF中,是先从该节点的属性集合中随机选择含有 ddd 个属性的子集,然后从该子集中选择一个最优属性用于划分。一般地,推荐 d=log2kd =log_{2}kd=log2k 或者 d=kd=\sqrt{k}d=k 。
简单来说,bagging
基学习器的多样性来自于“样本扰动
”,而RF除了“样本扰动”,还增加了“属性扰动
”,而这使得最终基学习器之间的差异度进一步增加,从而使得最终的集成模型的泛化性能进一步提升。
RF 与 bagging的比较:
- 随机森林的 收敛性与bagging相似,其实性能相对较差,因为引入了属性扰动,个体的性能往往有所降低,但随着基学习器的个数增加,随机森林能收敛到更低的泛化误差。
- 因为是考察的属性的子集,所以RF的 训练效率 常优于bagging。
RF中决策树采用的是CART决策树
作为基学习器
。
2.4 随机森林的特征重要性原理
假设有 kkk 棵树组成的RF,那么我们就需要 kkk 的自动样本集,如上面的流程图;可是我们只有 NNN 个样本组成的一个数据集 XXX ,而现在需要 kkk 个数据集,这里采用的方法是:
- 从N个样本中通过bootstrap有放回的随机抽取 NNN 个新的自主样本,组成第一个自动样本集1(对于该样本集:有可能某个样本被抽中多次),构成树分类器1,而该次未被抽到的样本组成了袋外数据。
- 自动样本集2-k也通过bootstrap有放回的随机抽取,构成树分类器2-k,每次抽样的数据集,都会用于树的构建,并且都有各自的袋外数据
小细节:每个袋外数据会对相应的树作预测,评估其误差(称为袋外误差),特征重要性度量步骤如下,对于某个特征x来说
- 1)对每一颗决策树,选择相应的袋外数据(out of bag,OOB)计算袋外数据误差,记为errOOB1
所谓袋外数据是指,每次建立决策树时,通过重复抽样得到一个数据用于训练决策树,这时还有大约1/3的数据没有被利用,没有参与决策树的建立。这部分数据可以用于对决策树的性能进行评估,计算模型的预测错误率,称为袋外数据误差;- 2)随机对袋外数据OOB所有样本的特征 XXX 加入噪声干扰(可以随机改变样本在特征 XXX 处的值),再次计算袋外数据误差,记为errOOB2;
- 3)假设森林中有 kkk 棵树,则特征x的重要性 =∑(errOOB2−errOOB1)/k=∑(errOOB2−errOOB1)/k=∑(errOOB2−errOOB1)/k
上面公式之所以能够说明特征的重要性是因为,如果加入随机噪声后,袋外数据准确率大幅度下降(即errOOB2上升)
,说明这个特征对于样本的预测结果有很大影响,进而说明重要程度比较高。
2.5 RF优缺点
RF的主要优点:
- 1) 高度并行化训练,对于大样本(样本数)训练速度有优势
- 2) 能处理特征较多的高维数据,由于可以随机选择决策树节点划分特征,这样在样本特征维度很高的时候,仍然能高效的训练模型
- 3)在训练后,可以给出各个特征对于输出的重要性
- 4) 由于采用了随机采样(样本随机,特征随机),不容易发生过拟合,训练出的模型的方差小,泛化能力强
- 5) 相对于Boosting系列的Adaboost和GBDT, RF实现比较简单
- 6)RF对异常值/缺失值不敏感,十分具有鲁棒性
RF的缺点:
- 1)在某些噪音比较大的样本集上,RF模型容易陷入过拟合
- 2)取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果
2.6 RF与GBDT的区别
- 1、组成随机森林的树
可以是分类树,也可以是回归树
;而GBDT只由回归树
组成,GBDT的会累加所有树的结果,而这种累加是无法通过分类完成的,因此GBDT的树都是CART回归树,而不是分类树 - 2、组成随机森林的树可以
并行
生成;而GBDT只能是串行
生成 - 3、对于最终的输出结果而言,随机森林采用
多数投票
等;而GBDT则是将所有结果累加起来,或者加权累加起来
- 4、随机森林对
异常值不敏感
,GBDT对异常值非常敏感
- 5、随机森林对训练集一视同仁,GBDT是
基于权值的弱分类器的集成
- 6、随机森林是通过减少
模型方差
提高性能,GBDT是通过减少模型偏差
提高性能
参考文档:
随机森林的原理分析
随机森林(Random Forest)原理小结
随机森林(原理/样例实现/参数调优)
bagging和随机森林相关推荐
- Bagging与随机森林算法原理小结
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boos ...
- R语言决策树、bagging、随机森林模型在训练集以及测试集的预测结果(accuray、F1、偏差Deviance)对比分析、计算训练集和测试集的预测结果的差值来分析模型的过拟合(overfit)情况
R语言决策树.bagging.随机森林模型在训练集以及测试集的预测结果(accuray.F1.偏差Deviance)对比分析.计算训练集和测试集的预测结果的差值来分析模型的过拟合(overfit)情况 ...
- (转载)机器学习知识点(十七)Bagging与随机森林算法原理小结
集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系.另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合.本文就对集成学习中Bagging ...
- 监督学习 | 集成学习 之Bagging、随机森林及Sklearn实现
文章目录 集成学习 1. 投票分类器 1.1 硬投票法 1.2 软投票法 2. Bagging & Pasting 2.1 包外评估 2.2 Random Patches 和 随机子空间 3. ...
- 机器学习算法总结之Bagging与随机森林
写在前面 集成学习(ensemble learning)是现在非常热门的机器学习方法,在各种大赛中都可以看到它的身影.它本身不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务, ...
- 【机器学习-西瓜书】八、Bagging;随机森林(RF)
8.3 Bagging 与 随机森林 关键词: Bagging : 随机森林: 8.3.1 Bagging 上上一节已经提到,集成学习首要任务就是要解决个体学习器 "好而不同",要 ...
- 集成学习——BAGGING和随机森林
集成学习--BAGGING和随机森林 集成学习--BAGGING和随机森林 1.什么是集成学习 2.怎样进行集成学习 3.Bagging方法 4.Bagging方法训练.预测过程 5.Bagging方 ...
- 集成学习中boosting、bagging、随机森林算法的介绍
集成学习的概念 定义:集成学习通过构建并结合多个学习器来完成学习任务. 分类:只包含同种类型的个体学习器,这样的集成是"同质"的,例如都是神经网络或者决策树:包含不同类型的个体学习 ...
- 《ISLR》学习笔记 —— Bagging、随机森林、Boosting
Bagging.随机森林.Boosting 1.Bagging(装袋算法) 2.随机森林 3.Boosting 参考 1.Bagging(装袋算法) bootstrap抽样:反复地从原始数据集中有放回 ...
- 决策树与剪枝、bagging与随机森林、极端随机树、Adaboost、GBDT算法原理详解
目录 1.决策树 1.1 ID3 1.2 C4.5 1.3 CART 1.4 预剪枝和后剪枝 2 bagging与随机森林 2.1 bagging 2.2 随机森林 3 极端随机树 4 GBDT 5 ...
最新文章
- mvc手把手教你写excel导入
- 兼容ie8_兼容IE8的一些笔记
- ios一个app调起另一个app_电商app开发价格:制作一个电商app需要多少钱?
- linux debain systemd 开机启动 nodejs 兼容原initd启动 forever 开机自启
- 实现GridView的插入功能
- JavaScript基本语法(续)
- Linux 编译安装BIND
- 我目前的主要研究方向
- java语言实现常用算法(排序和查找)
- arcgis更改图层坐标系_以图层的形式添加 x,y 坐标数据
- find命令进阶用法(一)
- 【Lingo】lingo使用
- c语言旅馆信息管理系统,C语言旅馆信息管理系统
- 使用python暴力破解压缩包密码winrar解压密码破解源代码
- WY-2000B空气质量检测系统
- LZJ流体质量计算机价格,LZJ-ⅢC型流体质量计算机技巧.doc
- MacOs在线重装系统教程
- 阿里云服务器如何购买?三种购买方式图文教程
- C语言中的puts()、putchar()、printf()
- 量化交易 米筐 策略回测总结
热门文章
- 基于阿里云服务器环境搭建到项目上线系列文章之三——安装git
- Take a Ten Minute Walk - 步行十分钟
- thinkphp6下使用phpqrcode生成二维码
- frame rate (frames per second or fps) - 帧率 - 每秒帧数
- 量化投资 — 简单均值回归策略(Mean Reverting Strategy)
- Java.JFrame
- 二次剩余推理及其求解过程
- 【大道至简】浅谈自然语言处理(NLP)学习路线(二):N-Gram模型,一文带你理解N-Gram语言模型
- mysql数据库事务类型
- html怎么折叠显示器,HTML直接页面显示器