Bagging、Boosting和AdaBoost(Adaptive Boosting)都是Ensemble learning的方法。集成学习其实就是有很多个分类器,概念就是三个臭皮匠,顶过诸葛亮。

ensemble learning的基本条件是每个分类器之间要有差异,并且每个分类器的准确率需要大于0.5.如果分类器没有差异,那么用多个分类器和用一个分类器没有什么差别,如果单个分类器的准确率小于0.5那么随着集成规模的增加,准确率却在不断下降。如果单个分类器的准确率大于0.5,随着集成规模的增加,理论上准确率可以接近于1.

既然集成学习顾名思义就是要产生很多个分类器,所以大家把研究的目标放在怎么产生多个分类器。bagging、Boosting和Adaboost都是产生多个分类器的手法。

Bagging

Bagging概念比较简单,从训练器中随机抽取样本(取出后放回)训练多个分类器(分类器的个数由自己设定),每个分类器的权重一致,最后用投票的方式(Majority vote)得到最终结果,而这种抽样的方法在统计上称为bootstrap。

Bagging的精髓在于从样本中抽样,如果模型不是分类问题而是预测问题,分类器部分可以改成regression,最后投票方式改成算平均数即可。用Bagging会希望单一分类器能够是一个比较好的分类器。Bagging的优点在于如果原始训练样本中有噪声资料,透过Bagging抽样就有机会不让噪声资料被训练到,可以降低模型的不稳定性。

Boosting

Boosting算法是将很多个弱分类器进行合成变成一个强分类器,和Bagging不同的是分类器之间是有关联性的,是通过将旧分类器的错误数据权重提高,然后再训练新的分类器,这样新分类器就会学习到分类错误样本的特征,进而提升分类结果。

Boosting的概念很玄,我自己的理解是旧的分类器训练有些数据落在confusion area,如果在用全部的data去训练,错的数据永远都会判断错误。因此需要针对错误的数据去学习,也就是将错误数据的权重加大,这样新训练出来的分类器才能针对这些错误数据得到好的结果。

由于Boosting将注意力集中在分类错误的数据上,因此Boosting对训练数据的噪声非常敏感,如果一份训练数据噪声非常多,将导致后面的分类器都会集中在进行噪声数据上分类,反而会影响最终的分类性能。

对于Boosting来说,有两个关键,一是如何改变训练数据的权重,二是如何将多个若分类器组合成一个强分类器。

AdaBoost

AdaBoost是一种改进的Boosting分类算法。方式是提高被前几个分类器线性组合的分类错误样本的权重,这样可以让每次训练新的分类器的时候都聚焦在容易分类错误的训练样本上。每个弱分类器使用加权投票机制取代平均投票机制,准确率较大的弱分类器有较大的权重,准确率较低的弱分类器投票时权重较低。

Adaboost让判断错误的train data提高权重,产生新的权重的train set让旧的分类器fail掉,但在新的分类器上去加强学习这些新的training set。

Bagging与Boosting的区别之处:

训练样本:

Bagging :每一次的训练集是随机抽取(每个样本权重一致),抽出可放回,以独立同分布选取的训练样本子集训练弱分类器。

Boosting :每一次的训练集不变,训练集之间的选择不是独立的,每一是选择的训练集都是依赖上一次学习得结果,根据错误率(给予训练样本不同的权重)取样。

分类器:

Bagging :每个分类器的权重相等。

Boosting :每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。

每个分类器的生成:

Bagging :每个分类器可以并行生成。

Boosting :每个弱分类器只能依赖上一次的分类器顺序生成。

Bagging和Boosting这两种方法是比较常见的ensemble learning的方法,当然ensemble learning还有很多不同的方法,比如

1. 将不同的分类器进行合成提高单一分类器的效果例如SVM+k-NN+MLP+QDA+BNC等。

2.很多个SVM合成,方式为每个SVM给不同的kernel function或是kernel参数。

3. Random subspace: 这个概念跟bagging很像,不同的是bagging是从训练样本去抽样产生不同的训练集来训练分类器,但Random subspace是feature bagging,从特征中去抽样,然后训练多个分类器做合成,通常用在非常高维度的资料中。当然也有衍生出来的feature Adaboosting。

但不论用哪种方式都是把多个分类器整合出一个结果,只是整合的方式不一样,最终得到不一样的效果。

ensemble learning 关于 Decision tree

1. Random Forest : Bagging + Decision tree
2. Boosting Tree : AdaBoost + Decision tree
3. GBDT : Gradient Boost + Decision tree

 

