集成学习中boosting、bagging、随机森林算法的介绍
集成学习的概念
定义:集成学习通过构建并结合多个学习器来完成学习任务。
分类:只包含同种类型的个体学习器,这样的集成是“同质”的,例如都是神经网络或者决策树;包含不同类型的个体学习器,这样的集成是“异质”的,例如同时包括神经网络和决策树。
作用:集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能。
条件:要获得较好的集成效果,应该要求学习器“好而不同”(这也是集成学习研究的核心)。好而不同的意思是,单个学习器要有一定的“准确性”,而且学习器之间要有“多样性”。集成结果通过“投票法”得出,即“少数服从多数”(如果投票结果相同,可随机选择)。
下图体现了“好而不同”原则:图(a)中每个分类器都有66.6%的精度,但集成学习却达到了100%;图(b)中三个分类器没有区别,集成之后性能也没有提高;图(c)每个分类器只有33.3%的精度,集成之后结果更糟糕。
Bagging,Boosting,随机森林 三者的概念
根据个体学习器的生成方式,目前的集成学习方法大致可分为两大类:
1)个体学习器间存在强大依赖关系、必须串行生成的序列化方法,代表算法:Boosting;
2)个体学习器间不存在依赖关系、可同时生成的并行化方法,代表算法Bagging和“随机森林”RF。
Boosting是一族可以将若学习器提升为强学习器的算法,代表算法为AdaBoost。该算法的工作机制:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器。如此反复进行,直至学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。
值得注意的是,Boosting算法在每一轮训练都要检查当前生成的基学习器是否满足基本条件(当前基学习器分类精度>50%),从偏差-方差的角度,Boosting主要关注降低偏差,所以Boosting基于泛化性能很弱的学习器能够造出很强的集成。
Bagging是并行式集成学习代表方法。基于“自助采样法”(bootstrap sampling)。自助采样法机制:给定包含m个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下一次采样时该样本还会被采到。这样,经过m次样本采集,我们得到包含m个样本的采样集。采样集中,有的样本出现过很多次,有的没有出现过。Bagging机制:我们采样出T个含m个样本的采样集。然后基于每个采样集训练出一个学习器,再将学习器进行结合。对分类任务使用投票法,对回归任务采用平均值法。
从偏差-方差的角度,Bagging主要关注降低方差,因此它在容易受到样本扰动的学习器(如不剪枝的决策树、神经网络)中效果更明显。
AdaBoost VS Bagging:标准AdaBoost只适用于二分类任务,Bagging适用于多分类、回归等任务。
随机森林(Random Forest):以决策树为基学习器构建Bagging集成,进一步在决策树的训练过程中引入随机属性选择。传统决策树在选择划分属性的时候是在当前节点所有的属性集合中选出一个左右属性进行划分;而在RF中,对基决策树的每个节点,先从该节点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。这里的参数k控制了随机性的引入程度。如果k=d(全部属性集),则基决策树的构建=传统决策树构建。如果k=1,基决策树每个节点随机选择一个属性进行划分。一般推荐k=log2d。
对比Bagging和Boosting
Bagging和Boosting的区别:
1)样本选择上:
Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的,子集的数量等于样本的数量。
Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。
2)样例权重:
Bagging:使用均匀取样,每个样例的权重相等
Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大.
3)预测函数:
Bagging:所有预测函数的权重相等.
Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重.
4)并行计算:
Bagging:各个预测函数可以并行生成
Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果.
对比Bagging和随机森林
1)样本选择上:
都是有放回的随机选取子集
2)个体决策树的属性:
Bagging每颗个体决策树的结点要对所有属性进行考察;
随机森林的个体决策树的结点对一部分属性进行考察;
3)泛化性能:
随着个体决策树的数量增加,Bagging和随机森林泛化性能都有所增加。
在个体决策树数量很少时,随机森林性能较差,因为只包含若干属性,但随着学习器的增加,性能很快就会变好,且强于Bagging。
集成学习中boosting、bagging、随机森林算法的介绍相关推荐
- 笔记 | 《机器学习》手推笔记更新集成学习(Boosting和随机森林)
点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 编辑:Sophia 计算机视觉联盟 报道 | 公众号 CVLianMeng [人工智能资源(书籍+视频)全网收集 ...
- 集成学习(一)——随机森林以及GBDT
文章目录 一.bagging 随机森林 二.boosting 1.Adaboost sklearn实现AdaBoost 2.GBDT (1)Regression Decision Tree:回归树 ( ...
- Educoder 机器学习之随机森林算法 第1关:Bagging
第1关:Bagging 任务描述 相关知识 什么是Bagging Bagging方法如何训练与预测 训练 预测 编程要求 测试说明 任务描述 本关任务:补充 python 代码,完成 BaggingC ...
- Python数据挖掘项目:构建随机森林算法模型预测分析泰坦尼克号幸存者数据
作者CSDN:进击的西西弗斯 本文链接:https://blog.csdn.net/qq_42216093/article/details/120196972 版权声明:本文为作者原创文章,未经作者同 ...
- 【机器学习】P25 随机森林算法(2) 实现 “波士顿房价” 预测
随机森林算法 Random Forest Algorithm 随机森林算法 随机森林算法实现波士顿房价预测 随机森林算法 随机森林(Random Forest)算法 是一种 集成学习(Ensemble ...
- (七)集成学习中-投票法Voting
集成学习第一法宝:投票! 参考:DataWhale教程链接 集成学习(上)所有Task: (一)集成学习上--机器学习三大任务 (二)集成学习上--回归模型 (三)集成学习上--偏差与方差 (四)集成 ...
- 集成学习算法之boosting、bagging和随机森林算法原理
集成学习的定义 集成学习的主要思路是先通过一定的规则生成多个学习器,再采用某种集成策略进行组合,最后综合判断输出最终结果.一般而言,通常所说的集成学习中的多个学习器都是同质的"弱学习器&qu ...
- python机器学习案例系列教程——集成学习(Bagging、Boosting、随机森林RF、AdaBoost、GBDT、xgboost)
全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 可以通过聚集多个分类器的预测结果提高分类器的分类准确率,这一方法称为集成(Ensemble)学习或分类器组合(Classifier C ...
- 机器学习之集成学习(Boosting算法、Bagging算法、Stacking算法)总结
1.集成学习概述 机器学习分为有监督学习算法和无监督学习算法.在有监督学习中,我们的目标是学习一个稳定的且各方面都表现较好的模型.但是,实际情况往往不理想,有时我们只能得到多个在某些方面表现比较好的& ...
最新文章
- python opencv 凸包
- mysql没有写入权限_MySQL的权限系统
- java 格式化小数_java-如何格式化小数位数精度
- [luogu2680] 运输计划 (lca+二分+树上差分)
- Spring Boot 执行流程
- 0基础学python要多久-零基础学习Python开发需要多长时间?
- SpringMVC学习(二)使用注解开发SpringMVC
- win7设置动态桌面,将视频设为桌面
- c# splitContainer1隐藏panel1/2
- 搭建物联网服务器(一):购买阿里云服务器
- Smali语法详解(2)
- nginx配置CSP策略和Nonce随机数方案
- css 滤镜 filter 属性
- linux 检测ssd 4k对齐,linux查看硬盘4K对齐方法
- 为什么matlab激活完后还要激活(Matlab2012b license失效解决办法)
- R语言中的scale函数
- 「3D建模」3Dmax干货分享,作为零基础小白的你都知道吗?
- PMP认证在中国认可吗?
- 股豆网:2019全国高校名单公布共计2956所 江苏省数量最多
- mysql cte 语法_MySQL CTE
热门文章
- zoom和transform:scale()的区别
- SpringBoot整合Mybaits开发报java.lang.IllegalArgumentException: At least one base package must be specifie
- P4720 【模板】扩展卢卡斯
- Python求两个或三个正整数的最大公约数和最小公倍数
- 【无代码体验】用鲸智搭替换Excel表管理数据
- typescript学习之函数
- Exception in thread main org.hibernate.TransientObjectException: object references an unsaved tran
- ningx突然403权限拒绝解决方案
- 【React】Mobx
- AI文件资源导出方法