(十)stacking 简介

数据挖掘竞赛利器-Stacking和Blending方式 一.Stacking思想简介 1.Stacking的思想是一种有层次的融合模型,比如我们将用不同特征训练出来的三个GBDT模型进行融合时,我们会将三个GBDT作为基层模型,在其上在训练一个次学习器(通常为线性模型LR),用于组织利用基学习器的答案,也就是将基层模型的答案作为输入,让次学习器学习组织给基层模型的答案分配权重。 2.下图是个简单的例子,A、B是学习器,C、D、E是进行答案再组织的次... 阅读详情

作者:chen_h
微信号 & QQ:862251340
微信公众号:coderpai


(一)机器学习中的集成学习入门

(二)bagging 方法

(三)使用Python进行交易的随机森林算法

(四)Python中随机森林的实现与解释

(五)如何用 Python 从头开始实现 Bagging 算法

(六)如何利用Python从头开始实现随机森林算法

(七)AdaBoost 简介

(八)Python 中的 AdaBoost 分类器实例

(九)AdaBoost 中参数对于决策边界复杂度分析

(十)stacking 简介


集成学习通过组合多种模型来改善机器学习的结果,与单一的模型相比,这种方法允许产生更好的预测性能。这就是为什么在许多著名的机器学习竞赛中,集成学习方法总是被优先考虑。集成学习属于元算法,即结合数个“好而不同”的机器学习技术,形成一个预测模型,以此来降方差(bagging),减偏差(boosting),提升预测准确性(stacking)。今天,我们来学习的就是其中一个技术 stacking 方法。

如果你的模型没有达到 50% 的正确率,并且你经常发现自己将机器学习模型调整到凌晨,但是你又只能提高一点点的性能。那么,这篇文章非常适合你。

什么是模型堆叠?

模型堆叠是一种数据科学基础方法,它依赖于多个模型的结果,即将多个弱学习器的结果进行组织,往往胜过单一的强模型。过去几年中大多数主要 kaggle 比赛的获胜者在最终获奖模型中都使用了模型堆叠。

堆叠模型类比于现实世界的例子,就比如商业团队,科学实验,或者体育团队。如果团队中的所有成员都非常擅长完成同样的任务,那么团队就会摧毁任何需要这个任务的挑战。

在现实中我们如何实践?

下面你可以看到一个最近的主要 kaggle 比赛的最佳获奖模型的例子:

在这里插入图片描述

注意:拥有足够数量的数据以执行强大的模型堆栈非常重要。为了避免过度拟合,你需要在每个堆叠(训练阶段)进行交叉验证,并将一些数据作为测试阶段的数据,在训练集和测试集上面保证模型的性能之间没有太大的差异。

  • 初始阶段:你运行各种不同的独立模型,并花一些时间分析其各自的性能指标,并考虑某些模型可能比其他模型做的更好的地方。
  • 阶段一集成:你选择这些模型的小团队,确保其预测系数之间的相关性较低,以确保你的 stacked model 允许较弱链接之间的大量交叉学习。你可以获取预测的平均值并构建一个新表,该表将在第 2 阶段输入一个新的较小的模型团队。
  • 阶段二集成:你运行新的模型集合,它将使用阶段 1 中的平均预测度量作为要素,以便了解有关原始变量之间关系的新信息。
  • 阶段三集成:你重复相同的过程,将阶段二中的模型的平均预测提供给最终的“元学习器”模型,该模型应该经过精心挑选,以适应你尝试解决的问题类型。在上面的示例中,比赛者使用线性回归作为最终模型,因为这可能是在初始阶段作为独立模型表现最佳的模型之一。
我们都应该试试吗?

绝对!!对于我的第一次模型堆叠实验,我决定扩展我最新的数据科学项目,这是一个自然语言处理模型,旨在从歌词中预测歌曲的类型。对于该项目,我们预处理了来自八种不同类型的 16000 首歌词列表:嘻哈,乡村,流行,摇滚,金属,电子,爵士和R&B。我们确保在我们的数据集中包含每种类型的 2000 首歌曲,以避免类不平衡的问题。第一步是运行各种基本模型,其预测方法之间的相关性较低,以便能够相应的构建我们的模型堆叠块,请看下面的结果:

