AI ML

集成学习/元学习 Bagging&Boosting

Posted by LvKouKou on December 23, 2023

集成学习

与相关研究的关系

  • 多任务学习:同时学习多个任务

用多个模型学习一个任务

  • 数据融合:直接整合原始数据

在模型层面整合信息

每个基模型要不一样


机器学习通常会被分为2大类:监督学习和非监督学习。在监督学习中,训练数据由输入和期望的输出组成,然后对非训练数据进行预测输出,也就是找出输入x与输出y之间的函数关系F:y = F(x)。根据输出的精确特性又可以分为分类和回归。分类和回归的区别在于输出变量的类型。

  • 定量输出称为回归,或者说是连续变量预测。
  • 定性输出称为分类,或者说是离散变量预测。

举个例子:

  • 预测明天的气温是多少度,这是一个回归任务。
  • 预测明天是阴、晴还是雨,就是一个分类任务
特性 分类 回归
输出特性 离散数据 连续数据
目的 寻找决策边界 找到最优拟合
评价方法 精度(arrcuracy)、混淆矩阵等 SSE(均方误差)

一、集成学习

集成学习(Ensemble Learning)是指:在机器学习中,模型单独运行时可能表现不佳,但将多个模型组合起来时就会变得更强大,这种多个基础模型的组合称为集成模型或集成学习。

  • 基础模型:差异越大,那么它们组合后的集成学习效果越好
  • 集成学习:也可以理解为,各个基础模型都是处理不同问题的专家,组合在一起就可以取得更好的模型

在机器学习的有监督学习算法中,我们的目标是学习出一个稳定的且在各个方面表现都较好的模型,但实际情况往往不这么理想,有时我们只能得到多个有偏好的模型(弱监督模型,在某些方面表现的比较好)。集成学习就是组合这里的多个弱监督模型以期得到一个更好更全面的强监督模型,集成学习潜在的思想是即便某一个弱分类器得到了错误的预测,其他的弱分类器也可以将错误纠正回来。

集成方法是将几种机器学习技术组合成一个预测模型的元算法,以达到减小方差(bagging)、偏差(boosting)或改进预测(stacking)的效果。

bagging可以减小方差(PPT12-30)

集成学习在各个规模的数据集上都有很好的策略。

  • 数据集大:划分成多个小数据集,学习多个模型进行组合

  • 数据集小:利用Bootstrap方法进行抽样,得到多个数据集,分别训练多个模型再进行组合


个体学习器集成的算法分为两类

  • 同质(homogeneous)的,即集成中仅包含同种类型的一个体学习器,像“决策树集成”中就仅包含决策树,“神经网络集成”中就全是神经网络。同质集成中的个体学习器又称为基学习器(base learner),相应的学习算法也被称为基学习算法(base learning algorithm)。
  • 异质(heterogenous)的,相对同质,异质集成中的个体学习其就是由不同的学习算法生成的,这是,个体学习器就被称为组件学习器(component learner)

其中用的比较多的是同质学习器。同质学习器按照个体学习器之间是否存在依赖关系可以分为两类:

(集合方法可分为两类):

  • 序列集成方法(个体学习器之间存在强依赖关系,一系列个体学习器基本都需要串行生成),其中参与训练的基础学习器按照顺序生成(例如 AdaBoost)。序列方法的原理是利用基础学习器之间的依赖关系。通过对之前训练中错误标记的样本赋值较高的权重,可以提高整体的预测效果。
  • 并行集成方法(个体学习器之间不存在强依赖关系,一系列个体学习器可以并行生成),其中参与训练的基础学习器并行生成(例如 Random Forest)。并行方法的原理是利用基础学习器之间的独立性,通过平均可以显著降低错误。

总结一下,集成学习法的特点:

  ① 将多个分类方法聚集在一起,以提高分类的准确率。

(这些算法可以是不同的算法,也可以是相同的算法。)

  ② 集成学习法由训练数据构建一组基分类器,然后通过对每个基分类器的预测进行投票来进行分类

  ③ 严格来说,集成学习并不算是一种分类器,而是一种分类器结合的方法。

  ④ 通常一个集成分类器的分类性能会好于单个分类器

  ⑤ 如果把单个分类器比作一个决策者的话,集成学习的方法就相当于多个决策者共同进行一项决策。


