【机器学习大杀器】Stacking堆叠模型

news2024/11/27 16:25:11

1.前言

        Kaglle比赛中使用Stacking模型是非常常见的大杀器,这是为什么呢?


【机器学习大杀器】Stacking堆叠模型

1.前言

2.Model 3: Stacking model

2.1 description of the algorithms:

2.2 interpretation of the estimated models:

 3. Extend

3.1 code sample

3.2 the coefficient of last mode


2.Model 3: Stacking model

===============================================

Include three models:  

=================

  1. Lasso;
  2. Random Forest;
  3. Gradient Boost.

==============================================================


2.1 description of the algorithms:


        当我们得到了3个鲁棒性相当但各自不同的模型时,这个时候我们该选择哪个模型?我想这是一件非常为难的事情,但通过集成学习的方法,我们可以轻松的将这3个模型合成为1个汲取了各个模型优点的更好的模型。Stacking正是这样一种策略,用于融合模型。

        2007 年,堆叠的理论背景被开发出来,并且当算法采用了更酷的名称Super Learner (Van der Laan、Polley 和 Hubbard 2007)。此外,作者说明Super Learner将学习Basic Learner预测的最佳组合,并且通常表现得与构成堆叠集成的任何单个模型一样好或更好。直到此时,堆叠工作的数学原因尚不清楚,堆叠被认为是一门黑色艺术。

但毫无疑问,**模型堆叠(Stacking)**是一种有效的集成方法,其中使用各种机器学习算法生成的预测被用作第二层学习算法的输入。该第二层算法经过训练,可以优化组合模型预测以形成一组新的预测。例如,当线性回归用作第二层建模时,它通过最小化最小二乘误差来估计这些权重。但是,第二层建模不仅限于线性模型;预测变量之间的关系可能更复杂,从而为采用其他机器学习算法打开了大门。

本实验中,我们正是使用了这样一个堆叠策略,使得我们模型的效果大幅度提升,我们在模型的第一层堆叠的模型有三个:{1.Lasso, 2.Random Forest, 3.Gradient Boost}, 且使用Linear Regression作为第二层模型。


2.2 interpretation of the estimated models:


        Stacking一般由两层组成。第一层:表现出色的基本模型(可以有多个);第二层:将第一层模型们的输出作为训练集得到的模型。第二层模型又被称作”meta-model“关键作用在于将第一层的所有模型的结果整合起来,进行输出。也就是说,第二层模型将第一层模型的输出作为特征进行训练。

        Stacking的整体步骤如下:

  1. 把原始数据切分成两部分:训练集D-train与测试集D-test,训练集部分用来训练整体的Stacking集成模型,测试集部分用来测试集成模型
  2. 该步骤有训练和测试:
    1.  训练  Stacking是基于交叉验证的,以五折交叉验证为例子,把训练集D-train分成五部分,训练五次,每一次选取一个没有选取过的部分作为验证集,如下所示。其中,Learn对应Training folds,用来训练初级学习器;下图中的Predict对应Validation fold,用来通过初级训练器得到五个预测结果Predictions_Train={p1,p2,p3,p4,p5},这些预测结果将合并在一起又变成一个新的训练集将用来训练次级学习器Model2
    2. 测试 训练五次也要测试五次,每次训练完一次模型后,也对测试集的数据进行测试, 最后得到了五个预测测试集结果,将五个预测结果取平均值作为该层模型的最终预测结果 Predictions_Test={p1,p2,p3,p4,p5},下一层的模型将把在新的测试集Predictions_Train上测试。

     3. 如果第一层堆叠了n个模型,那么将每个模型都进行步骤3的操作,最终得到了n个Predictions_Train Predictions_Test ,将n个Predictions_Train作为特征值投入第二层模型进行训练,训练完毕后,再使用第二层模型对测试集进行预测,最后把n+1个Predictions_Test合并结果当做最终预测结果。 

 3. Extend


3.1 code sample


from sklearn.ensemble import StackingRegressor
models = [('Lasso', lo), ('Random Forest', rf), ('Gradient Boost', gb_boost)]

