kaggle-ensembling guide

blendnig

stacking

代码

模型融合接口

模型融合heamy

常见的 Ensemble 方法有这么几种:

  • Bagging:使用训练数据的不同随机子集来训练每个 Base Model,最后进行每个 Base Model 权重相同的 Vote。也即 Random Forest 的原理。
  • Boosting:迭代地训练 Base Model,每次根据上一个迭代中预测错误的情况修改训练样本的权重。也即 Gradient Boosting 的原理。比 Bagging 效果好,但更容易 Overfit。
  • Bagging

    1)从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping(有放回)的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(我们这里假设k个训练集之间是相互独立的,事实上不是完全独立)

    2)每次使用一个训练集得到一个模型,k个训练集共得到k个模型。但是是同种模型。(注:,k个训练集虽然有重合不完全独立,训练出来的模型因为是同种模型也是不完全独立。这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)

    3)对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)

    对于Bagging需要注意的是,每次训练集可以取全部的特征进行训练,也可以随机选取部分特征训练,例如随机森林就是每次随机选取部分特征

    讲完Boosting,Bagging,我们来总结下这两种框架算法的异同点: 
    1)样本选择上: 
    Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。

    Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。

    2)样例权重:

    Bagging:使用均匀取样,每个样例的权重相等

    Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。

    3)预测函数:

    Bagging:所有预测函数的权重相等。

    Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。

    5)bagging是减少variance,而boosting是减少bias 
  • Blending:用不相交的数据训练不同的 Base Model,将它们的输出取(加权)平均。实现简单,但对训练数据利用少了。
  • Stacking:接下来会详细介绍。

从理论上讲,Ensemble 要成功,有两个要素:

  • Base Model 之间的相关性要尽可能的小。这就是为什么非 Tree-based Model 往往表现不是最好但还是要将它们包括在 Ensemble 里面的原因。Ensemble 的 Diversity 越大,最终 Model 的 Bias 就越低。
  • Base Model 之间的性能表现不能差距太大。这其实是一个 Trade-off,在实际中很有可能表现相近的 Model 只有寥寥几个而且它们之间相关性还不低。但是实践告诉我们即使在这种情况下 Ensemble 还是能大幅提高成绩。

Stacking

相比 Blending,Stacking 能更好地利用训练数据。以 5-Fold Stacking 为例,它的基本原理如图所示:

整个过程很像 Cross Validation。首先将训练数据分为 5 份,接下来一共 5 个迭代,每次迭代时,将 4 份数据作为 Training Set 对每个 Base Model 进行训练,然后在剩下一份 Hold-out Set 上进行预测。同时也要将其在测试数据上的预测保存下来。这样,每个 Base Model 在每次迭代时会对训练数据的其中 1 份做出预测,对测试数据的全部做出预测。5 个迭代都完成以后我们就获得了一个 #训练数据行数 x #Base Model 数量 的矩阵,这个矩阵接下来就作为第二层的 Model 的训练数据。当第二层的 Model 训练完以后,将之前保存的 Base Model 对测试数据的预测(因为每个 Base Model 被训练了 5 次,对测试数据的全体做了 5 次预测,所以对这 5 次求一个平均值,从而得到一个形状与第二层训练数据相同的矩阵)拿出来让它进行预测,就得到最后的输出。

补充:以上图为例,我们现在有训练集train_x,train_y,测试集test 
① 我们首先选择一种模型比如随机森林rf。(未经训练) 
②这里假设把训练集均分成5份,把其中四份作为小的训练集s_train_x,s_train_y另外一份作为小的测试集s_test,测试集test不变。 
③我们以s_train_x,s_train_y训练rf模型,训练出的模型预测s_test得出对应的s_pred,再预测test得出y_pred。 
④在训练集再选择另外一份作为小的测试集s_test_x,其他四份作为训练集训练模型rf。 
⑤重复②,③,④步骤五次。我们会得到五个s_pred和五个y_pred。 
五个s_pred作为一个train_X,原始的train_y作为train_Y训练模型得到模型G,五个y_pred取个平均值作为新的test_X,把test_X带入到模型G中得出预测结果。 
以上就是stacking的第一层,在第二层中,我们以第一层的输出train再结合其他的特征集再做一层stacking。不同的层数之间有各种交互,还有将经过不同的 Preprocessing 和不同的 Feature Engineering 的数据用 Ensemble 组合起来的做法。 
上面是以一种模型随机森林进行模型训练,当然可以分别用不同种的模型。

