Stacking

先前学习的集成学习

先前的思路很简单,假设有三个算法,每个算法都对数据进行一个预测,最后综合这三个结果得出一个最终结果,对于分类问题可以进行少数服从多数,对于回归问题可以简单地取平均值

stacking是另一种思路,对于stacking这个方法来说,假设有三个算法,首先求出这三个算法对于这个数据的预测结果,但是不直接使用这三个预测结果进行综合来得到最终结果,将这三个预测结果作为输入,再添加进一层算法,也就是说,以这三个结果作为输入,再训练出一个新的模型,然后用这个新的模型的输出作为最终的结果

这个方法可以解决回归问题也可以解决分类问题,只要三个算法得出的三个模型,其预测的结果是输入数据是某一类的概率就可以了,将这三个模型预测的某一类的概率值作为第四个模型的输入,最后得到一个总的新的样本是某一类的概率,使用这个概率再进行分类

实际上分类问题和回归问题可以以预测这个样本在哪个类别中的概率这个数值作为连接,就可以很轻松的将分类问题转换成回归问题或者是将回归问题转换成分类问题

明白了stacking是什么以后,看一下如何训练出一个stacking的分类器,思路本身是很简单的

要做的事情就是首先将训练数据集分成两份,对于其中的一份,使用这一份数据集训练出三个模型,第二份的意义是训练第四份模型

也就是说,首先使用第一份数据通过三个算法训练出三个模型,训练好以后将第二份数据直接丢进训练好的三个模型中,相应的,训练好的三个模型也就有了输出结果,这些新的输出结果和第二份的数据里相应的真值输出就形成了一个新的数据集,然后用这个新的数据集来训练第四个模型,最终形成stacking的集成训练模型

在了解构成以及思路以后就可以构建出更复杂的模型,使用三层的模型,第一层有三个模型,相应的可以得到三个输出,将这三个输入作为输入可以再分别训练出三个模型作为第二层的模型,这三个模型以第一层的输出作为输入,又可以得到三个输出结果,然后再使用这三个输出作为第三层这一个模型的输入,然后使用第三层模型得到的结果作为整个stacking模型的最终结果

按照上面的思路的话,如果要训练上面的stacking模型的话,就要将训练数据集分成三份,第一份用来训练第一层的三个模型,第二份用来训练第二层的三个模型,第三份就用来训练第三层的一个模型

所以对于stacking来说,层数是一个超参数,每一层的模型数也是一个超参数,因此stacking模型具有很高的复杂性,也正是如此,这个模型是很容易过拟合的

可以发现,stacking这种组建方式是很像神经网络的

