大家好,又见面了,我是你们的朋友全栈君。
翻到之前自己写的这篇博客,感觉写的还是不够简洁明了,特地回来改一下,顺便文末附上Kaggle内相关操作的代码,希望能够帮助学习的同学能够瞬间理解stacking这个概念。
stacking:stacking是一种分层模型集成框架。以两层为例,第一层由多个基学习器组成,其输入为原始训练集,第二层的模型则是以第一层基学习器的输出作为特征加入训练集进行再训练,从而得到完整的stacking模型。stacking的方法在各大数据挖掘比赛上都很风靡,模型融合之后能够小幅度的提高模型的预测准确度。
stacking详解:
借用拍拍贷风控比赛几位大神这张模型融合的例子,来讲解一下。其中的第三模块,预测M3数据就是一个stacking的过程。

具体训练过程:
图解:

举例:比如针对第一个模型RF,我们先将数据集划分成5折,1,2,3,4,5。步骤如下:
接下来再用同样的方法训练ET、GBDT、XGB,注意保持K折数据的一致!全部训练完成之后,将得到的四个预测结果带入下一层预测。
具体训练过程:将四个预测结果,拼接上各个样本的真实label,带入模型进行训练,最终再预测得到的结果就是stacking融合之后的最终预测结果了。
以上即为stacking的完整步骤!
Blending大体与stacking类似,只是将Kfold CV改为了 HoldOut CV,也就是原来Kfold CV是等距划分训练集,HoldOut CV根据自己定义的百分比进行训练集测试集的划分。
为方便理解,附上Kaggle stacking代码:https://www.kaggle.com/arthurtok/introduction-to-ensembling-stacking-in-python
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/125717.html原文链接:https://javaforall.cn