Ensemble几种方式原理相关推荐

  1. ActiveMQ传输文件的几种方式原理与优劣

    本文讨论ActiveMQ传输文件的几种方法的原理及其利弊,作为消息发送.直接传输文件.使用ftp或http中转.最后介绍扩展ActiveMQ实现自定义文件传输方式,讨论如何实现高效的文件传输. 作为消 ...

  2. VMware Workstation网络连接的三种方式原理详解 与 配置过程图解

    VMware workstations为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式).NAT(网络地址转换模式).Host-Only(仅主机模式). 打开vmware虚拟机,我们 ...

  3. OpenCV resize 改变图片大小,4种方式原理对比

    微信:18233275213 本文共总结了OpenCV提供的4种resize图片的方法: 一.最近邻插值法 INTER_NEAREST 二.双线性插值(默认设置) INTER_LINEAR 一.最近邻 ...

  4. 软件激活的两种方式原理

    1.通过激活码直接激活,即公钥私钥问题. 2.licence server方式,软件会请求该地址的服务器,licence server会返回给该用户一个激活码,进而完成激活.

  5. CSS | 水平垂直居中都有哪几种方式

    我把一个子元素在父元素中水平垂直居中的实现方式分为三类,第一类是宽度已知,第二类是宽度未知,第三类是图片水平垂直居中. 第一类 宽度已知 第一种方式:采用绝对定位 原理 元素开启绝对定位后,水平方向和 ...

  6. Unity中制作自定义字体的两种方式

    Unity支持自定义图片字体(CustomFont),网上有很多教程,细节不尽相同,当概括起来基本就是两种方式.一是使用BMFont,导出图集和.fnt文件,再使用图集在Unity中设置得到字体.二是 ...

  7. 内存分配的原理__进程分配内存有两种方式,分别由两个系统调用完成:brk和mmap(不考虑共享内存)

    如何查看进程发生缺页中断的次数? 用ps -o majflt,minflt -C program命令查看. majflt代表major fault,中文名叫大错误,minflt代表minor faul ...

  8. MySQL主从原理,基于快速学习一门技术的3种方式!

    根据经验,想要快速学习一门技术有3种方式. 第一种方式是通过代码来理解它的实现,反推它的逻辑. 这种方式的难度很大,而且起点相对高,能够沉浸其中的人非常少,过程相对来说是苦闷的,但如果能够沉下心来看代 ...

  9. 三种Cache写入方式原理简介

    三种Cache写入方式原理简介 在386以上档次的微机中,为了提高系统效率,普遍采用Cache(高速缓冲存储器),现在的系统甚至可以拥有多级Cache.Cache实际上是位于CPU与DRAM主存储器之 ...

最新文章

  1. 图论之tarjan缩点
  2. [转]VC获取各类指针
  3. 计算机考试题 实操,计算机考试实操题-20210604194811.docx-原创力文档
  4. JVM资源分析工具jprofiler使用简介
  5. IBM MR10i阵列卡配置Raid0/Raid1/Raid5(转)
  6. Mysql表并联_SQL多表查询 表联结
  7. 互联网红利消退,下一个机会在哪?
  8. Linux下安装spf13-vim
  9. 多媒体计算机软件都包括哪些,多媒体计算机软件都有什么
  10. 华为手表表盘的数字什么意思_华为gt2表盘上的数字是什么意思
  11. mma7660.c的改进
  12. 操作系统中的FCFS(First Come First Served)先来先服务算法,java实现
  13. 8.如何在idea打开一个已有项目
  14. 有截图功能的android播放器,Android视频播放器VPlayer发新版本 增加截图功能
  15. word 2013 尾注后继续添加正文的方法
  16. 华东,聚集中国最多的女药代
  17. 数列的单调有界和极限值
  18. 基于MATLAB平台实现红绿灯(交通灯)识别
  19. LabVIEW——波形图总结
  20. 暨南大学计算机科学研究生,计算机科学系硕士研究生在IEEE Virtual Reality (VR) 2020上发表两篇论文...

热门文章

  1. 运动耳机怎么选,性价比高的运动耳机推荐
  2. Vscode python调试
  3. IIS 服务20分钟后自动停止
  4. task-11 xgb算法实战
  5. 我mac机器上的常用软件列表(更新)
  6. 【BZOJ2149】拆迁队(斜率优化DP+CDQ分治)
  7. HamonyOS真机调试的步骤(基于DevEco Studio)
  8. 九十三、编写 代码 隐藏 iPhone键盘
  9. node上 使用 fetch
  10. 劲爆!javaweb架构中视图层作用