stack = StackingRegressor(models, final_estimator=LinearRegression(positive=True), cv=5, n_jobs=4)
stack.fit(x_train, y_train)
stack_log_pred = stack.predict(x_test)
print(stack_log_pred)
stack_pred = np.exp(stack_log_pred)

plt.barh(np.arange(len(models)), stack.final_estimator_.coef_)
plt.yticks(np.arange(len(models)), ['Linear Regression', 'Random Forest', 'Gradient Boost']);
plt.xlabel('Model coefficient')
plt.title('Figure 4. Model coefficients for our stacked model');

3.2 the coefficient of last model


        为了更加深入了解Stacking干了什么,我们打印了我们使用skleran训练完成后的Stacking模型最后一层也就是第二层Linear Regression模型系数,如下图所示: 

         高和正的Linear Regression模型的系数的值coef_意味着更强的关系,通过上图得知我们合并的三个模型在Stacking中各自发挥作用重要性的比例是8:2:0,可见Gradient Boost对模型整体的预测结果影响是最大的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/3921.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

终于盼到了,Python 数据科学速查表中文版来了

近几年以来,Python 的应用场景越来越多,几乎可以应用于自然科学、工程技术、金融、通信和商业等各种领域。究其原因在于 Python 的简单易学、功能强大。 想系统地学点东西,发现很多不错的技术文档都是英文资料,发现英文竟然成为了…

数据结构考研第六章——图(内含动图)

大纲要求:图的相关算法相对较多,通常只要求掌握其基本思想和实现步骤,而算法的具体实现不是重点。 一、图的基本概念 图的概念:图G由顶点集V和边集E组成的,记为G(V,E)有向图&#x…

6_显示登录信息以及上传图片

目录一 显示登录信息二 账号设置修改用户图片一 显示登录信息 实现思路 书写一个拦截器 loginTicketInterceptor 在 preHandle 方法中获取用户发送请求时携带的 cookie书写一个专门获取cookie的工具类 CookieUtil查数据库,数据库是否存在该 ticket,判断该凭证是否有效,-凭证是…

【论文阅读】EDPLVO: Efficient Direct Point-Line Visual Odometry

一、公式及符号约定 这篇论文是将直接法的残差计算从点扩展到了线段,所以一些符号在第三章的部分提前做了约定。用Π表示投影的函数,也就是用像素坐标和内参矩阵以及深度信息,投影出点的空间坐标,反之Π-1表示的是将空间坐标投影…

Git使用详细教程

1. cmd面板的常用命令 clear:清屏cd 文件夹名称----进入文件夹cd … 进入上一级目录(两个点)dir 查看当前目录下的文件和文件夹(全拼:directory)Is 查看当前目录下的文件和文件夹touch 文件名----创建文件echo 内容 > 创建文件名----创建文件并写入内容rm 文件名…

基于udp实现回显服务器,翻译服务器

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 udp socket 要掌握的类: 1.DatagramSocket 2.DatagramPacket 一、udp版本回显服务器 服务端: 完整代码 客户端: 完整代码 udp版本翻译…

Spring注入和生命周期

目录 获取Bean对象(对象装配) 属性注入 构造注入 Setter注入 三种注入的优缺点分析 注入的注解: 一个类型多个bean对象的注入方式 1.让变量名等于bean的id 2.用Resource注解(name“bean的id”) 3.用Qualif…

Java 核心技术 0 —— Class加载 和 运行时数据区域

JVM 是 字节码的运行环境,负责装载class到JVM内部,解释编译为对应平台的机器码指令进行执行,对于JVM设计有权威的定义规范,了解 JVM 类加载各部的主要功能 和 运行时数据区域组成 很有意义。 磁盘上有一个.java文件,通…

【目标检测】swin-transformer训练自己的数据集

文章目录1. 数据集的制作1.1. Labelme制作数据集1.2 COCO数据集格式2. 配置swin-transformer3. 训练自己的数据集4. 训练5.参考链接1. 数据集的制作 1.1. Labelme制作数据集 pip install labelme然后在桌面搜索框中找到labelme,然后打开,或者直接在命令…

Python 工匠 第一章 变量与注释

