【笔记】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是一种二类分类模型,有监督的统计学习方法,能够最小化经验误差和最大化几何边缘,被称为最大间隔分类器,可用于分类和回归分析.支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题, ...
随机推荐
- linux 开机自启动的两种方式
方法 1 – 使用 rc.local sudo vi /etc/rc.local 在文件最后加上: sh /root/script.sh & 如果是 CentOS,我们修改的是文件 /etc/ ...
- gitlab用户,组,项目权限管控
前言:gitlab上的权限管控是非常重要的,尤其是很多研发人员开发一个项目.这个是我总结的权限管控. 1.这个是创建项目时开放权限设置 2.这个创建用户设置的权限 3.用户权限,5种类型用户是 ...
- WPF教程四:字段、属性、依赖项属性的演变过程
这个章节主要讲解属性是什么,为什么会演变出依赖项属性,依赖属性的优势是什么.以及如何更好的使用属性和依赖项属性. 一.属性 属性是什么. 翻了好几本C#的书和微软的文档,我觉得对属性讲解比较好理解的就 ...
- windows服务器下MySQL配置字符集
这俩天公司使用.netcore微服务+mysql做项目,mysql在使用的时候总是出现一些字符集的问题,修改utf8或utf8mb4后mysql的服务就启动不了,这里做下记录如果把my.ini中的字符 ...
- 架构之:REST和RESTful
目录 简介 REST REST和RESTful API REST架构的基本原则 Uniform interface统一的接口 Client–server 客户端和服务器端独立 Stateless无状态 ...
- Http2.0详解
前言 HTTP/1.1协议为现在网络提供了20年的支持.从那时起,网站已经从静态的.文本驱动的文档发展为交互式的.富媒体的应用程序.在此期间底层协议保持不变这一事实正好说明了它的通用性和能力.但随着网 ...
- ECMAScript6.0
ECMAScript6.0相当于JavaScript的标准,它规定了浏览器脚本语言的标准,发布于2015年,目标是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言 N ...
- Linux 之 usermod
usermod [选项] 登录名 usermod用于修改用户基本信息 -d 修改用户的主目录,与-m选项一起使用 -d和-m要联合使用,否则修改的用户有问题 -g,--gid 修改用户组,该用户组是必 ...
- C语言:特殊点
编译器给变量分配内存在函数外部定义的变量叫做全局变量(Global Variable),在函数内部定义的变量叫做局部变量(Local Variable)一个变量,即使不给它赋值,它也会有一个默认的值, ...
- 未开通js之前的纯css网页主题
本主题修改自其他大佬:Rocket1184/MaterialCnblogs: Material Theme for cnblogs.com (github.com) 只需在博客后台选择"禁用 ...