在这里插入图片描述

接下来,我们决定采用前3个模型并通过广泛的 GridSearch 进行一些超参数优化,以便了解我们的顶级独立模型可以实现的最高精度。结果如下:

在这里插入图片描述

正如你从下面的图表中看到的那样,我们的最佳表现达到了 50%,咋一看似乎不是很高,但考虑到我们的模型视图预测一首歌属于哪种类型。而我们这个准确性已经是随机猜测的四倍了。这意味着大约一半的时间,我们的模型准确的预测了一首歌的类型,仅基于该歌曲的歌词,并且在超过3000首歌曲的测试集上达到了 50% 的测试准确度,这个结果已经相当好了。

首先,我选择结合并平均我的三个最弱学习器的预测:随机森林,adaboost和KNN分类器,并构建一个新的数据框架,我可以提供给我们最强大的学习器。代码如下:

在这里插入图片描述

上表中的每一列是八个类型中的每一个的平均预测系数,并且每一行是具有对应的真实类型的歌词,存储在作为类标签列表的单独的 y 变量中。

接下里,我将数据分为训练集和测试集,并且运行模型堆栈的第二阶段,我的强学习器:GradientBoost 和朴素贝叶斯,使用来自弱学习器的组合预测来生成一组新的预测。然后,我将第二阶段的预测结果合并到一个最终的数据框架中,我希望将其提供给我的最终元学习器:NN。

在这里插入图片描述

我选择使用神经网络进行模型堆叠的最后阶段,因为 NN 往往在多分类问题上表现很好,并且 NN 非常善于找到隐藏特征并找出依赖变量和自变量之间的复杂关系,我使用 softmax 作为输出层激活函数,因为我们师徒预测八个类别,最终结果如下:

在这里插入图片描述

最后的想法

当我在我最初的 NLP 项目中看到这个模型堆叠实验的结果时,我是非常惊讶的,80% 的正确率是在测试数据集上面产生的,该测试数据由 NN 模型以前从未见过的 3600 首歌词组成。交叉验证的训练准确率达到 86% 也是非常令人印象深刻的,让我特别高兴的是训练集和测试集上面没有显著差异,这是非常好的。

我多次检查我的代码和数学,以确保我的交叉验证和训练/测试在每个阶段都有效,因为性能提升 30% 似乎有点不太可能。但我找不到任何我的代码中的错误。因此,我对使用模型堆叠的第一次尝试感到非常高兴。

