前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >模型堆叠(Stacking)和模型融合的原理与实现以及一个库heamy的介绍

模型堆叠(Stacking)和模型融合的原理与实现以及一个库heamy的介绍

作者头像
Sam Gor
发布2019-10-23 19:36:38
1.8K0
发布2019-10-23 19:36:38
举报
文章被收录于专栏:SAMshare

最近想用下stacking,搜了很多,现在把所学到的记录下

比较好的一个资料是:

英文版:https://mlwave.com/kaggle-ensembling-guide/

翻译版:https://blog.csdn.net/a358463121/article/details/53054686

之前乱搜一通,发现stack和blend傻傻分不清楚,后来才知道很多人stack和blend是混着叫的,所以不必纠结这个名字。只要知道stack是用cv交叉验证来得出元模型的特征(一个基模型产出一个元特征作为二级模型的输入),而blend是用留出法,比如百分之80作训练,另外百分之20的预测值作为元模型的标签(而stack是用全部的训练集预测来产出一个基模型对应的标签,二级模型只用那百分之20的预测值,这样可以把堆叠用的数据集和二级模型泛化用的数据集分开,而stacking就没有分开,所以stakcing有数据泄露,存在过拟合的风险)。

看下面的链接

https://github.com/emanuele/kaggle_pbr/blob/master/blend.py

说是blend,貌似是stakcing,whatever,能用就行,自己心里明白。好生mark下,有大用处。

下面介绍一个比较不错的库heamy。

这里有个官方的demo,

https://github.com/rushter/heamy/tree/master/examples

csdn上有个较为清晰的例子,不过觉得有些歧义:

https://blog.csdn.net/data_scientist/article/details/79036382

下面是几个方法的介绍

estimator.py中的方法(注意它们返回的都是数据集)

pipeline.py中的方法(注意它们返回的都是数据集)

上面的两个py的方法得出二级模型的输入,这些基模型的预测值的组合方法:一般的,blending和stacking都是用LR,其他的用加权平均(下面会介绍怎么找最佳的加权系数)、取平均、取最大值。可以参考https://blog.csdn.net/Gin077/article/details/84344398

---------------------------------加权平均---------------------------------

下面是三层stacking模型,第三层用find_weight方法得出最优各个基模型的权重(这里是对各基模型的预测结果作加权)。看源码可以指定寻找权重的方法

下面是获取最优权重用的方法

获取到最后权重后就可得出预测结果了

result = stack_pipeline.weight(weights).validate(mean_absolute_error,10)

原文https://blog.csdn.net/Gin077/article/details/84339790

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SAMshare 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档