Bagging和Boosting的主要区别

  • Bagging(套袋法)
  • Boosting(提升法)
  • Bagging,Boosting二者的区别
  • 总结
  • 基本概念--偏差、方差
  • 为什么说bagging是减少variance,而boosting是减少bias?

Bagging和Boosting都是将已有的分类或回归算法通过一定方式组合起来,形成一个性能更加强大的分类器,更准确的说这是一种分类算法的组装方法。即将弱分类器组装成强分类器的方法。
Bootstraping,即自助法:它是一种有放回的抽样方法(可能抽到重复的样本)。

Bagging(套袋法)


Bagging即套袋法,其算法过程如下:

  • 从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(k个训练集之间是相互独立的)
  • 每次使用一个训练集得到一个模型,k个训练集共得到k个模型。
  • 这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)
    • 对分类问题:将上步得到的k个模型采用投票的方式得到分类结果
    • 对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)

Boosting(提升法)


其主要思想是将弱分类器组装成一个强分类器。在PAC(概率近似正确)学习框架下,则一定可以将弱分类器组装成一个强分类器。
关于Boosting的两个核心问题:

  • 在每一轮如何改变训练数据的权值或概率分布?

    • 通过提高那些在前一轮被弱分类器分错样例的权值,减小前一轮分对样例的权值,来使得分类器对误分的数据有较好的效果。
  • 通过什么方式来组合弱分类器?
    • 通过加法模型将弱分类器进行线性组合,比如AdaBoost通过加权多数表决的方式,即增大错误率小的分类器的权值,同时减小错误率较大的分类器的权值。
      而提升树通过拟合残差的方式逐步减小残差,将每一步生成的模型叠加得到最终模型。

Bagging,Boosting二者的区别

Bagging和Boosting的区别:
1)样本选择上:
Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
2)样例权重:
Bagging:使用均匀取样,每个样例的权重相等
Boosting:根据上一轮的错误率不断调整样例的权值,错误率越大则权重越大。
3)预测函数:
Bagging:所有预测函数的权重相等。
Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
4)并行计算:
Bagging:各个预测函数可以并行生成
Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。

总结

两种方法都是把若干个分类器整合为一个分类器的方法,只是整合的方式不一样,最终得到不一样的效果,将不同的分类算法套入到此类算法框架中一定程度上会提高了原单一分类器的分类效果,但是也增大了计算量。
下面是将决策树与这些算法框架进行结合所得到的新的算法:
Bagging + 决策树 = 随机森林
AdaBoost + 决策树 = 提升树
Gradient Boosting + 决策树 = GBDT

基本概念–偏差、方差

  • 偏差(bias):偏差衡量了模型的预测值与实际值之间的偏离关系。通常在深度学习中,我们每一次训练迭代出来的新模型,都会拿训练数据进行预测,偏差就反应在预测值与实际值匹配度上,比如通常在keras运行中看到的准确度为96%,则说明是低偏差;反之,如果准确度只有70%,则说明是高偏差。
  • 方差(variance):方差描述的是训练数据在不同迭代阶段的训练模型中,预测值的变化波动情况(或称之为离散情况)。从数学角度看,可以理解为每个预测值与预测均值差的平方和的再求平均数。通常在深度学习训练中,初始阶段模型复杂度不高,为低方差;随着训练量加大,模型逐步拟合训练数据,复杂度开始变高,此时方差会逐渐变高。

    这是一张常见的靶心图。可以想象红色靶心表示为实际值,蓝色点集为预测值。在模型不断地训练迭代过程中,我们能碰到四种情况:
    低偏差,低方差:这是训练的理想模型,此时蓝色点集基本落在靶心范围内,且数据离散程度小,基本在靶心范围内;
    低偏差,高方差:这是深度学习面临的最大问题,过拟合了。也就是模型太贴合训练数据了,导致其泛化(或通用)能力差,若遇到测试集,则准确度下降的厉害;
    高偏差,低方差:这往往是训练的初始阶段;
    高偏差,高方差:这是训练最糟糕的情况,准确度差,数据的离散程度也差。

为什么说bagging是减少variance,而boosting是减少bias?

  • Bagging对样本重采样,对每一重采样得到的子样本集训练一个模型,最后取平均。由于子样本集的相似性以及使用的是同种模型,因此各模型有近似相等的bias和variance(事实上,各模型的分布也近似相同,但不独立)。由于

    所以bagging后的bias和单个子模型的接近,一般来说不能显著降低bias。另一方面,若各子模型独立,则有

    此时可以显著降低variance。
    若各子模型完全相同,则

    此时不会降低variance。
    bagging方法得到的各子模型是有一定相关性的,属于上面两个极端状况的中间态,因此可以一定程度降低variance。
  • boosting从优化角度来看,是用forward-stagewise这种贪心法去最小化损失函数

    例如,常见的AdaBoost即等价于用这种方法最小化exponential loss:

    所谓forward-stagewise,就是在迭代的第n步,求解新的子模型f(x)及步长a(或者叫组合系数),来最小化

    boosting是在sequential地最小化损失函数,其bias自然逐步下降。但由于是采取这种sequential、adaptive的策略,各子模型之间是强相关的,于是子模型之和并不能显著降低variance。所以说boosting主要还是靠降低bias来提升预测精度。