1.1 基础知识 1.1.1 变量常见用法 Python 是一门动态类型的语言,因此无须提前声明变量类型;并且由于其是弱类型语言,即可以更改其变量类型。动态类型语言/弱类型语言 a 10 # 不需要提前声明变量类型 a "a" # 可以更改其变量类…

【架构师】解决方案架构师常用的5种类型架构图

0. 背景 在给不同部门的同学讲解系统时,如果用手势解释解决方案,还有很多“这块和这块通过...”在解释复杂的概念时,大部分人都会晕。我们需要一个视觉效果。有人说一个架构图不就行了吗?但架构图不是一个“放之四海而皆准”的解决…

一、springcloud-eureka服务注册与发现

SpringCloud简介 Spring Cloud 为开发者提供了工具来快速构建分布式系统中的一些常见模式(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话,集群状态)。分布式系统的协调导致了样板…

04 Vue属性配置

1、ref属性 App.vue代码&#xff1a; <template><div><h1 v-text"msg" ref"myTitle"></h1><button click"showDom">点我输出上方的DOM元素</button><school ref"school" id"sch"/&…

Node.js | Express+MongoDB 实现简易用户管理系统(一)(项目搭建 | RESTful API架构 | 前后端交互)

&#x1f5a5;️ NodeJS专栏&#xff1a;Node.js从入门到精通 &#x1f5a5;️ 博主的前端之路&#xff08;源创征文一等奖作品&#xff09;&#xff1a;前端之行&#xff0c;任重道远&#xff08;来自大三学长的万字自述&#xff09; &#x1f5a5;️ TypeScript知识总结&…

【javaEE】多线程进阶(Part1 锁策略、CAS、synchronized )

目录前言/补充4. 描述一下线程池的执行流程和拒绝策略有哪些&#xff1f;【面试题&#xff01;】一、常见锁策略一&#xff09;乐观锁VS悲观锁二&#xff09;读写锁VS普通互斥锁三&#xff09;重量级锁VS轻量级锁四&#xff09;自旋锁VS挂起等待锁五&#xff09;公平锁VS非公平…

Vue框架背后的故事

文章目录前言Vue萌芽Vue名字的由来因着Vue免试进入MeteorVue逐步完善Taylor推荐VueVue因受质疑发布1.0LinusBorg加入萌生全职做Vue想法Vue在恰到好处的时机出现探索经济来源Serah Drasner加入全职投入Vue建设Vue引入国内Vue受拥国内Vue在决策背景方面的独有优势总结本期推荐前言…

JVM垃圾回收系列之垃圾收集器二

随笔 最近两个星期因为要忙公司项目上线的事情以至于发表的文章会显得碌碌庸流&#xff0c;在此以示歉意 引言 本文将介绍HotSpot中的G1GC 参考书籍&#xff1a;“深入理解Java虚拟机” 个人java知识分享项目——gitee地址 个人java知识分享项目——github地址 G1GC 介…

双向链表的操作

什么是双向链表&#xff1f; 指针域&#xff1a;用于指向当前节点的直接前驱节点&#xff1b; 数据域&#xff1a;用于存储数据元素。 指针域&#xff1a;用于指向当前节点的直接后继节点&#xff1b; typedef struct line{struct line * prior; //指向直接前趋&#xff0c;结…

超级简单的机器学习入门

超级简单的机器学习入门 文章目录超级简单的机器学习入门0.写在前面1.机器学习基本概念2.机器学习算法的类型2.1 监督学习2.2 无监督学习2.3 监督学习和无监督学习的对比2.4 强化学习3.机器学习的三个基本要素3.1 模型3.2 学习准则3.2.1 损失函数3.2.2 欠拟合和过拟合&#xff…

MySQL数据库 || 增删改查操作详解

目录 前言&#xff1a; 插入数据 查询数据 全列查询 指定列查询 带表达式查询 去重查询 查询结果排序 条件查询 比较运算符 逻辑运算符 示例 模糊查询 示例 空值比较 分页查询 修改数据 删除数据 注意&#xff1a; 前言&#xff1a; &#x1f388;增删改查…