zoukankan      html  css  js  c++  java
  • 【笔记】Stacking方法

    Stacking

    先前学习的集成学习

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

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

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

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

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

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

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

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

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

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

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

    感谢观看,文笔有限,博客不出彩,还请多多见谅
  • 相关阅读:
    基础数据类型转换和深浅拷贝
    文件操作
    运算符相关
    基础数据类型概述
    dijkstra算法学习笔记
    洛谷 P1880 [NOI1995]石子合并
    最大公约数GCD学习笔记
    洛谷 P1280 尼克的任务
    [NOIp2012]疫情控制
    [NOIp2016]蚯蚓
  • 原文地址:https://www.cnblogs.com/jokingremarks/p/14347750.html
Copyright © 2011-2022 走看看