首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【SPA大赛】腾讯广告点击大赛:对stacking的一些基本介绍

【SPA大赛】腾讯广告点击大赛:对stacking的一些基本介绍

原创
作者头像
李强强
修改于 2017-07-03 07:33:25
修改于 2017-07-03 07:33:25
2.9K2
举报
文章被收录于专栏:李强强的专栏李强强的专栏

这次给大家分享的是stacking的一些基本知识,希望对大家有帮助。

  现在比赛进入了白热化阶段,并且马上要切换决赛B榜了,很多队伍都开始想着融合模型进行提高,大家讨论最多的一个就是stacking框架,但是在群里看到好多好多同学还没有搞明白stacking框架到底是什么结构?要怎么运行?有什么注意点?有没有变种?等等一些列问题。在哆啦的提醒下,今天写这篇文章就按我自己的理解普及下stacking的一些知识(如果有不对的地方欢迎大家指正~)。

  首先,在我看来stacking严格来说不能称为一种算法,我理解的是一种非常精美而复杂的对模型的集成策略。大家都知道,在给定了数据集的情况下,数据内部的空间结构和数据之间的关系是非常复杂的。而不同的模型,其实很重要的一点就是在不同的角度去观测我们的数据集。我举个例子,KNN可能更加关注样本点之间的距离关系(包括欧几里得距离(Euclidean Distance)、明可夫斯基距离(Minkowski Distance等等),当样本距离相对较近,KNN就把他们分为一类;而决策树,可能更加关注分裂节点时候的不纯度变化,有点像我们自己找的规则,在满足某个条件且满足某个条件的情况下,决策树把样本分为一类等等。也就是说,不同的算法模型,其实是在不同的数据空间角度和数据结构角度来观测数据,然后再依据它自己的观测,结合自己的算法原理,来建立一个模型,在新的数据集上再进行预测。这样大家就会有个疑问了,俗话说:三人行必有我师。既然是不同的算法对数据有不同的观测,那么我们能不能相互取长补短,我看看你的观测角度,你看看我的观测角度,咱俩结合一下,是不是可以得到一个更加全面更加优秀的结果呢?答案是肯定的。在我当初学基础算法的时候就有这么一个疑问,但是不知道怎么结合,直到有一天看到了stacking的框架,瞬间感觉找到了一片新天地。下面我从以下几个方面介绍stacking:

一、stacking的框架结构与运行过程

  刚开始看stacking好像是交叉检验的既视感,其实并不是这样。假设是五折的stacking,我们有一个train数据集和一个test数据集,那么一个基本的stacking框架会进行如下几个操作:

  1. 选择基模型。我们可以有xgboost,lightGMB,RandomForest,SVM,ANN,KNN,LR等等你能想到的各种基本算法模型;
  2. 把训练集分为不交叉的五份。我们标记为train1到train5;
  3. 从train1开始作为预测集,使用train2到train5建模,然后预测train1,并保留结果;

然后,以train2作为预测集,使用train1,train3到train5建模,预测train2,并保留结果;如此进行下去,直到把train1到train5各预测一遍;

  1. 在上述建立的五个模型过程中,每个模型分别对test数据集进行预测,并最终保留这五列结果,然后对这五列取平均,作为第一个基模型对test数据的一个stacking转换;
  2. 把预测的结果按照train1到trian5的位置对应填补上,得到对train整个数据集在第一个基模型的一个stacking转换;
  3. 选择第二个基模型,重复以上2-5操作,再次得到train整个数据集在第二个基模型的一个stacking转换;
  4. 以此类推。有几个基模型,就会对整个train数据集生成几列新的特征表达。同样,也会对test有几列新的特征表达;
  5. 一般使用LR作为第二层的模型进行建模预测。

大家看到这里可能有些不清楚,下面我画个图直观解释一下:

                 图1 stacking的框架及预测(1)

  上面这个框架说明的是:对训练数据进行无重复的五次划分之后,分别对其中每一部分进行一次预测,而预测的模型就是由其余四部分训练的;并且在预测了预测集之后,还需要对我们的test数据集也进行一次预测,这这样就会得到5个N/5行、1列的对train数据集的特征转换,和5个M行、1列的对test数据集的特征转换,由此进入下一个图。

代码语言:txt
AI代码解释
复制
                 图2  stacking的框架及预测(2)

  这个图说明的是对五部分的train分别预测之后再组成对train的新的表达,由5个5/N行一列的预测组成一个N行1列预测结果,从而得到对train的新表达;同时,对test的结果也进行处理,由于是5个模型对test的预测,所以要取平均,使得五列平均为一列,从而得到对test的新表达。

  至此,整个stacking的框架和运作流程介绍完毕,希望大家通过上面这一部分,能对stacking的整个框架和运作流程有个比较清晰的认识。

代码语言:txt
AI代码解释
复制
	
二、使用stacking的一些注意事项:

  经过上一部分的介绍,想必大家感觉到stacking的威力可能很大,事实上也是这样的。但是仍然有一些需要注意的地方,简单介绍几点:

  1. stacking的框架设计比较复杂,对于一个基模型要训练5次,如果你的一个xgb模型要训练2个小时,即使在进行stacking的时候每折减少了五分之一的数据量,你的计算时间仍然是很可观的,加起来应该还是8-9小时,所以耗费时间很长(想像一下一个stacking框架跑一个基模型要大半天,简直太可怕)。所以建议大家在使用的时候要计算时间的耗费,或者可以改为3折,4折等等;
  2. 我们前面讲过了,stacking框架是集成了不同的算法,充分利用不同算法从不同的数据空间角度和数据结构角度的对数据的不同观测,来取长补短,优化结果。所以,我们的基模型除了是不同参数的相同模型之外,比如不同参数的xgboost,或者不同K值的KNN等等;更重要的是要尽可能的多加一些不同种类的基模型进去,也就是说所谓的模型要“跨越空间”的概念。这样的话我们的集成结果会更加稳健,更加精确(曾经见过一个比赛集成了上百个基模型的stacking框架获奖,当然用在我们这次比赛中好像不大合适O(∩_∩)O哈哈~)

三、stacking的一些基本变种改进

  在变种改进方面,我们可以不仅对模型进行融合,还可以对特征级进行一些变化,比如选部分特征做stacking;或者对stacking的结果进行再次的stacking,我们上面介绍的是两层的stacking,可以有3层,或者更多。但是时间复杂度很高,效果并不一定明显。

  好了,不知不觉洋洋洒洒写了两千多个字(自己画的两个图有点丑不要介意),希望这篇文章能对大家理解stacking和应用stacking有所帮助,并且实实在在的提高比赛得分~

  祝大家最后一周都能取得理想的成绩!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
2 条评论
热度
最新
图2下面一句话: 由5个5/N行一列...应该是N/5吧?
图2下面一句话: 由5个5/N行一列...应该是N/5吧?
回复回复点赞举报
写得很好
写得很好
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
分分钟带你杀入Kaggle Top 1%
不知道你有没有这样的感受,在刚刚入门机器学习的时候,我们一般都是从MNIST、CIFAR-10这一类知名公开数据集开始快速上手,复现别人的结果,但总觉得过于简单,给人的感觉太不真实。因为这些数据太“完美”了(干净的输入,均衡的类别,分布基本一致的测试集,还有大量现成的参考模型),要成为真正的数据科学家,光在这些数据集上跑模型却是远远不够的。而现实中你几乎不可能遇到这样的数据(现实数据往往有着残缺的输入,类别严重不均衡,分布不一致甚至随时变动的测试集,几乎没有可以参考的论文),这往往让刚进入工作的同学手忙
CSDN技术头条
2018/02/13
1.2K0
分分钟带你杀入Kaggle Top 1%
详解stacking过程
翻到之前自己写的这篇博客,感觉写的还是不够简洁明了,特地回来改一下,顺便文末附上Kaggle内相关操作的代码,希望能够帮助学习的同学能够瞬间理解stacking这个概念。
全栈程序员站长
2022/07/22
5570
详解stacking过程
每日算法题:Day 20
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
算法工程师之路
2019/08/23
4360
每日算法题:Day 20
Stacking 模型融合详解(附python代码)
Ensemble learning 中文名叫做集成学习,它并不是一个单独的机器学习算法,而是将很多的机器学习算法结合在一起,我们把组成集成学习的算法叫做“个体学习器”。在集成学习器当中,个体学习器都相同,那么这些个体学习器可以叫做“基学习器”。
机器学习AI算法工程
2019/10/29
10.1K1
Stacking 模型融合详解(附python代码)
详解 Stacking 的 python 实现
1. 什么是 stacking stacking 就是当用初始训练数据学习出若干个基学习器后,将这几个学习器的预测结果作为新的训练集,来学习一个新的学习器。 2. 代码: 例如我们用 RandomFo
杨熹
2018/04/03
1.6K0
详解 Stacking  的 python 实现
数据挖掘竞赛利器-Stacking和Blending方式
https://blog.csdn.net/maqunfi/article/details/82220115
Ai学习的老章
2019/07/08
1.5K0
数据挖掘竞赛利器-Stacking和Blending方式
数据挖掘终篇!一文学习模型融合!从加权融合到stacking, boosting
摘要:对于数据挖掘项目,本文将学习如何进行模型融合?常见的模型融合的方法有哪些?针对不同的问题类型,应该选择哪种方法呢?
Datawhale
2020/04/15
15K0
数据挖掘终篇!一文学习模型融合!从加权融合到stacking, boosting
机器学习模型融合stacking详解+实战
Stacking是一种集成学习技术,也被称为堆叠泛化,是一种机器学习中的Ensemble方法,它通过组合多个模型的预测来提高整体的预测性能。
皮大大
2024/05/17
3.3K0
机器学习比赛大杀器----模型融合(stacking & blending)
集成模型是一种能在各种的机器学习任务上提高准确率的强有力技术。在这篇文章中,我会分享我在Kaggle比赛中的集成方法。
机器学习AI算法工程
2019/10/29
5.1K0
【SPA大赛】移动app广告转化率预估算法优化思路及解决办法
本文介绍了关于腾讯社交广告算法大赛的参赛经历,包括数据获取、特征提取、模型选择、调参、模型融合等方面的内容。同时,也对未来进行了展望,包括复赛阶段的挑战和新的技术趋势。
何颖
2017/06/05
3K0
【SPA大赛】移动app广告转化率预估算法优化思路及解决办法
模型融合
一般来说,通过融合多个不同模型的结果,可以提升最终的成绩,所以这以方法在各种数据竞赛中应用非常广泛。模型融合又可以从模型结果、模型自身、样本集等不同的角度进行融合。通过这篇文章,希望能让大家真正理解各种模型融合的方式及原理
mathor
2020/04/08
1.7K0
集成学习:Bagging, Boosting,Stacking
好比人做出一个决策时,会从不同方面,不同角度,不同层次去思考(多个自我,多个价值观),这就会有多个决策结果产生,最终我们会选一种决策作为最终决策。
zhangjiqun
2024/12/14
3480
集成学习:Bagging, Boosting,Stacking
【多层堆叠集成模型(Stacking Ensemble)详解】
 在机器学习中,集成学习(Ensemble Learning)是通过将多个学习器的预测结果结合起来,从而提升模型的性能。集成方法有很多种,其中 堆叠集成(Stacking Ensemble) 是一种非常强大且灵活的集成方法,它通过将多个模型的输出作为特征输入到下一级模型中,从而让最终模型做出更准确的预测。
机器学习司猫白
2025/03/12
8440
【多层堆叠集成模型(Stacking Ensemble)详解】
集成学习-stacking算法
将个体学习器结合在一起的时候使用的方法叫做结合策略。对于分类问题,我们可以使用投票法来选择输出最多的类。对于回归问题,我们可以将分类器输出的结果求平均值。
全栈程序员站长
2022/07/31
5490
集成学习-stacking算法
常用的模型集成方法介绍:bagging、boosting 、stacking
本文介绍了集成学习的各种概念,并给出了一些必要的关键信息,以便读者能很好地理解和使用相关方法,并且能够在有需要的时候设计出合适的解决方案。
机器之心
2019/05/17
1K0
贷款违约预测-Task5 模型融合
Tip:此部分为零基础入门金融风控的 Task5 模型融合部分,欢迎大家后续多多交流。 赛题:零基础入门数据挖掘 - 零基础入门金融风控之贷款违约预测 项目地址:https://github.com/datawhalechina/team-learning-data-mining/tree/master/FinancialRiskControl
致Great
2020/10/10
9930
贷款违约预测-Task5 模型融合
Kaggle竞赛必杀利器之融合模型
前面几次课分别给大家介绍了逻辑回归、决策树、随机森林和SVM几种常用的分类模型,不知道大家还有没有印象?本节课将给大家介绍Kaggle竞赛大杀器--融合模型!
用户7569543
2020/07/17
9950
【 SPA大赛 】腾讯社交广告大赛初赛阶段小结
本文主要介绍了在CTR预估中,特征工程的工作内容和流程,以及机器学习模型在CTR预估中的应用。作者通过实践中的案例,详细介绍了如何从原始数据中提取特征,并进行特征工程,以及使用机器学习模型进行CTR预估。同时,作者也分享了一些在实际操作中需要注意的问题和技巧。
王照彬
2017/06/08
2.3K1
【 SPA大赛 】腾讯社交广告大赛初赛阶段小结
快速入门Python机器学习(27)
stacking严格来说并不是一种算法,而是精美而又复杂的,对模型集成的一种策略。
顾翔
2022/09/23
3400
快速入门Python机器学习(27)
一文搞懂:什么是Stacking堆叠?手把手带你搭建堆叠模型,附有python源码和数据集。
在该文章采用的是Lightgbm模型进行的分类预测,本次分享一个在竞赛中常用的策略,堆叠。
机器学习司猫白
2025/01/21
6540
一文搞懂:什么是Stacking堆叠?手把手带你搭建堆叠模型,附有python源码和数据集。
推荐阅读
相关推荐
分分钟带你杀入Kaggle Top 1%
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档