详解stacking过程

翻到之前自己写的这篇博客,感觉写的还是不够简洁明了,特地回来改一下,顺便文末附上Kaggle内相关操作的代码,希望能够帮助学习的同学能够瞬间理解stacking这个概念。stacking:stacking是一种分层模型集成框架。以两层为例,第一层由多个基学习器组成,其输入为原始训练集,第二层的模型则是以第一层基学习器的输出作为特征加入训练集进行再训练,从而得到完整的stacking模型。sta…

大家好,又见面了,我是你们的朋友全栈君。

翻到之前自己写的这篇博客,感觉写的还是不够简洁明了,特地回来改一下,顺便文末附上Kaggle内相关操作的代码,希望能够帮助学习的同学能够瞬间理解stacking这个概念。

stacking:stacking是一种分层模型集成框架。以两层为例,第一层由多个基学习器组成,其输入为原始训练集,第二层的模型则是以第一层基学习器的输出作为特征加入训练集进行再训练,从而得到完整的stacking模型。stacking的方法在各大数据挖掘比赛上都很风靡,模型融合之后能够小幅度的提高模型的预测准确度。

stacking详解:

借用拍拍贷风控比赛几位大神这张模型融合的例子,来讲解一下。其中的第三模块,预测M3数据就是一个stacking的过程。

 

详解stacking过程

  • 第一层:我们采用RF、ET、GBDT、XGB四种模型,分别对训练样本进行预测,然后将预测结果作为下一层的训练样本。

具体训练过程:

  1. 划分training data为K折,为各个模型的训练打下基础;
  2. 针对各个模型RF、ET、GBDT、XGB,分别进行K次训练,每次训练保留K分之一的样本用作训练时的检验,训练完成后对testing data进行预测,一个模型会对应5个预测结果,将这5个结果取平均;
  3. 最后分别得到四个模型运行5次之后的平均值,同时拼接每一系列模型对训练数据集的预测结果带入下一层;

图解:

详解stacking过程

举例:比如针对第一个模型RF,我们先将数据集划分成5折,1,2,3,4,5。步骤如下:

  1. 保留2,3,4,5训练,用1做测试数据(查看当前训练的效果,可配合early stop)记录下该折测试数据的预测结果,同时预测testing data(此处的testing data就是我们要最终提交结果的那部分数据);
  2. 保留1,3,4,5训练,用2做测试数据并记录下该折测试数据的预测结果,预测testing data;
  3. 保留1,2,4,5训练,用3做测试数据并记录下该折测试数据的预测结果,预测testing data;
  4. 保留1,2,3,5训练,用4做测试数据并记录下该折测试数据的预测结果,预测testing data;
  5. 保留1,2,3,4训练,用5做测试数据并记录下该折测试数据的预测结果,预测testing data;
  6. 训练五轮之后得到针对testing data的五个预测值,取平均值,同时拼接每一系列模型对训练数据集的预测结果;

接下来再用同样的方法训练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.net/125717.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ubuntu16安装vmware tools_web中nbsp什么意思

    ubuntu16安装vmware tools_web中nbsp什么意思【转】Ubuntu9.04下安装VmwareTools的hgfs无法显示内容的解决方法:1.要在Vmware的Ubuntu的虚拟机setting->option里面把要共享的目录指定并使能读写 2.运行VmwareTools安装,应该在Ubuntu的桌面上出现Vmware-tools的安装包3.选择其中的tar包,拷到/tmp目录下解压缩,并运行./Vmware-inst

    2022年9月14日
    5
  • ie11安装程序遇到错误_ie11卸载不了发生错误

    ie11安装程序遇到错误_ie11卸载不了发生错误初始故障:360浏览器、ie浏览器启动后卡死,首先卸载360浏览器,出现异常,随后程序卸载中卸载ie11,重新添加时,报错0x8000ffff故障描述:无法安装ie相关内容,所有浏览器无法下载软件程序,windows搜索按钮打开无内容,所有windows组件无法添加,报错0x8000ffff,程序可选功能卸载ie11失败解决步骤:1.sfc/scannow,提示修复程序运行中,请重新启动。删除pending.xml,使用sfc/scannow扫描出错误文件,提示无法修复2.使用DISM.exe

    2022年9月24日
    2
  • JAVA中json转Map,jsonArray转List集合,List集合转json

    JAVA中json转Map,jsonArray转List集合,List集合转json在写代码时,经常会遇到各转类型之间互相转换,比如json转换为Map,jsonArray转List集合,List集合转json,现在整理一个工具类,方便日后查阅。importjava.util.HashMap;importjava.util.Iterator;importjava.util.List;importjava.util.Map;importorg.apac

    2022年6月23日
    27
  • datagrip 2022 激活码 mac(JetBrains全家桶)「建议收藏」

    (datagrip 2022 激活码 mac)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~9AAG1RZ8NI-eyJsaWNlb…

    2022年4月1日
    1.0K
  • Linux命令:traceroute命令(路由跟踪)

    Linux命令:traceroute命令(路由跟踪)traceroute是用来检测发出数据包的主机到目标主机之间所经过的网关数量的工具。traceroute的原理是试图以最小的TTL(存活时间)发出探测包来跟踪数据包到达目标主机所经过的网关,然后监听一个来自网关ICMP的应答。发送数据包的大小默认为38个字节。原理:程序利用增加存活时间(TTL)来实现其功能。每当数据包(3个数据包包括源地址,目的地址和包发出的时间标签)经过一个路由器,其存活时间就会

    2022年6月17日
    37
  • pycharm激活成功教程教程

    pycharm激活成功教程教程转载查询 https blog csdn net u014044812 article details 86679150 转载于 https www cnblogs com SakuraYuanYu p 10542237 html

    2025年8月1日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号