机器学习算法总结之Bagging与随机森林
写在前面
集成学习(ensemble learning)是现在非常热门的机器学习方法,在各种大赛中都可以看到它的身影。它本身不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务,所以常常比单一学习器具有更为显著的泛化性能。根据个体学习器的生成方式,目前的集成学习主要可以分为两类:①个体学习器之间存在强依赖关系、必须串行生成的序列化方法,代表是Boosting;②个体学习器之间不存在强依赖关系、可同时生成并行化方法,代表是Bagging。
1. Bagging的原理
Bagging的原理如上图,采用的是一种“自助采样法(bootstrp sampling)”:对于m个样本的原始训练集,我们每次先随机采集一个样本放入采样集,接着把该样本放回,也就是说下次采样时该样本仍有可能被采集到,这样采集m次,最终可以得到m个样本的采样集,由于是随机采样,这样每次的采样集是和原始训练集不同的,和其他采样集也是不同的,这样得到多个不同的弱学习器。
注意这里的采样是有放回的采样,对于一个含有m个训练样本的训练集,通过数学推导可知,约有63.2%的样本会出现在采样集中。另外值得一提的是,剩下的36.8%的样本可以用作验证集来对泛化性能进行“包外估计”(out-of-bag estimation)
PS. 关于包外估计概率的推导。
对于m个样本的原始训练集,每个样本被选中的概率为1/m,没有被选中的概率为(1-1/m),则m次都没被采样的概率为
。当m趋向于无穷时,有:
通过上述步骤得到不同的基学习器之后,再将他们进行结合。对于分类问题,通常使用简单投票法,得到最多票数的类别或者类别之一为最终的模型输出。对于回归问题,通常使用简单平均法,对T个弱学习器得到的回归结果进行算术平均得到最终的模型输出。
由于Bagging算法每次都进行采样来训练模型,因此泛化能力很强,对于降低模型的方差很有作用。当然对于训练集的拟合程度就会差一些,也就是模型的偏差会大一些。
2.Bagging算法
输入:样本集D={(x,y1),(x2,y2),...(xm,ym)},弱学习器算法, 弱分类器迭代次数T。
输出:最终的强分类器f(x)
流程:
1)对于t=1,2...,T:
a)对训练集进行第t次随机采样,共采集m次,得到包含m个样本的采样集Dt
b)用采样集Dt训练第t个弱学习器Gt(x)
2) 如果是分类算法预测,则T个弱学习器投出最多票数的类别或者类别之一为最终类别。如果是回归算法,T个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。
3.随机森林
随机森林(RF)是Bagging的一个改进版本:RF在以决策树为基学习器构建一个Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。
为什么叫“随机”森林?
第一点是样本的选取是随机的,在前面bagging过程有详细说明。
第二点是节点选取随机。传统决策树在选择划分属性时是在当前结点的属性集合中选择一个最优属性(根据信息增益、增益率等准则),而在RF中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含K个属性的子集,然后再从这个子集中选择一个最优属性用于划分。这里的参数k控制了随机性的引入程度,推荐k=log(d)。
随机森林和决策树的区别?
随机森林是普通决策树的集合。对于决策树模型,它会将你输入的样本特征与标签进行一系列规则的拟合,然后确定判定规则用于新样本的预测。而对于随机森林来说,它会随机地选择特征进行建决策树,然后将这一系列决策树进行结合后输出结果值。
随着个体学习器数目的增加,随机森林通常会收敛到更低的泛化误差。
随机森林算法流程
输入: 训练样本集,弱分类器迭代次数T;
输出: 强分类器F(x)
流程:
1)对于t=1,2...,T:
a)对训练集进行第t次随机采样,共采集m次,得到包含m个样本的采样集Dt
b)用采样集Dt训练第t个弱学习器Gt(x)。在训练基决策树节点的时候,在节点上所有的样本特征中选择一部分样本特征,在这些随机选择的部分样本特种中选择一个最优的特征来做决策树的左右子树划分;
2) 如果是分类算法预测,则T个弱学习器投出最多票数的类别或者类别之一为最终类别。如果是回归算法,T个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。
4.小结
Bagging与Boosting比较
1)样本选择上:
Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
2)样例权重:
Bagging:使用均匀取样,每个样例的权重相等
Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。
3)预测函数:
Bagging:所有预测函数的权重相等。
Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
4)并行计算:
Bagging:各个预测函数可以并行生成
Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。
随机森林优缺点
RF的主要优点有:
1) 训练可以高度并行化,对于大数据时代的大样本训练速度有优势。
2) 由于可以随机选择决策树节点划分特征,这样在样本特征维度很高的时候,仍然能高效的训练模型。
3) 在训练后,可以给出各个特征对于输出的重要性
4) 由于采用了随机采样,训练出的模型的方差小,泛化能力强。
5) 相对于Boosting系列的Adaboost和GBDT, RF实现比较简单。
6) 对部分特征缺失不敏感。
RF的主要缺点有:
1)在某些噪音比较大的样本集上,RF模型容易陷入过拟合。
2) 取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。
关于随机森林,刘建平大牛博客中还提到了许多RF推广变形形式:Bagging与随机森林算法原理小结
以上~
机器学习算法总结之Bagging与随机森林相关推荐
- 机器学习算法——详细介绍 集成学习,以及什么是Bagging、随机森林、Boosting、XGBoost
目录 一.集成学习算法简介 1.什么是集成学习 2.机器学习的两个核心任务 3.集成学习中boosting和Bagging 4.小结 二.Bagging和随机森林 1.Bagging集成原理 2.随机 ...
- (转载)机器学习知识点(十七)Bagging与随机森林算法原理小结
集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系.另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合.本文就对集成学习中Bagging ...
- 决策树与剪枝、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 ...
- [学习笔记] [机器学习] 7. 集成学习(Bagging、随机森林、Boosting、GBDT)
视频链接 数据集下载地址:无需下载 1. 集成学习算法简介 学习目标: 了解什么是集成学习 知道机器学习中的两个核心任务 了解集成学习中的 Boosting 和 Bagging 1.1 什么是集成学习 ...
- Bagging与随机森林算法原理小结
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boos ...
- 【机器学习-西瓜书】八、Bagging;随机森林(RF)
8.3 Bagging 与 随机森林 关键词: Bagging : 随机森林: 8.3.1 Bagging 上上一节已经提到,集成学习首要任务就是要解决个体学习器 "好而不同",要 ...
- 集成学习中boosting、bagging、随机森林算法的介绍
集成学习的概念 定义:集成学习通过构建并结合多个学习器来完成学习任务. 分类:只包含同种类型的个体学习器,这样的集成是"同质"的,例如都是神经网络或者决策树:包含不同类型的个体学习 ...
- 数据挖掘算法(logistic回归,随机森林,GBDT和xgboost)-腾讯云社区
机器学习就是样本中有大量的x(特征量)和y(目标变量)然后求这个function.(了解更多可以看: https://zhuanlan.zhihu.com/p/21340974?refer=mlear ...
- 监督学习 | 集成学习 之Bagging、随机森林及Sklearn实现
文章目录 集成学习 1. 投票分类器 1.1 硬投票法 1.2 软投票法 2. Bagging & Pasting 2.1 包外评估 2.2 Random Patches 和 随机子空间 3. ...
最新文章
- python数组求和函数_python数据分析之Numpy数据库第三期数组的运算
- 你的网页加载太慢了怎么办?
- 谷歌、微软、OpenAI等巨头七大机器学习开源项目 看这篇就够了
- 计算机网络—一个自治系统有5个局域网,其连接图如图所示。LAN2至LAN5上的主机数分别为:91,150,3,15。该自治系统分配到的IP地址块为30.138.118/23。试给出每一个局域网的地址块
- 从CUDA开始读OpenCL
- MySQL_数据类型
- 天生对数字不敏感的人,如何提升对数据的敏感度?
- 9月20日云栖精选夜读 | 如何轻松搞定数据科学面试:Python&R语言篇
- gaussian 和gaussview_谈谈Gaussian软件中的guess=mix
- Greenplum 调优--数据分布法则 - 分布列与分区的选择
- 移动端VUE实现一周课程表
- STM32CubeIDE使用总结(四)——遇到的问题
- vue 评论区回复无限嵌套实现代码
- 孙鑫VC++学习笔记(转载至程序员之家--虎非龙)[11--15]
- Android背景和音乐
- boost spirit ——编译器,语法解析器
- (附源码)计算机毕业设计SSM职业学校招生系统
- 自然数、整数、有理数、实数、无理数
- BUAA OS LAB3 实验报告
- 火车票订票API 用PHP完成火车票订票流程