读懂stacking:模型融合Stacking详解/Stacking与Blending的区别

https://blog.csdn.net/u014114990/article/details/50819948

https://mlwave.com/kaggle-ensembling-guide/

The basic idea behind stacked generalization is to use a pool of base classifiers, then using another classifier to combine their predictions, with the aim of reducing the generalization error.

Let’s say you want to do 2-fold stacking:

  • Split the train set in 2 parts: train_a and train_b
  • Fit a first-stage model on train_a and create predictions for train_b
  • Fit the same model on train_b and create predictions for train_a
  • Finally fit the model on the entire train set and create predictions for the test set.
  • Now train a second-stage stacker model on the probabilities from the first-stage model(s).

A stacker model gets more information on the problem space by using the first-stage predictions as features, than if it was trained in isolation.

It is usually desirable that the level 0 generalizers are of all “types”, and not just simple variations of one another (e.g., we want surface-fitters, Turing-machine builders, statistical extrapolators, etc., etc.). In this way all possible ways of examining the learning set and trying to extrapolate from it are being exploited. This is part of what is meant by saying that the level 0 generalizers should “span the space”.

[…] stacked generalization is a means of non-linearly combining generalizers to make a new generalizer, to try to optimally integrate what each of the original generalizers has to say about the learning set. The more each generalizer has to say (which isn’t duplicated in what the other generalizer’s have to say), the better the resultant stacked generalization. Wolpert (1992) Stacked Generalization

从以上文字我们可以知道,stacking思想的精髓是,从训练数据的多个不同侧面对数据的分布情况进行了解,从而的全面地学习到数据的分布规律,然后用上一层学习器学习到的多个侧面知识,作为下一层学习的对象进一步学习,其实是为了汇总学习到的信息,从而学习得更好。

分分钟带你杀入Kaggle Top 1%

数据比赛大杀器----模型融合(stacking&blending)

集成学习总结 & Stacking方法详解

stacking涉及到类似交叉验证的步骤,关于交叉验证:

1.理解交叉验证(cross validation,cv):https://blog.csdn.net/liuweiyuxiang/article/details/78489867
交叉验证实际上就是对同一批数据进行多次利用,但每次这批数据的训练集、测试集的划分方式不同,算法在各个数据集划分上都跑一遍,各个结果取平均值来衡量该算法的准确性。
交叉验证的本质是多次实验,然后取平均数作为最终结果。

交叉验证的用途:
1.1可用于算法调参:同一个算法,如KNN算法,为了确定参数K的最佳取值,可以在K=3时,进行交叉验证,得出K=3时的平均准确度,
然后K=4时,交叉验证,得出K=4时的平均准确度,如此类推。
最后比较K取各个值时的平均准确度来确定K取哪个值时准确度最好。

1.2 交叉验证用于比较算法(模型选择):在各个算法的参数已经确定的情况下,(例如KNN的k确定为5,逻辑回归算法的参数也已经确定),让KNN和逻辑回归都在同一个数据集上
做一次交叉验证,得出各自的准确度,即可决定KNN和LR哪个好。

验证集(validation set)与训练集相似,但它不是必须的,做交叉验证的时候才会用到验证集。一般情况下,只需要把整个数据集分为training set(假设有8000行数据)、testing set(假设有2000行),training set用于算法训练,是的算法学习到摸清楚数据集的整体分布规律,然后用训练后的算法对testing set做预测,计算准确率。但这种只分为training set、testing set的做法,容易导致训练得到算法的方差(variance)较大,算法表现不稳定,于是可把testing set保持不动,把原来的training set进一步细分,例如划分成为5份【sub set 1、sub set 2、sub set 3,...sub set 5】每份1600行数据,其中4份作为training set,另一份(sub set 1)作为验证集(validation set),然后让算法在那4份的training set上进行训练学习,然后在validation set上预测结果,得出这种划分下的算法准确性。还可以将sub set 2作为验证集,sub set 1、3、4、5合在一起作为training set,训练之后sub set2上进行预测,计算准确率。如此进行5次,最后把各次的准确率求均值,作为算法的准确性,这个过程称为交叉验证。验证之后,还可以进一步在testing set(2000行)上进行预测,即作为算法准确性。由此我们可以看出validation set作用与原来的testing set其实是一样的。

训练集、验证集、测试集以及交验验证的理解

2.网格搜索:就是调参时穷举搜索,例如参数a有两个取值可选,b有三种取值可选,则一共有6中参数取值组合,逐一试过去,最终找到最佳的参数组合。
https://www.cnblogs.com/ysugyl/p/8711205.html
https://blog.csdn.net/sinat_32547403/article/details/73008127