机器学习:集成学习之 Bagging、Boosting和AdaBoost相关推荐

  1. 集成学习(bagging/boosting/stacking)BERT,Adaboost

    文章目录 集成学习(ensemble learning) 1.bagging(装袋法) 2.boosting(提升法) 3.stacking(堆叠法) 集成学习(ensemble learning) ...

  2. python机器学习案例系列教程——集成学习(Bagging、Boosting、随机森林RF、AdaBoost、GBDT、xgboost)

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 可以通过聚集多个分类器的预测结果提高分类器的分类准确率,这一方法称为集成(Ensemble)学习或分类器组合(Classifier C ...

  3. [学习笔记] [机器学习] 7. 集成学习(Bagging、随机森林、Boosting、GBDT)

    视频链接 数据集下载地址:无需下载 1. 集成学习算法简介 学习目标: 了解什么是集成学习 知道机器学习中的两个核心任务 了解集成学习中的 Boosting 和 Bagging 1.1 什么是集成学习 ...

  4. 机器学习 集成学习篇——python实现Bagging和AdaBOOST算法

    机器学习 集成学习篇--python实现Bagging和AdaBOOST算法 摘要 Bagging算法 Adaboost算法 摘要 本文通过python实现了集成学习中的Bagging和AdaBOOS ...

  5. 集成学习:Bagging、随机森林、Boosting、GBDT

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 集成学习:Bagging.随机森林.Boosting.GBDT ...

  6. 集成学习(Bagging、Boosting、Stacking)算法原理与算法步骤

    集成学习 概述 严格意义上来说,集成学习算法不能算是一种机器学习算法,而像是一种模型优化手段,是一种能在各种机器学习任务上提高准确率的强有力技术.在很多数据挖掘竞赛中,集成学习算法是比赛大杀器,能很好 ...

  7. [白话解析] 通俗解析集成学习之bagging,boosting 随机森林

    [白话解析] 通俗解析集成学习之bagging,boosting & 随机森林 0x00 摘要 本文将尽量使用通俗易懂的方式,尽可能不涉及数学公式,而是从整体的思路上来看,运用感性直觉的思考来 ...

  8. 机器学习 - [集成学习]Bagging算法的编程实现

    机器学习 - [集成学习] Bagging算法的编程实现 李俊才 的 CSDN 博客:https://blog.csdn.net/qq_28550263?spm=1001.2101.3001.5343 ...

  9. Datawhale组队学习之集成学习——Task 6 Boosting

    Datawhale组队学习之集成学习--Task 6 Boosting 一.Boosting方法的基本思路 二.Adaboost算法 1.Adaboost基本原理 2.使用sklearn对Adaboo ...

  10. 集成学习之Bagging

    集成学习之Bagging 1 Bagging集成原理 目标:把下面的圈和方块进行分类 [此时用直线很难把圈和方块分开的] 实现过程: 1.采样不同数据集 2.训练分类器 3.平权投票,获取最终结果 4 ...

最新文章

  1. 字节跳动最新开源!java界面实现查询功能
  2. android studio ndk-builld方式开发
  3. zemax 宏怎么编写数组_编写Excel VBA程序的10个技巧
  4. Android Handler、Loop 的简单使用
  5. 华为任职资格_看了华为的任职资格体系,你就明白员工为啥这么拼?
  6. micropython仿真器_Micropython教程之TPYBoard DIY超声波测距仪实例演示
  7. [CB]TForm应用技巧
  8. Learning Modern 3D Graphics Programming笔记
  9. 有k个list列表, 各个list列表的元素是有序的,将这k个列表元素进行排序( 基于堆排序的K路归并排序)...
  10. java多线程设计模式:wait/notify机制(转)
  11. Linux配置多个tomcat
  12. 傅里叶变换与Matlab
  13. 如何快速融入一个研发团队?
  14. 如何下载哔哩哔哩(bilibili)网页端视频
  15. 电脑硬件知识入门之显卡篇
  16. 数据安全法下,企业如何平衡数据安全合规与业务性能?| 产业安全专家谈
  17. Python爬虫进阶之巧破RSA加密
  18. Dynamics 365 可编辑子网格的字段禁用不可编辑
  19. 基于LD3320的51智能遥控语音小车
  20. cisco在服务器编辑首页信息,cisco设置

热门文章

  1. 做嵌入式,如果爱就全心投入,否则就放弃!
  2. 前端项目执行npm install错误
  3. 为什么轻触开关过回流焊后变黄?
  4. 模型拟合之 幂指数函数拟合
  5. 基于机器学习的波动监控系统
  6. linux版navicat安装和破解
  7. 如何将OAK相机当作可移除背景的网络摄像头?
  8. 利用笔记本电脑和串口转换器登录树莓派
  9. 全平台沦陷,苹果系统遭监控公司全线攻破,苹果发布紧急通知;字节回应涉嫌盗取腾讯关系链;iPhone 12 系列大降价...
  10. java 中的ajax_JAVA中的AJAX技术