集成学习-Task5 Stacking

1. Stacking概述

        严格来说Stacking不是一种集成学习算法,它更像是一种集成策略。简单来说,Stacking是一种两层集成策略。它的第一层含有多个基础分类器,把预测的结果提供给第二层。第二层的分类器通常是逻辑回归,它会将第一层分类器的结果当做特征输出预测结果。

2. Blending——简化版的Stacking

        Blending也遵从Stacking的策略,但是比较简单,可以用来帮助深入理解Stacking。它的算法流程如下:

        (1)将数据集划分为训练集、验证集和测试集;

        (2)在第一层创建多个基模型,同质异质都可以;

        (3)用训练集训练基模型;

        (4)用训练好的模型对验证集和测试集做预测,得到各自的预测结果;

        (5)将不同模型在验证集上的预测结果拼接,形成新的训练数据,训练第二层的模型;

        (6)用测试集的预测结果作测试集,对第二层训练好的模型做预测。

        Blending的优点就是实现简单粗暴。但是缺点也很明显,就是在两层中都只能用上全体数据的一部分。

3. Stacking的流程

        为了克服Blending在两层中都只使用了部分数据的缺点,人们发明了Stacking。从Blending到Stacking的逻辑过程其实很简单。我们再回看Blending的流程,其中它会将数据集切分成训练集、验证集和测试集。我们在训练一般的机器学习模型的时候也会这么做。不过,这同样面临数据使用不充分的问题。因此人们发明了交叉验证法。也就是说在训练阶段,将训练集进行等分,每一份等分的数据都充当一次验证集。而Stacking相对与Blending的改进实际上也类似于从一般的验证集选取到交叉验证集的过渡。

        一个简单的Stacking算法流程如下图[1]所示。

jupyter

         可以发现Stacking与Blending的思路其实是一致的,只是Stacking采用了交叉验证的方式获取验证集。

        目前在sklearn中,还没有集成Stacking的模块,因此还需要额外下载一个叫做mlxtend的第三方库。至于Blending,一方面它效果不如Stacking,另一方面它靠手动的方式就可以实现。因此目前也没有哪个第三方库是支持的。

参考文献

[1] Stacking方法详解 - Christina_笔记 - 博客园

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值