几句话让你明白什么是Stacking模型

模型融合作为kaggle等比赛的提分方法,你不知道可就落伍了,对于网上的大部分讲解个人看法是把一个简单的问题说的复杂了,反而不好理解,所以本文将通过简短的几句话讲述一下Stacking原理,文章最后附上kaggle对Stacking的一个案例,这样你就会完全掌握了,好的,下面开始

Staching原理

这里假设你的训练集有10000条,测试集有2500条,并且基学习器有10个(这个是你自己设定的),5折交叉验证,每一折8000训练集,2000验证集

基学习器1

第一折:基学习器18000训练集进行训练模型,对2000验证集进行验证,得到2000行1列的结果a1对2500测试集进行训练得到2500行1列的结果b1.

第二折:基学习器18000训练集进行训练模型,对2000验证集进行验证,得到2000行1列的结果a2对2500测试集进行训练得到2500行1列的结果b2

第三折:基学习器18000训练集进行训练模型,对2000验证集进行验证,得到2000行1列的结果a3对2500测试集进行训练得到2500行1列的结果b3

第四折:基学习器18000训练集进行训练模型,对2000验证集进行验证,得到2000行1列的结果a4对2500测试集进行训练得到2500行1列的结果b4.

第五折:基学习器18000训练集进行训练模型,对2000验证集进行验证,得到2000行1列的结果a5对2500测试集进行训练得到2500行1列的结果b5.
注意:每一折的训练集和验证集都发生了变化,所以最后得到的a1,…,a5是不相同的。

下面是关键

对5折后的验证集结果a1,…,a5按列拼接,得到10000行1列的结果 ,这里记为A1;对5个测试集结果求均值得到2500行1列的结果B1

以上是一个基分类器的结果,假如有十个基分类器,最后的验证集的结果就是A1,A2,A3,…,A10,测试集结果就是B1,B2,B3,…,B10。

画重点:

由上面得到的结果得到新的训练集,新的测试集,如下表所示

A1 A2 A10 y

A1,A2,A3,…,A10为新的数据集的特征(10000x10的数据),标签y还是原数据的标签
测试集变为

B1 B2 B10 y
?

当然这里的y是你接下来要预测的

好了,以上就是两层的Stacking融合模型,当然你也可以继续构造层数,原理一毛一样,但Stacking融合模型有时候会过拟合,你在构造的时候需要添加正则化向防止过拟合。
介绍完毕,看了这篇文章相信你已经了解了Stacking是个什么鬼了,附上kaggle案例介绍,传送门,结合着案例就会更好的理解了,欢迎大家留言。

代码后续奉上!!!!!!

发布了49 篇原创文章 · 获赞 11 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/sun_xiao_kai/article/details/98209003