【笔记】Stacking方法的更多相关文章

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

    http://blog.csdn.net/willduan1/article/details/73618677 集成学习主要分为 bagging, boosting 和 stacking方法.本文主要 ...

  2. Java学习笔记之---方法和数组

    Java学习笔记之---方法与数组 (一)方法 (1)什么是方法? 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 (2)方法的优点 使程序变得更简短而 ...

  3. Stacking方法详解

    集成学习方法主要分成三种:bagging,boosting 和 Stacking.这里主要介绍Stacking. stacking严格来说并不是一种算法,而是精美而又复杂的,对模型集成的一种策略. 首 ...

  4. swift 笔记 (十一) —— 方法(类,结构体,枚举)

    Methods (方法) 实例方法(Instance Methods) 我认为看到这里.我们唯能八一八的就是swift的自做主张的行为了,反正它就是会以各种方式帮助我们来完毕让代码看起来非常奇怪的事情 ...

  5. Swift学习笔记(14)--方法

    1.分类 方法分为实例方法和类型方法 实例方法(Instance Methods):与java中的类似,略 类型方法(Type Methods):与java.oc中的类方法类似.声明类的类型方法,在方 ...

  6. Tools - 笔记记录方法Markdown

    Markdown 简介 轻量级标记语言,使用易读易写的纯文本格式和类似HTML的标记语法来编写具有一定的格式的文档. 语法简洁直观,易学易用,可以使用任何喜爱的文本编辑器来阅读和写作. 可精- 确控制 ...

  7. Java学习笔记之方法重载

    被重载的方法必须具有不同的参数列表.不能基于不同修饰符或返回值类型来重载方法. package welcome; public class TestMethodOverloading { public ...

  8. MongoDB学习笔记~Update方法更新集合属性后的怪问题

    回到目录 在对MongoDB进行封装后,对于Update更新对象里的集合属性时出现了一个现象,让人感到很恶心,人家更新前是个美丽的Array,但是更新之后集合对象变成了键值对,键是集合的类型名称,值是 ...

  9. 视觉机器学习读书笔记--------SVM方法

    SVM是一种二类分类模型,有监督的统计学习方法,能够最小化经验误差和最大化几何边缘,被称为最大间隔分类器,可用于分类和回归分析.支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题, ...

随机推荐

  1. salesforce零基础学习(一百零五)Change Data Capture

    本篇参考: https://developer.salesforce.com/docs/atlas.en-us.232.0.api_streaming.meta/api_streaming/using ...

  2. linux学习之路第二天(xshell和xftp的使用图解)

    以上xshell的连接过程 2.远程上传和下载文件xftp6 一定要换成22和sftp,否则连接不上 如果出现中文乱码的情况 先点击那个小齿轮 再点击选项 把编码编程UTF-8就ok了

  3. SwaggerHub 更快,标准化的API设计软件

    更快,标准化的API设计 在功能强大且直观的编辑器中设计API,该编辑器旨在提高速度和效率,而不会损失设计一致性. SwaggerHub帮助我们简化了设计和实现API的方式-作为一名架构师,我喜欢良好 ...

  4. Java初级面试题整理

    先看再点赞,给自己一点思考的时间,如果对自己有帮助,微信搜索[程序职场]关注这个执着的职场程序员. 我有什么:职场规划指导,技能提升方法,讲不完的职场故事,个人成长经验. 1. Java语言有哪些特点 ...

  5. WPF教程四:字段、属性、依赖项属性的演变过程

    这个章节主要讲解属性是什么,为什么会演变出依赖项属性,依赖属性的优势是什么.以及如何更好的使用属性和依赖项属性. 一.属性 属性是什么. 翻了好几本C#的书和微软的文档,我觉得对属性讲解比较好理解的就 ...

  6. IP地址详解

    讲之前了解一些网络设备的作用: 交换机:组建局域网 路由器:连接内外网 网关:一个网络的出口(Gate Way = GW)一般网关在路由器上 局域网(也称内网) 一个简单的局域网的基本组成设备:交换机 ...

  7. Java集合中的可变参数

    可变参数: 1.在JDK1.5之后,如果我们定义一个方法需要接收多个参数,并且多个参数类型一致,我们可以对其简化成如下格式: 修饰符 返回值类型 方法名(参数类型... 形参名){} 其实这个书写完全 ...

  8. 在SublimeText3中搭建Verilog开发环境记录(二)

    接上文 SublimeText3中搭建Verilog开发环境记录(一) 在实现了基础功能后,继续添加插件,让功能更为完善: 快速创建代码模块(snippet) Ctrl+鼠标左键实现模块跳转 通过iV ...

  9. C# BS方向 该如何规划学习?【学习路线指南】

    C#学习路线指南 花费了几天时间整理了C#学习路线图,可以说是纯野生C#程序员成长路线规划,在这里分享下,希望可以帮助到想从事C#开发的同学们.本人阅历尚浅,有些知识点可能分享不正确,希望广大网友评论 ...

  10. 八大排序算法~冒泡排序【加变量flag的作用】

    八大算法~冒泡排序[加变量flag的作用] 1,冒泡排序思想:从第一个数开始找,要把大数"排除在外"~为大数找后座.(从小到大排序哈) 外层循环~需要放后的大数个数: 内循环~从第 ...