自然地,就产生两个问题:

  1)怎么训练每个算法?

  2)怎么融合每个算法?

这篇博客介绍一下集成学习的几个方法:Bagging,Boosting

image-20231221002037377

偏差和方差的关系

baaging更加关注降低方差吗?而boosting更关注降低偏差

在算法学习的时候,通常在bias和variance之间要有一个权衡。bias与variance的关系如下图,因而模型要想达到最优的效果,必须要兼顾bias和variance,也就是要采取策略使得两者比较平衡。

img

从算法来看,Bagging关注的是多个基模型的投票组合,保证了模型的稳定,因而每一个基模型就要相对复杂一些以降低偏差(比如每一棵决策树都很深);

意思是Bagging已经保证降低了方差,但是偏差无法保证,所以每个模型需要复杂一些以降低偏差,保证方差偏差不至于处于窘境

而Boosting采用的策略是在每一次学习中都减少上一轮的偏差,因而在保证了偏差的基础上就要将每一个基分类器简化使得方差更小。

理解同上

1、Bagging(bootstrap aggregating,装袋)

可以保持偏差不变,减小方差

Bagging即套袋法(Bagging是bootstrap aggregating的简写),先说一下bootstrap,bootstrap也称为自助法,它是一种有放回的抽样方法,目的为了得到统计量的分布以及置信区间,其算法过程如下:

bootstrap会有约63.2的样本用于训练(PPT12-28)

A)从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(k个训练集之间是相互独立的

B)每次使用一个训练集得到一个模型,k个训练集共得到k个模型。(注:这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)

C)对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)

在这里插入图片描述

为了让更好地理解bagging方法,这里提供一个例子。

X 表示一维属性,Y 表示类标号(1或-1)测试条件:当x<=k时,y=?;当x>k时,y=?;k为最佳分裂点

下表为属性x对应的唯一正确的y类别

现在进行5轮随机抽样,结果如下k是随机给的

  image-20231220233917285

每一轮随机抽样后,都生成一个分类器

然后再将五轮分类融合

  img

对比符号和实际类,我们可以发现:在该例子中,Bagging使得准确率可达90%


总结一下bagging方法:

① Bagging通过降低基分类器的方差,改善了泛化误差 ② 其性能依赖于基分类器的稳定性;如果基分类器不稳定,bagging有助于降低训练数据的随机波动导致的误差;如果稳定,则集成分类器的误差主要由基分类器的偏倚引起 ③ 由于每个样本被选中的概率相同,因此bagging并不侧重于训练数据集中的任何特定实例

因此:“取偏差小 ↓ 、方差大 ↑ 的基础模型,将其聚合,得到偏差小、方差小的模型”

常用的集成算法类是随机森林。

具有良好深度的决策树就是低偏差 ↓ 和 高方差 ↑ 的模型;因此用决策树做基础模型的

例如随机森林(Random Forest)就属于Bagging。随机森林简单地来说就是用随机的方式建立一个森林,森林由很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。

在我们学习每一棵决策树的时候就需要用到Bootstrap方法。在随机森林中,有两个随机采样的过程:对输入数据的行(数据的数量)与列(数据的特征)都进行采样。对于行采样,采用有放回的方式,若有N个数据,则采样出N个数据(可能有重复),这样在训练的时候每一棵树都不是全部的样本,相对而言不容易出现overfitting;接着进行列采样从M个feature中选择出m个(m«M)。最近进行决策树的学习。

预测的时候,随机森林中的每一棵树的都对输入进行预测,最后进行投票,哪个类别多,输入样本就属于哪个类别。这就相当于前面说的,每一个分类器(每一棵树)都比较弱,但组合到一起(投票)就比较强了。

因此,随机森林产生的偏差略有增加,但是由于对相关性较小的树计算平均值,估计方差减小了,导致模型的整体效果更好。

  img

