(《机器学习》完整版系列)第8章 集成学习——8.6 级联集成(Stacking算法、其他级联)

文章介绍了级联集成的概念,特别是Stacking算法的步骤和应用,强调了通过初级学习器和次级学习器的结合来提高预测性能。同时,讨论了如何通过交叉验证避免过拟合问题,并对比了Boosting和Bagging在降低偏差和方差上的差异。此外,提到了多级集成以及AdaBoost和Bagging在级联结构中的作用,如MutilBoosting和IterativeBagging算法。

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

假定已经训练出一组学习器,那么,可以由这组学习器的输出结果作为样本,再以此训练出一个学习器,这就形成了二级级联形式。
将投票视为一级,则基于投票法的算法(如,AdaBoost)也是级联。

级联集成

投票是一种常用的集成策略,另一种常见的集成策略是级联集成

Stacking算法

对于数据集 D D D,假定已经训练出一组学习器 h 1 , h 2 , ⋯   , h T h_1,h_2,\cdots,h_T h1,h2,,hT,那么,可以由这组学习器的输出结果作为样本,再以此训练出一个学习器,这就形成了二级级联形式。 第二级(次级)的训练如图8.1所示。
图8.1 第二级(次级)的训练

[图8.1 第二级(次级)的训练

【西瓜书图8.9】所示的Stacking算法分为三大步:

(1)用训练集 D D D训练出一组学习器(初级学习器) h t h_t ht,第1-3句。

(2)用这组学习器去预测 D D D中的样本 x i \boldsymbol{x}_i xi,生成另一空间中的样本 z i \boldsymbol{z}_i zi(参见图8.1左半部分),将这个样本组装成样例 ( z i , y i ) (\boldsymbol{z}_i,y_i) (zi,yi),其中 y i y_i yi,源于原样例 ( x i , y i ) (\boldsymbol{x}_i,y_i) (xi,yi)。 则由 D D D生成了新样例集 D ′ D' D,即第4-10句。

(3)在 D ′ D' D上训练出一个学习器(次级学习器) h h h(参见图8.1右半部分),即第11句。

易注意到,上述算法中在各初级学习器和次级学习器中均使用同一数据集 D D D,这种反复使用会导致过拟合问题。 借助交叉验证【西瓜书第2.2.2节】的思路,我们可以解决这个问题。


D = D 1 ∪ D 2 ∪ ⋯ ∪ D k = D j ∪ D ‾ j \begin{align} D & =D_1\cup D_2\cup \cdots \cup D_k\notag \\ & =D_j\cup \overline{D}_j \tag{8.43} \end{align} D=D1D2Dk=DjDj(8.43)
其中, D j ∩ D i = ∅ ( 若  j ≠ i ) D_j \cap D_i=\varnothing (\text{若}\ j\neq i) DjDi=( j=i),表明任一样本 x \boldsymbol{x} x在且只在某一份 D i D_i Di中。

即将 D D D分成了大小相等的 k k k份,每次将其中的一份 D j D_j Dj留作测试,其余的 k − 1 k-1 k1 D ‾ j \overline{D}_j Dj用作训练。 初级训练阶段,对每个算法 L i \mathfrak{L}_i Li使用 D ‾ j ,   ( j = 1 , 2 , ⋯   , k ) \overline{D}_j,\ (j=1,2,\cdots,k) Dj, (j=1,2,,k)训练, 则每个算法 L i \mathfrak{L}_i Li都可得到一组学习器,如表8.2所示。
在这里插入图片描述

对于任意的 x i \boldsymbol{x}_i xi,则必定能找到 j j j,使得 x i ∈ D j \boldsymbol{x}_i\in D_j xiDj,而 x i ∉ D ‾ j \boldsymbol{x}_i\notin \overline{D}_j xi/Dj,这时我们取表8.2中的第 j j j列,这列的学习器都是基于 D ‾ j \overline{D}_j Dj训练得到的,即它们在训练过程中均没有用到 x i \boldsymbol{x}_i xi,将这组学习器 ( h 1 j , h 2 j , ⋯   , h T j ) (h_1^j,h_2^j,\cdots,h_T^j) (h1j,h2j,,hTj)置换图8.1中的 ( h 1 , h 2 , ⋯   , h T ) (h_1,h_2,\cdots,h_T) (h1,h2,,hT),再由 x i \boldsymbol{x}_i xi计算 z i \boldsymbol{z}_i zi

这样,Stacking算法的三大步变为:

(1)用训练集 D D D训练出一初级学习器表,即表8.2。

(2)对于 D D D中的每个样本 x i \boldsymbol{x}_i xi,在表8.2中选取未使用它的列,作为初级学习器组,样本 x i \boldsymbol{x}_i xi输入这组初级学习器,生成另一空间中的样本 z i \boldsymbol{z}_i zi(参见图图8.1左半部分),将这个样本组装成样例 ( z i , y i ) (\boldsymbol{z}_i,y_i) (zi,yi),其中 y i y_i yi,源于原样例 ( x i , y i ) (\boldsymbol{x}_i,y_i) (xi,yi)。 则由 D D D生成了 D ′ D' D

(3)在 D ′ D' D上训练出一个学习器(次级学习器) h h h(参见图8.1右半部分)。

为避免频繁置换初级学习器组,实际上是采用批量方式(逐列学习器组对应样本组),即将表8.2的“依行处理”改为“依列处理”,上述第(2)步优化为:

  • 处理表8.2中第1列,即以 D ‾ 1 \overline{D}_1 D1训练出一初级学习器组,以该组处理 D 1 D_1 D1的样例得到对应的新样例;
  • 处理表8.2中第2列,即以 D ‾ 2 \overline{D}_2 D2训练出一初级学习器组,以该组处理 D 2 D_2 D2的样例得到对应的新样例;
  • ⋯ ⋯ \cdots\cdots ⋯⋯
  • 处理表8.2中第 k k k列,即以 D ‾ k \overline{D}_k Dk训练出一初级学习器组,以该组处理 D k D_k Dk的样例得到对应的新样例。

将新样例并在一起,则是由 D D D生成的 D ′ D' D

另外,【西瓜书图8.9】中的Stacking算法是二级的情形,可以直接扩展为多级的情形。

其他级联

将投票视为一级,则基于投票法的算法(如,AdaBoost)也是级联。
在级联算法中,若基学习器又是集成算法,形成多级集成。 如:
MutilBoosting是将AdaBoost作为Bagging的基学习器,反之,IterativeBagging是将Bagging作为AdaBoost的基学习器,二者使用的“材料”一样,但“次序”不一样,产生的效果不一样:

(1)Boosting关注降低偏差,Bagging关注降低方差。 IterativeBagging提升性能特点:初级基学习器(不同的算法侧重降低偏差或方差不同) ⟶ \longrightarrow Bagging基学习器(侧重降低方差) ⟶ \longrightarrow AdaBoost(侧重降低偏差)。 而MutilBoosting算法则相反:初级基学习器(不同的算法侧重降低偏差或方差不同) ⟶ \longrightarrow AdaBoost(侧重降低偏差) ⟶ \longrightarrow Bagging基学习器(侧重降低方差)。 故应从提升性能需求(参考2.9 在机器学习开发实践中如何改善学习器的性能? ,开发过程中要经常分析下一步改进的方向)和初级基学习器的特点进行选择。

(2)Boosting中对学习器训练是采用全部样本(【西瓜书图8.3】,构造分布序列逼近全量的分布,序列中的分布用于训练基学习器),而Bagging中对学习器的训练是采用部分样本(【西瓜书图8.5】,自助采样获得子样本集用于训练基学习器),IterativeBagging中,先是每个Bagging训练它的基学习器时,采用的是对数据集 D D D取部分样本集(自助采样) D ′ D' D,由【西瓜书式(2.1)】知,这样做有 1 3 \frac{1}{3} 31强的“漏网之鱼”,再由AdaBoost在数据集 D D D上用全量样本进行训练。 而MutilBoosting中,先是每个AdaBoost在数据集 D D D上使用全部样本进行训练,再由Bagging取部分样本 D ′ D' D进行训练。 显然,由于“漏网之鱼”的效应,IterativeBagging更有利于减小过拟合。

本文为原创,您可以:

  • 点赞(支持博主)
  • 收藏(待以后看)
  • 转发(他考研或学习,正需要)
  • 评论(或讨论)
  • 引用(支持原创)
  • 不侵权

上一篇:8.5再谈投票法(硬投票,软投票)
下一篇:8.7 多样性(“好而不同”)

机器学习算法系列(五)通常关注的是监督学习中的集成学习方法。集成学习是一种提高预测性能的技术,它通过结合多个基础模型(也称为弱分类器)来创建一个更强大的复合模型。以下是几种常见的集成学习算法: 1. **随机森林(Random Forest)**:这是一种基于决策树的集成方法,通过构建大量独立的决策树,并取其投票结果作为最终预测。随机特征选择部分数据训练增强了模型的稳定性多样性。 2. **梯度提升机(Gradient Boosting Machines, GBM)**:GBM是一个迭代的过程,在每个迭代中添加一个新的弱分类器来改正前一轮的错误,类似于“逆序”拟合残差。最终的预测是由各个弱分类器的预测加权平均得到。 3. **AdaBoost(Adaptive Boosting)**:这是一个序列化的算法,它逐步调整样本权重并优先训练那些先前错误预测较多的样本。每个新的模型会根据前一次的学习误差进行调整。 4. **Bagging(Bootstrap Aggregating)**:如集成学习中的Bootstrap,它创建多个训练集副本并对它们进行训练独立的模型,然后通过投票或平均来做出预测。这可以减少过拟合风险。 5. **Stacking级联)**:一种将多种模型组合起来的方法,其中较低层的模型提供原始数据,上层模型则综合这些输入进行预测。这允许使用复杂模型处理其他模型无法处理的数据表示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值