原文链接:
机器学习中Bagging和Boosting的区别
为什么说bagging是减少variance,而boosting是减少bias?
一文看懂集成学习(详解 bagging、boosting 以及他们的4点区别)
深度学习基础系列(八)| 偏差和方差

集成模型Bagging和Boosting的区别相关推荐

  1. 树模型系列之集成学习(Bagging、Boosting、Stacking)

    文章目录 树模型系列之集成学习(Bagging.Boosting.Stacking) bagging Boosting Stacking 偏差与方差 集成学习的偏差与方差 Bagging 的偏差与方差 ...

  2. 机器学习中Bagging和Boosting的区别

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 Bagging和Boosting都是将已有的分类或回归算法通过一定 ...

  3. Bagging和Boosting的区别(面试准备)

    Baggging 和Boosting都是模型融合的方法,可以将弱分类器融合之后形成一个强分类器,而且融合之后的效果会比最好的弱分类器更好. Bagging: 先介绍Bagging方法: Bagging ...

  4. 【机器学习】Bagging和Boosting的区别(面试准备)

    Baggging 和Boosting都是模型融合的方法,可以将弱分类器融合之后形成一个强分类器,而且融合之后的效果会比最好的弱分类器更好. Bagging: 先介绍Bagging方法: Bagging ...

  5. Bagging和Boosting的区别

    Bagging和Boosting都是将已有的分类或回归算法通过一定方式组合起来,形成一个性能更加强大的分类器,更准确的说这是一种分类算法的组装方法.即将弱分类器组装成强分类器的方法. 首先介绍Boot ...

  6. 机器学习(4):集成算法(Bagging、Boosting、Stacking)

    目录 一.Bagging模型:随机森林 1.1 bagging的原理 1.2 随机森林算法 Random Forest 1.3 随机森林的推广:极限随机数 extra trees 二.Boosting ...

  7. 集成学习——Bagging、Boosting、Stacking

    目录 偏差与方差 投票法 集成学习 Bagging Bootstraps Bagging Boosting 基本概念 Adaboost 前向分步算法 梯度提升树(GBDT) XGBoost Light ...

  8. 集成学习Bagging和Boosting算法总结

    一.集成学习综述 1.集成方法或元算法是对其他算法进行组合的一种方式,下面的博客中主要关注的是AdaBoost元算法.将不同的分类器组合起来,而这种组合结果被称为集成方法/元算法.使用集成算法时会有很 ...

  9. [Mechine Learning Algorithm] 集成学习方法——Bagging和 Boosting

    使用机器学习方法解决问题时,有较多模型可供选择. 一般的思路是先根据数据的特点,快速尝试某种模型,选定某种模型后, 再进行模型参数的选择(当然时间允许的话,可以对模型和参数进行双向选择) 因为不同的模 ...

最新文章

  1. android后台如何动态添加图片,android – 如何从JSON数组动态地向ImageView添加图像...
  2. MyBatis学习总结(16)——Mybatis使用的几个建议
  3. 用 Ubuntu 重置 Windows 密码
  4. 清单文件中android support,Android FileProvider 配置
  5. 用软件测试管理效率,软件测试攻略(一):效率工具分享
  6. vue 子组件 调用、触发父组件中的方法
  7. 用JS实现版面拖拽效果
  8. MeterSphere实现“机器人定时在企业微信群中发送消息”功能
  9. 本地建mysql数据库_mysql 安装及新建本地数据库遇到的问题
  10. [.Net] 一句话Linq(递归查询)
  11. Spring Boot 集成 Thymeleaf 快速入门、静态资源映射规则、WebJars
  12. python发送邮件带附件_python 发送带附件邮件
  13. WPF中使用StackPanel,Border进行简单布局
  14. Hibernate下载和安装
  15. 《老路用得上的商学课》1-15学习笔记
  16. 云计算之云计算和虚拟化的区别
  17. Windows10 启动 Docker Desktop 时报错 Containers feature is disabled
  18. 2022年双十一蓝牙耳机选哪款?便宜音质好的蓝牙耳机推荐
  19. 可控制导航下拉方向的jQuery下拉菜单代码
  20. 我的阿里春招之路:历时14天,五轮面试后终于拿到Android岗offer,原来大厂都是从这几个方面问问题

热门文章

  1. mysql错误编号2058_SQLyog连接MySQL时出现的2058错误解决方法
  2. oracle会话占用pga异常,OLTP,单个session占pga大于2G,有见过的没?
  3. STM32单片机开发实例 基于STM32单片机的智能行李箱
  4. Balsamiq新的感觉
  5. 盘点华为“天才少年”中的神仙女孩纸~
  6. 波动方程的行波解(一)| 一维波动方程的通解和初值问题的达朗贝尔(d' Alembert)公式 | 偏微分方程(九)
  7. 建立名字为Project1的解决方案
  8. c语言程序画正八边形,用少儿编程绘制一个正九边形
  9. 300多张精美京剧脸谱,收藏~~
  10. 如果不知道这4种缓存模式,敢说懂缓存吗?