随机森林具有许多优点,例如随机森林可以不进行交叉验证操作,即由于随机森林是通过自助式的随机抽取样本来构建决策树,所以每个决策树的生成都会有一部分的样本未参与,把这部分样本视作第i棵决策树的袋外样本(OOB),并使用第i棵训练好的决策树模型进行预测,最后得到随机森林的袋外错误率(误分样本数占样本总数的比例),以此来评价随机森林的效果,从而达到交叉验证的效果。但是随机森林也存在一定的不足,如在小样本数据时,往往表现不佳;在处理回归问题时效果不如分类;当数据的噪音太大,模型结果易出现过拟合。


  • 对于原始数据集的 行:进行Bootstrap抽样(有放回抽样),大小为 m 的样本容量
  • 对于原始数据集的 列:随机选择一个特征子集
  • 在每个行抽样的数据集中,剩下的数据点(也称袋外点)可以用于相应子模型的交叉验证(以了解每个基础学习者的性能)
  1. 随着基础模型数量的增加 ↑ ,聚合的模型的方差减少 ↓
  2. 偏差(单个模型) ≈ 偏差(聚合后)
  3. 列采样率: $\frac{d’}{d}$;行采样率: $\frac{m}{n}$ ;如果这两个比值减小,基础模型方差也减小,因此聚合模型的方差也会减少,一般情况固定,不需要认为优化
  4. 基础模型的个数 k ,为超参数,可以根据交叉验证进行确认最优
  5. 特征重要性:对每个基础模型的特征的信息增益求和,再在各特征中进行比较,较大信息增益为较重要特征

随机森林:列抽样+行抽样+决策树+聚合

几何直观地 理解集成学习(Ensemble Learning)的四大类型

2、Boosting

在Bagging中:基础模型为 低偏差 ↓ ,高方差 ↑ ;如深度特别深的 决策树

在Boosting中:基础模型为 高偏差 ↑ ,低方差 ↓ ;如深度特别浅的 决策树(如:深度为2,3)

AdaBoost算法的几何理解

以下每一行都是一轮,每一轮都得出一个模型

image-20231221001555553

image-20231221001623440

几何直观地 理解集成学习(Ensemble Learning)的四大类型


Boosting算法也称为提升法,其主要思想是将多个弱学习器通过串行的方式进行训练,然后将所有弱学习器集成为一个强学习器。在Boosting算法中每个弱学习器之间并不独立,即第一个弱学习器在学习的时候对每个样本出现的权重均视为等同,而当下一个弱学习器学习时会计算上一个弱学习器的训练误差,重新更新每个样本的权重(把被错分的样本权重调高,增加样本的出现几率)。具体的,Boosting算法流程图如下:

在这里插入图片描述

其主要思想是将弱分类器组装成一个强分类器。在PAC(probably approximately correct,概率近似正确)学习框架下,则一定可以将弱分类器组装成一个强分类器。

关于Boosting的两个核心问题:

  1)在每一轮如何改变训练数据的权值或概率分布?(注意是样本的权值

  通过提高那些在前一轮被弱分类器分错样例的权值,减小前一轮分对样例的权值,来使得分类器对误分的数据有较好的效果。

  2)通过什么方式来组合弱分类器?(注意这里是基模型的权重

  通过加法模型将弱分类器进行线性组合,比如:

  AdaBoost(Adaptive boosting)算法:刚开始训练时对每一个训练例赋相等的权重,然后用该算法对训练集训练t轮,每次训练后,对训练失败的训练例赋以较大的权重(样本权值),也就是让学习算法在每次学习以后更注意学错的样本,从而得到多个预测函数。通过拟合残差的方式逐步减小残差,将每一步生成的模型叠加得到最终模型。

  GBDT(Gradient Boost Decision Tree),每一次的计算是为了减少上一次的残差,GBDT在残差减少(负梯度)的方向上建立一个新的模型。

  img

  

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

1、Bagging和Boosting的区别:

  1)样本选择上:

  Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。

  Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。

  2)样例权重:

  Bagging:使用均匀取样,每个样例的权重相等

  Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。

  3)预测函数:

  Bagging:所有预测函数的权重相等

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

boosting中要区分要样本的权重和预测函数的权重

  4)并行计算:

  Bagging:各个预测函数可以并行生成

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

2、决策树与这些算法框架进行结合所得到的新的算法:

  1)Bagging + 决策树 = 随机森林

  2)AdaBoost + 决策树 = 提升树

  3)Gradient Boosting + 决策树 = GBDT

参考资料

  1. 理想几岁:机器学习–集成学习(Ensemble Learning)

  2. 几何直观地 理解集成学习(Ensemble Learning)的四大类型
  3. 关于集成学习算法的概述(Bagging、Boosting、Stacking、Blending)
  4. 集成学习算法之Boosting(这一篇质量不太高,抄周志华老师的西瓜书)