堆叠泛化(Stacking Generalization)

Stacking是一种集成学习技术,通过训练学习器结合多个基础学习器,通常能获得比单一模型更好的性能。该技术已在多种监督和无监督学习任务中取得成功应用。

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

Stacking是一种通用的通过训练学习器来结合个体学习器的方法,堆叠泛化是一种在集成学习中对数据从纵向进行划分的技术,一般称为SG技术,其一般用于最小化一个或多个泛化器的泛化误差率。
基本思想为:数据划分的纵向上有两层学习器,把Level 0的Base-learner学习器的输出,作为Level 1学习器的输入,Level 1的学习器又被称为Meta-learner或者Generalizer。
Stacking Generalization首次由Wolpert1于1992年提出,并且他认为这类似于对交叉验证(cross-validation),通过“胜者全得”(Winner takes all)的方式来集成的方法。

在这里插入图片描述

Wolpert根据泛化器数量的多寡将其分为两种训练模式–多泛化器和单泛化器

在这里插入图片描述

多泛化器:

两个泛化器 G1、G2,一个学习数据集L,将L分成两份-{ L-(x,y)}和(x,y),提出一个问题q。
1. 使用{ L-(x,y)}训练G1、G2,然后分别对得到的模型输入x,得到输出g1、g2,将{(g1,g2),y}放入新数据集L将L做其他划分,得到更多数据并加入L
2. 使用完整L训练G1、G2,分别输入q,得到新的对(g1,g2
3. 使用L训练新的泛化器G3,对模型输入(g1,g2),输出即为最终结果。

单泛化器

泛化器G,其他数据如上
1. 使用{ L-(x,y)}训练G,对模型输入x,得g。记x距离集合{ L-(x,y)}最近距离的向量(可选最近的几个向量,取均值)为δ。将{(x,δ),(g-y)}加入新集合L,将L做其他划分,得到更多数据并加入L
2. 使用完整L训练G,输入q,得到输出g,取q距离L最近向量δ,得向量对(g,δ)。
3. 使用L训练新的泛化器G,输入(g,δ)。输出为G的猜测误差,将估计误差与2中的输出g相加即得到最终结果。

策略执行过程2

在这里插入图片描述

方法应用:

堆叠通常能获得比任何单个的训练模型更好的性能。它已被成功地用于监督学习任务(包括回归、分类等)和无监督学习(密度估计),也可以用来估计装袋错误率。有报道表明,它的表现超过了贝叶斯模型平均。堆叠泛化方法在Kaggle等数据比赛中也被广泛使用,能够有效提高模型的性能。比如在Netflix比赛中,有选手通过采用混合(blending)的方法获得奖金,这种方法也被认为是堆叠的一种形式。

拓展—Bias-Variance平衡

在这里插入图片描述

Stacking的基因就是Ensemble中Aggregation方法进一步泛化的结果, 是通过Meta-Learner来取代Bagging和Boosting的Voting/Averaging来综合降低Bias和Variance的方法。

参考:


  1. Wolpert D H. Stacked generalization[J]. Neural networks, 1992, 5(2): 241-259. ↩︎

  2. 链接 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值