【笔记】Stacking方法
Stacking
先前学习的集成学习
先前的思路很简单,假设有三个算法,每个算法都对数据进行一个预测,最后综合这三个结果得出一个最终结果,对于分类问题可以进行少数服从多数,对于回归问题可以简单地取平均值
stacking是另一种思路,对于stacking这个方法来说,假设有三个算法,首先求出这三个算法对于这个数据的预测结果,但是不直接使用这三个预测结果进行综合来得到最终结果,将这三个预测结果作为输入,再添加进一层算法,也就是说,以这三个结果作为输入,再训练出一个新的模型,然后用这个新的模型的输出作为最终的结果
这个方法可以解决回归问题也可以解决分类问题,只要三个算法得出的三个模型,其预测的结果是输入数据是某一类的概率就可以了,将这三个模型预测的某一类的概率值作为第四个模型的输入,最后得到一个总的新的样本是某一类的概率,使用这个概率再进行分类
实际上分类问题和回归问题可以以预测这个样本在哪个类别中的概率这个数值作为连接,就可以很轻松的将分类问题转换成回归问题或者是将回归问题转换成分类问题

明白了stacking是什么以后,看一下如何训练出一个stacking的分类器,思路本身是很简单的
要做的事情就是首先将训练数据集分成两份,对于其中的一份,使用这一份数据集训练出三个模型,第二份的意义是训练第四份模型
也就是说,首先使用第一份数据通过三个算法训练出三个模型,训练好以后将第二份数据直接丢进训练好的三个模型中,相应的,训练好的三个模型也就有了输出结果,这些新的输出结果和第二份的数据里相应的真值输出就形成了一个新的数据集,然后用这个新的数据集来训练第四个模型,最终形成stacking的集成训练模型

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

按照上面的思路的话,如果要训练上面的stacking模型的话,就要将训练数据集分成三份,第一份用来训练第一层的三个模型,第二份用来训练第二层的三个模型,第三份就用来训练第三层的一个模型
所以对于stacking来说,层数是一个超参数,每一层的模型数也是一个超参数,因此stacking模型具有很高的复杂性,也正是如此,这个模型是很容易过拟合的
可以发现,stacking这种组建方式是很像神经网络的

【笔记】Stacking方法的更多相关文章
- 集成学习总结 & Stacking方法详解
http://blog.csdn.net/willduan1/article/details/73618677 集成学习主要分为 bagging, boosting 和 stacking方法.本文主要 ...
- Java学习笔记之---方法和数组
Java学习笔记之---方法与数组 (一)方法 (1)什么是方法? 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 (2)方法的优点 使程序变得更简短而 ...
- Stacking方法详解
集成学习方法主要分成三种:bagging,boosting 和 Stacking.这里主要介绍Stacking. stacking严格来说并不是一种算法,而是精美而又复杂的,对模型集成的一种策略. 首 ...
- swift 笔记 (十一) —— 方法(类,结构体,枚举)
Methods (方法) 实例方法(Instance Methods) 我认为看到这里.我们唯能八一八的就是swift的自做主张的行为了,反正它就是会以各种方式帮助我们来完毕让代码看起来非常奇怪的事情 ...
- Swift学习笔记(14)--方法
1.分类 方法分为实例方法和类型方法 实例方法(Instance Methods):与java中的类似,略 类型方法(Type Methods):与java.oc中的类方法类似.声明类的类型方法,在方 ...
- Tools - 笔记记录方法Markdown
Markdown 简介 轻量级标记语言,使用易读易写的纯文本格式和类似HTML的标记语法来编写具有一定的格式的文档. 语法简洁直观,易学易用,可以使用任何喜爱的文本编辑器来阅读和写作. 可精- 确控制 ...
- Java学习笔记之方法重载
被重载的方法必须具有不同的参数列表.不能基于不同修饰符或返回值类型来重载方法. package welcome; public class TestMethodOverloading { public ...
- MongoDB学习笔记~Update方法更新集合属性后的怪问题
回到目录 在对MongoDB进行封装后,对于Update更新对象里的集合属性时出现了一个现象,让人感到很恶心,人家更新前是个美丽的Array,但是更新之后集合对象变成了键值对,键是集合的类型名称,值是 ...
- 视觉机器学习读书笔记--------SVM方法
SVM是一种二类分类模型,有监督的统计学习方法,能够最小化经验误差和最大化几何边缘,被称为最大间隔分类器,可用于分类和回归分析.支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题, ...
随机推荐
- Springboot整合shardingsphere和druid进行读写分离
最近在使用springboot整合shardingsphere和druid实现mysql数据库读写分离时遇到了一些问题,特此记录一下. 依赖版本 Springboot 2.1.6.RElEASE sh ...
- leetcode第156场周赛5207
当时做的时候,一直理解想搞dp,后面可能思路有点乱了,写不出来... 看了评论区的大佬,才发现是滑动窗口的题目,学习到了. 思路分析: 1.这题可以转化成求数组最大子数组的和不超过maxCost的长度 ...
- 判断字符串是否为ip地址----python
def isIp(ip_str): flag = True if '.' not in ip_str: return False if ip_str.count('.')!=3 : return Fa ...
- 使用VS远程调试其他电脑上安装的软件
今天在用户的一台机器上遇到了很奇怪的问题.一个按钮点击时概率性的第一次点击无反馈. 因为是概率性的,概率又很低,而当初在设计Log时又设计的是必须重启软件才会生效log开关: 所以这里使用当时rele ...
- wumei-smart智能家居开原项目
一.项目简介 物美智能(wumei-smart)]是一套开源的软硬件系统,可用于二次开发和学习,快速搭建自己的智能家居系统. 硬件工程师可以把自己的设备集成到系统:软件工程师可以使用项目中的设备熟悉软 ...
- makedown语法小记
1.标题,支持六级 # 这是一级标题 ## 这是二级标题 ### 这是三级标题 2.斜体 *这是斜体* 3.加粗 **这是加粗** 4.斜体加粗 ***这是斜体加粗*** 5.删除线 ~~这是删除线~ ...
- 入门Kubernetes-Service
一.前言 前一篇文章通过 Deployment 实现了Pod中服务实现滚动更新/回滚等操作:在真实应用场景中,需要将一组Pod提供给外部访问.而且Pod生命周期是短暂的,在 Pod 的生命周期过程中, ...
- shell编程之循环语句for / while / until
shell编程之循环语句与函数 一.条件测试 二.循环语句 ① for循环语句结构(遍历) 示例1 示例2 ② while循环语句结构(迭代) 示例1 示例2 ③ until 循环语句结构 示例1 一 ...
- python with (as)语句
with语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的"清理"操作,释放资源,比如文件使用后自动关闭.线程中锁的自动获取和释放等. 例1:url = ...
- java面向对象程序设计(下)-枚举类
在某些情况下,一个类的对象是有限而且固定的,比如季节类,它只有4个对象;再比如行星类,目前只有8个对象,这些实例有限而且固定的类,在Java中被称为枚举类 JDK1.5新增了一个enum关键字,(它与 ...