stacking模型融合 模型融合 模型融合的方法 简单加权融合: 回归(分类概率):算术平均融合(Arithmetic mean),几何平均融合(Geometric mean); 分类:投票(Voting) 综合:排序融合(Rank averaging),log融合 stacking/blending: 构建多层模型,并利用预测结果再拟合预测。 boosting/bagging(在xgboost,Ad... 阅读详情

相关推荐

机器学习中的Stacking模型融合

最近学习了模型融合的方法,遇到了Stacking的方法来解决模型融合的问题,因此做了以下总结。 1.Stacking是什么? Stacking简单理解就是讲几个简单的模型,一般采用将它们进行K折交叉验证输出预测结果,然后将每个模型输出的预测结果合并为新的特征,并使用新的模型加以训练。 模型融合的图示如下 2.Stacking的好处在哪里? 做大数据的比赛的一般是是使用单一模...

小码仔 2万+

集成学习之Stacking(堆栈)方法

集成学习是监督式学习的一种。主流的方法有Bagging、Boosting和Stacking。本文主要对Stacking进行讲解分析。Bagging是采取投票或平均的方式来处理N个基模型的输出,而Stacking方法是训练一个模型用于组合之前的基模型。具体过程是将之前训练基模型的输出构造为一个训练集,以此作为输入来训练一个模型,以获得最终的输出。...

Iron_lyk Blog 1万+

集成学习-Stacking-Python实现

基于前面对Blending集成学习算法的讨论,我们知道:Blending在集成的过程中只会用到验证集的数据,对数据实际上是一个很大的浪费。为了解决这个问题,我们详细分析下Blending到底哪里出现问题并如何改进。在Blending中(Blending文章链接 ),我们产生验证集的方式是使用分割的方式,产生一组训练集和一组验证集,这让我们联想到交叉验证的方式。顺着这个思路,延伸出了stacking这种模型的方案。 1.Stacking简介 stacking严格来说并不是一种算法,而是精美而又复杂的,对模型集

love1005lin的博客 4143

Keras中实现神经网络的Stacking方法

Table of Contents 1. stack模型的一般集成方式2. 分类任务的定义3. 神经网络-多层感知器4. 训练并保存模型创建MLP模型并训练创建存放模型的文件夹创建MLP子模型并保存5. 独立Stacking Model载入子模型(sub-model)训练元模型(meta-learner)举例: 元模型=llogistic为例6. 集成的stacking Model-神经网络嵌入神...

Jack_kun的博客 5586

模型融合之Stacking技术

stacking的过程有一张图非常经典,如下: 虽然他很直观,但是没有语言描述确实很难搞懂。     上半部分是用一个基础模型进行5折交叉验证,如:用XGBoost作为基础模型Model1,5折交叉验证就是先拿出四折作为training data,另外一折作为testing data。注意:在stacking中此部分数据会用到整个traing set。如:假设我们整个training s...

Ezail的博客 8789

Stacking集成学习算法

由于Blending在集成过程中只会用到验证集的数据,对数据的利用效率低,为了解决这个问题,可以引入交叉验证的方式。Stacking集成学习算法就是基于这个想法。

weixin_43595036的博客 3406

【机器学习】模型融合方法概述

转自:https://zhuanlan.zhihu.com/p/25836678 我理解的Kaggle比赛中提高成绩主要有3个地方 特征工程调参模型融合 之前每次打比赛都只做了前两部分,最后的模型融合就是简单的加权平均,对于进阶的Stacking方法一直没尝试,这几天摸索了一下还是把Stacking方法给弄懂了。(本文重点讲解Stacking,Bagging和Boosting有很多权威的好教程,所以不详细介绍)最...

积一时之步,臻千里之遥程 1467

集成学习之Stacking

一、Stacking思想和主要步骤 Stacking可以理解成升级版的Blending,关键在于它使用了“Cross-validation”对训练集进行处理。 首先我们会得到两组数据:训练集和测试集。将训练集分成5份:train1,train2,train3,train4,train5。 选定基模型。这里假定我们选择了xgboost, lightgbm 和 randomforest 这三种作为基模型。比如xgboost模型部分:依次用train1,train2,train3,train4,train

Xiao_Spring的博客 3228

【Stacking改进】基于随机采样与精度加权的Stacking算法

【Stacking改进】基于随机采样与精度加权的Stacking算法 摘要 近年来,人工智能的强势崛起让我们领略到人工智能技术的巨大潜力,机器学习也被广泛应用于各个领域,并取得不错的成果。本文以Kaggle竞赛House Prices的房价数据为实验样本,借鉴Bagging的自助采样法和k折交叉验证法,构建一种基于伪随机采样的Stacking集成模型,用于房价预测。首先利用GBDT对数据集进行简单训练,并得到各个特征重要性。接着对数据集进行多次随机采样,然后根据特征重要性进行属性扰动,组成多个训练数据子集和

you_just_look的博客 6922

机器学习ensemble之stacking方法及新手的坑

tags: [机器学习, ensmeble] Bagging Boosting Stacking&blending 理解 错误认知 正确认知 多维数据的处理办法 方法一 方法二(reshape) Resources: 原始博客查看:小白机器学习博客 Ensembel(集成学习)是一个简单,但非常有效的算法,在各大kaggle竞赛中,获得很高排名的,很多都应用了...

JonOnEarth 8809

python stacking_模型融合之Stacking(原理+Python代码)

数据来源于天池赛题:零基础入门数据挖掘 - 二手车交易价格预测地址:https://tianchi.aliyun.com/competition/entrance/231784/introduction?spm=5176.12281957.1004.1.38b02448ausjSX目录一、原理介绍二、代码实现三、结果解读一、原理介绍在数据挖掘过程中,单个模型的泛化能力往往比较单薄,而模型融合的方法...

weixin_34781110的博客 3512

【集成学习】:Stacking原理以及Python代码实现

  Stacking集成学习在各类机器学习竞赛当中得到了广泛的应用,尤其是在结构化的机器学习竞赛当中表现非常好。今天我们就来介绍下stacking这个在机器学习模型融合当中的大杀器的原理。并在博文的后面附有相关代码实现。 总体来说,stacking集成算法主要是一种基于“标签”的学习,有以下的特点:   用法:模型利用交叉验证,对训练集进行预测,从而实现二次学习   优点:可以结合不同的模型  ...

极歌科技 1万+

集成学习方法之Bagging,Boosting,Stacking

        “团结就是力量,这力量是铁,这力量是钢… …”,小学学的一首歌,至今还刻骨铭心。“团结就是力量”,完美的阐述了机器学习中非常强大的集成学习方法的思想。其实,集成学习方法就这么简单,将多个模型组合在一起会得到更强大的模型。本篇就让我们一起来探讨比赛必用神技——集成学习方法(Ensemble Learning Method)。   &n...

NLP_谢立侠 4604

stacking的详细代码教程

1.Stacking是什么? Stacking简单理解就是讲几个简单的模型,一般采用将它们进行K折交叉验证输出预测结果,然后将每个模型输出的预测结果合并为新的特征,并使用新的模型加以训练。 Stacking模型本质上是一种分层的结构,这里简单起见,只分析二级Stacking.假设我们有3个基模型M1、M2、M3。 基模型M1,对训练集train训练,然后用于预测train和test的标签列,分...

人生百态361 5053

Windows 10/11一键搞定HDF5文件查看:HDFView 3.4.1免配置安装指南(附中文路径避坑技巧)

本文详细介绍了HDFView 3.4.1在Windows 10/11上的免配置安装方法及中文路径优化技巧。作为HDF5文件查看的专业工具,HDFView 3.4.1简化了安装流程,提升了科研数据处理效率,特别适合遥感、气象等领域的研究人员使用。

qsc9012345的博客 1146

《基于Yolo算法的火灾检测系统设计与实现》开题报告

在消防安全领域,火灾对生命财产安全构成严重威胁。传统的火灾检测手段存在诸多不足,如误报率高、检测范围有限、响应速度慢等。基于 Yolo 算法的火灾检测系统能够利用深度学习技术,实现对火灾的高效、精准检测,具有重要的现实意义。         从社会安全角度看,该系统可以广泛应用于各类公共场所、工业厂房和居民住宅,实时监测火灾隐患,及时发出警报,为人员疏散和消防救援争取宝贵时间,有效降低火灾造成的人员伤亡和财产损失,保障社会公共安全。

m0_69704149的博客 1384

【机器学习之模型融合】Stacking堆叠法

Stacking堆叠法原理透析与应用

学习记录,厚积薄发 3万+

3D视觉-激光三角测量法的概述和原理

激光三角法位移测量的原理是,用一束激光以某一角度聚焦在被测物体表面,然后从另一角度对物体表面上的激光光斑进行成像,物体表面激光照射点的位置高度不同,所接受散射或反射光线的角度也不同,用。激光三角测量法是一种通过图像采集系统采集被测物表面漫反射的激光轮廓,进而基于设备已知的相对位置通过算法处理,获得被测物表面的三维轮廓数据,进而还原目标物体三维空间信息的方法。采用激光三角原理和回波分析原理进行非接触位置、位移测量的精密传感器, 广泛应用于位置、位移 、厚度、半径、形状、振动、距离等几何量的工业测量。

qq_20660115的博客 3921

stacking 框架

Stacking是个多层的多模型集合方法。每一层都可包括多个模型,下一层利用上一层模型的结果进行学习。可以只使用一层,然后用元学习器融合,也可以多层融合。单层融合多层融合如上图所示,Stacking结构中有两层算法串联,第一层叫做了L1,第二层叫做L2,L1和L2里面可能包含1个或多个强学习器,而元学习器只能包含一个学习器。在训练中,数据会先被输入L1,L2进行训练,训练完毕后,L2中的每个算法会输出相应的预测结果。我们将这些预测结果拼凑成新特征矩阵,再输入元学习器进行训练。

hbkybkzw的博客 1444

告别交越失真:手把手教你设计高性能互补输出级电路(LTspice实测)

本文深入剖析音频放大器中常见的交越失真问题,并提供基于LTspice仿真的实战解决方案。通过对比二极管偏置、Vbe倍增器和集成运放驱动三种经典方案,手把手指导设计高性能互补输出级电路,涵盖原理分析、仿真验证及实物调试要点,助力消除音频失真,提升音质。

weixin_29190573的博客 553

【YOLO目标检测全栈实战】98 YOLO模型在低光照环境下的自适应增强策略

你有没有遇到过这种情况?深夜加班调试产线检测模型,车间灯光昏暗,摄像头采集的图片黑乎乎一片,YOLO模型直接“罢工”——漏检率飙升到40%以上。上个月我在一个汽车零部件质检项目里就栽了跟头:白天模型跑得飞起,mAP@0.5达到0.92,可一到夜班,同样的产线、同样的零件,mAP直接掉到0.63。客户拍着桌子问我:“你这模型怎么还分白天黑夜?”

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 286

模型融合stacking原理

一.Stacking思想简介 1.Stacking的思想是一种有层次的融合模型,比如我们将用不同特征训练出来的三个GBDT模型进行融合时,我们会将三个GBDT作为基层模型,在其上在训练一个次学习器(通常为线性模型LR),用于组织利用基学习器的答案,也就是将基层模型的答案作为输入,让次学习器学习组织给基层模型的答案分配权重。 2.下图是个简单的例子,A、B是学习器,C、D、E是进行答案再组织的次学习器,次学习器会...

yuekangwei的博客 4280

【异常】Milvus 向量数据库字段缺失错误分析与解决 MilvusVectorStoreServiceV2 - Failed to insert batch [0-1]: The field:

本文分析了Milvus向量数据库插入操作中出现的字段缺失错误。错误显示age_mode字段未提供,导致批量插入失败。根本原因是Milvus Schema要求所有定义字段必须存在,但代码中对部分字段采用条件添加方式。解决方案是将条件添加改为始终添加,为可能为null的字段提供空字符串默认值。文章总结了Schema约束、防御性编程等经验,并建议通过Schema变更检查、单元测试覆盖和数据校验层等预防措施避免类似问题。该问题影响product、mac、source等多个字段,修改后确保了数据插入的可靠性。

奶爸的编程之路,也就一周冷个三天 409

集成学习之Stacking详解

1、Stacking原理 stacking 就是当用初始训练数据学习出若干个基学习器后,将这几个学习器的预测结果作为新的训练集,来学习一个新的学习器。 最初的想法是: 1:用数据集D来训练h1,h2,h3…, 2:用这些训练出来的初级学习器在数据集D上面进行预测得到次级训练集。 3:用次级训练集来训练次级学习器。 但是这样的实现是有很大的缺陷的。在原始数据集D上面训练的模型,然后用这些模型再D上...

GFDGFHSDS的博客 1万+

【Unity】NGUI下载与导入

Unity3D插件NGUI的下载和导入。

Get your hands dirty 3万+

SAP-ABAP:SAP基础数据校验工具开发系列博客(共5篇) 第一篇:需求梳理与架构设计:从零搭建SAP主数据校验能力底座

摘要: 本系列博客介绍SAP主数据校验工具的开发和设计,旨在解决物料、供应商、客户等主数据录入不规范、关联缺失和合规性问题。第一篇聚焦需求梳理与架构设计,提出分层技术架构(展示层、业务逻辑层、数据访问层),支持实时校验和批量校验两种模式,并详细说明规则引擎设计、SAP系统对接方案及权限管控逻辑。后续篇章将深入规则引擎实现、接口对接、结果可视化和性能优化,帮助构建集中式、可配置的主数据校验能力,提升SAP数据质量。

baidu_35680696的博客 332
上一篇: (九)AdaBoost 中参数对于决策边界复杂度分析
下一篇: (十一)为什么堆叠的集成模型容易赢得 kaggle 比赛?
coderpai
博客等级 码龄10年 1082粉丝 469原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值