模型集成:简述blending和stacking的操作

1.引言

假设我们有好几个模型的结果,如何把他们全部利用起来呢?

最简单的方法就是大家一起投票,一人一票,票高者得胜。

但是这时候问题来了,在这些模型中,有的模型效果比较好,有的模型效果比较差,如果好模型数量相对差模型比较少,那么投票结果也就不那么合理了。

(就好比一个专家和一堆小学生去投票一个专业问答知识)

于是,有人提出了对模型结果的加权投票,但是这又面临了一个问题,那就是这个权重需要手动调整,有时人为的决定权重可能并不准确,

所以有人进一步提出了让模型学习这个加权过程。

2.Blending

blending的方法:

学习一个两步的模型,第一步的模型学习原始特征到真实类标的映射,第二步的模型学习多个模型预测结果到真实类标的映射。

blending的过程:

1,将原始训练集分割为验证集和训练集。

2,利用分割后的训练集训练(使用训练集类标,学习出原始特征->类标的模型),并对验证集预测(这里没有用到验证集类标)。

3,多个分类器都做步骤2,并将对验证集的预测结果拼接,形成下一步的特征。

4,利用3中拼接后的结果(即不同分类器验证集的结果),去训练预测验证集对应的类标(真实的验证集类标在这里用到,学习出多个模型预测结果->类标的模型)。

5,这样,我们就得到了两层模型,当我们需要进行预测时,首先将测试集经过2中的模型得到测试结果,再将多个测试结果拼接后送入4中的模型,从而得到最终结果。

3.Stacking

stacking的方法:

与blending类似,都是学习两个映射模型,不同的是,stacking利用了K折交叉验证,相对于blending使用了更多数据,但是也有一定的数据泄露。

stacking的过程:

1,将原始数据分为k份,使用k-1份训练,1份做验证,重复k次,将k次验证集的结果拼接(这里实际上是学了k个映射模型,我们把这个k个映射模型分别对各自验证集的预测结果拼接)

2,和blending类似,这里将不同模型的结果拼到一起,然后直接训练第二层的模型,可以看出,这里在训练第二层模型时,相比于blending使用了更多的数据。

3,当需要预测时,首先通过第一层的k个映射模型,然后对这k个映射模型的结果取平均作为下一层模型的输入,然后我们使用第二层的映射模型映射出最终的结果。

4.blending对比stacking(参考)

Blending的优点在于:

1.比stacking简单(因为不用进行k次的交叉验证来获得stacker feature)

2.避开了一个信息泄露问题:generlizers和stacker使用了不一样的数据集

3.在团队建模过程中,不需要给队友分享自己的随机种子

而缺点在于:

1.使用了很少的数据(是划分hold-out作为测试集,并非cv)

2.blender可能会过拟合(其实大概率是第一点导致的)

3.stacking使用多次的CV会比较稳健

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值