关于集成学习

集成学习通过结合多个弱分类器构建强模型,减少偏差或方差,包括Bagging、Boosting和Stacking等方法。Bagging通过有放回抽样生成训练集,如随机森林;Boosting通过调整误分类样本权重,如AdaBoost和GBDT;Stacking则使用其他模型的输出作为新模型的输入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是集成学习

1、集成学习的基本概念

        在机器学习的监督学习算法中,我们的目标是学习出一个稳定的且在各个方面表现都较好的模型,但实际情况往往不这么理想,有时我们只能得到多个有偏好的模型(弱监督模型,在某些方面表现的比较好)。集成学习就是组合这里的多个弱监督模型以期得到一个更好更全面的强监督模型,集成学习潜在的思想是即便某一个弱分类器得到了错误的预测,其他的弱分类器也可以将错误纠正回来。
        集成学习的思想是将若干个“弱”学习器(分类器和回归器)组合之后产生一个新学习器,这里弱分类器指那些分类准确率只稍微好于随机猜测的分类器。集成算法的成功在于保证弱分类器的多样性(Diversity),而且集成不稳定的算法也能够得到一个比较明显的性能提升。

2、集成学习的目的

  • 弱分类器间存在一定的差异性,这会导致分类的边界不同,也就是说可能存在错误。那么将多个弱分类器合并后,就可以得到更加合理的边界,减少整体的错误率,实现更好的效果
  • 对于数据集过大或者过小,可以分别进行划分和有放回的操作产生不同的数据子集,然后使用数据子集训练不同的分类器,最终再合并成为一个大的分类器
  • 如果数据的划分边界过于复杂,使用线性模型很难描述这种情况,那么可以训练多个模型,然后再进行模型的融合
  • 对于多个异构的特征集,很难进行融合,那么可以考虑每个数据集构建 一个分类模型,然后将多个模型融合。

3、集成学习的分类

(1)按照目的可以分为三类:

  • 用于减少偏差的 boosting;
  • 用于减少方差的 bagging;
  • 用于提升预测结果的 stacking;

(2)按照组合方式可以分为两类:

  • 串行集成方法
            也叫序列集成方法,多个学习器以”串联“的方式组合。串行集成的基本动机是利用基础模型之间的依赖。通过给错分样本一个较大的权重来提升性能,也即通过对之前训练中错误标记的样本赋值较高的权重,可以提高整体的预测效果。
  • 并行集成方式
            这种方法并行地生成基础模型(如Random Forest)。并行集成的基本动机是利用基础模型的独立性,因为通过平均能够较大地降低误差。

二、集成学习的几个方法

1、Bagging

        Bagging即套袋法,先说一下bootstrap,bootstrap也称为自助法,它是一种有放回的抽样方法,目的为了得到统计量的分布以及置信区间,其算法过程如下:
        A)从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(k个训练集之间是相互独立的)
        B)每次使用一个训练集得到一个模型,k个训练集共得到k个模型。(注:这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)
        C)对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)
在这里插入图片描述
bagging总结:
  ① Bagging通过降低基分类器的方差,改善了泛化误差
  ② 其性能依赖于基分类器的稳定性;如果基分类器不稳定,bagging有助于降低训练数据的随机波动导致的误差;如果稳定,则集成分类器的误差主要由基分类器的偏倚引起
  ③ 由于每个样本被选中的概率相同,因此bagging并不侧重于训练数据集中的任何特定实例
常用的Bagging算法----随机森林
        在随机森林中,集成中的每棵树都是由从训练集中抽取的样本构建的。另外,与使用所有特征不同,这里随机选择特征子集,从而进一步达到对树的随机化目的。
        因此,随机森林产生的偏差略有增加,但是由于对相关性较小的树计算平均值,估计方差减小了,导致模型的整体效果更好。

2、Boosting

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

(1)在每一轮如何改变训练数据的权值或概率分布?
        通过提高那些在前一轮被弱分类器分错样例的权值,减小前一轮分对样例的权值,来使得分类器对误分的数据有较好的效果。

(2)通过什么方式来组合弱分类器?
        通过加法模型将弱分类器进行线性组合,比如:

  • AdaBoost
            AdaBoost(Adaptive boosting)算法刚开始训练时对每一个训练例赋相等的权重,然后用该算法对训练集训练t轮,每次训练后,对训练失败的训练例赋以较大的权重,也就是让学习算法在每次学习以后更注意学错的样本,从而得到多个预测函数。通过拟合残差的方式逐步减小残差,将每一步生成的模型叠加得到最终模型。(以下算法描述参见复旦大学邱锡鹏《神经网络与深度学习》)

  • GBDT
            GBDT(Gradient Boost Decision Tree),每一次的计算是为了减少上一次的残差,GBDT在残差减少(负梯度)的方向上建立一个新的模型。
    在这里插入图片描述

3、Stacking

        Stacking方法是指训练一个模型用于组合其他各个模型。首先我们先训练多个不同的模型,然后把之前训练的各个模型的输出为输入来训练一个模型,以得到一个最终的输出。理论上,Stacking可以表示上面提到的两种Ensemble方法,只要我们采用合适的模型组合策略即可。但在实际中,我们通常使用logistic回归作为组合策略。
        如下图,先在整个训练数据集上通过bootstrap抽样得到各个训练集合,得到一系列分类模型,然后将输出用于训练第二层分类器。
在这里插入图片描述

4、Bagging,Boosting二者之间的区别

(1)样本选择上:

  • Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
  • Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。

(2)样例权重:

  • Bagging:使用均匀取样,每个样例的权重相等
  • Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。

(3)预测函数:

  • Bagging:所有预测函数的权重相等。
  • Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。

(4)并行计算:

  • Bagging:各个预测函数可以并行生成
  • Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。

5、以决策树为例

  • Bagging + 决策树 = 随机森林
  • AdaBoost + 决策树 = 提升树
  • Gradient Boosting + 决策树 = GBDT

参考博文:

机器学习–集成学习(Ensemble Learning)
集成学习-组合策略与Stacking
集成学习(Ensemble learning)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值