【书签】stacking、blending的更多相关文章

  1. Dream team: Stacking for combining classifiers梦之队:组合分类器

     sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...

  2. 模型融合——stacking原理与实现

    一般提升模型效果从两个大的方面入手 数据层面:数据增强.特征工程等 模型层面:调参,模型融合 模型融合:通过融合多个不同的模型,可能提升机器学习的性能.这一方法在各种机器学习比赛中广泛应用, 也是在比 ...

  3. Liberty Mutual Property Inspection, Winner's Interview: Qingchen Wang

    Liberty Mutual Property Inspection, Winner's Interview: Qingchen Wang The hugely popular Liberty Mut ...

  4. 【干货】Kaggle 数据挖掘比赛经验分享(mark 专业的数据建模过程)

    简介 Kaggle 于 2010 年创立,专注数据科学,机器学习竞赛的举办,是全球最大的数据科学社区和数据竞赛平台.笔者从 2013 年开始,陆续参加了多场 Kaggle上面举办的比赛,相继获得了 C ...

  5. Kaggle 数据挖掘比赛经验分享(转)

     原作者:陈成龙 简介 Kaggle 于 2010 年创立,专注数据科学,机器学习竞赛的举办,是全球最大的数据科学社区和数据竞赛平台.笔者从 2013 年开始,陆续参加了多场 Kaggle上面举办的比 ...

  6. Kaggle 数据挖掘比赛经验分享

    文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 来源 | 腾讯广告算法大赛 作者 | 陈成龙 Kaggle 于 2010 年创立,专注数据科学,机器学 ...

  7. 深度网络中的Tricks

    数据增强(Data augmentation) 预处理(Pre-processing) 初始化(Initializations) 训练中的Tricks 激活函数(Activation function ...

  8. 谈谈模型融合之一 —— 集成学习与 AdaBoost

    前言 前面的文章中介绍了决策树以及其它一些算法,但是,会发现,有时候使用使用这些算法并不能达到特别好的效果.于是乎就有了集成学习(Ensemble Learning),通过构建多个学习器一起结合来完成 ...

  9. 模型融合之blending和stacking

    1. blending 需要得到各个模型结果集的权重,然后再线性组合. """Kaggle competition: Predicting a Biological Re ...

随机推荐

  1. MySQL必知必会1-20章读书笔记

    MySQL备忘 目录 目录 使用MySQL 检索数据 排序检索数据 过滤数据 数据过滤 用通配符进行过滤 用正则表达式进行搜索 创建计算字段 使用数据处理函数 数值处理函数 汇总数据 分组数据 使用子 ...

  2. 题目分享E 二代目

    题意:一棵点数为n的树,每个节点有点权,要求在树中中找到一个最小的x,使得存在一个点满足max(该点点权,该点相邻的点的点权+1,其他点的点权+2)=x 分析:首先要能把题目转化为上述题意 首先题目让 ...

  3. 翻转单词顺序 VS 左旋转字符串

    全部内容来自<剑指offer>. 题目一: 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.为简单起见,标点符号和普通字符一样处理.例如输入字符串“I am a stude ...

  4. html之表单元素form

    表单元素form \(都是嵌套input标签来实现,其中type属性选择不同则不同\) \(text:文本内容(输入内容可见)\) \(password:密码(输入内容不可见)\) \(submit: ...

  5. Oracle条件判断

    一. if/else 语法:if 条件表达式 then语句块:if 条件表达式 then 语句块end if;elsif 条件表达式 then语句块:...else语句块:end if;举例:输入一个 ...

  6. ubuntu18.04下mysql安装时没有出现密码提示

    前言: 一:配置 ubuntu 18.04 mysql 5.7.30 二:问题 ubuntu18.04下mysql安装时没有出现密码提示,安装后自己有一个默认的用户名以及密码 解决方案: 1. 在终端 ...

  7. vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布

    框架介绍 这是一个基于vue.element-ui.iview..netcore3.1 可支持前端.后台动态扩展业务代码快速开发框架. 框架内置定制开发的代码生成器,生成的代码不需要复制也不需要更改, ...

  8. 【Hadoop离线基础总结】Hue与Hive集成

    目录 1.更改hue的配置hue.ini 2.启动hive的metastore以及hiveserver2服务 3.启动hue进程,查看Hive是否与Hue集成成功 1.更改hue的配置hue.ini ...

  9. supersqli

    0x01 堆叠注入 1.定义与说明 在sql中,分号(;)表示一条sql语句的结束.在;结束之后继续构造下一条语句,会一起执行,因此为堆叠注入. union联合查询是将两条语句合并之后进行查询,uni ...

  10. java ->网络通信协议(UDP协议、TCP协议)

    网络通信协议 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样.在计算机网络中,这些连接和通信的规 ...