向AI转型的程序员都关注了这个号 👇👇👇
机器学习AI算法工程 公众号:datayx
最近想用下stacking,搜了很多,现在把所学到的记录下
比较好的一个资料是:
英文版:https://mlwave.com/kaggle-ensembling-guide/
翻译版:https://blog.csdn.net/a358463121/article/details/53054686
微信公众号 datayx
之前乱搜一通,发现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
阅读过本文的人还看了以下:
分享《深度学习入门:基于Python的理论与实现》高清中文版PDF+源代码
《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码
李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材
【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类
如何利用全新的决策树集成级联结构gcForest做特征工程并打分?
Machine Learning Yearning 中文翻译稿
斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)
中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程
不断更新资源
深度学习、机器学习、数据分析、python
搜索公众号添加: datayx
长按图片,识别二维码,点关注
AI项目体验