集成学习

概述

严格意义上来说,集成学习算法不能算是一种机器学习算法,而像是一种模型优化手段,是一种能在各种机器学习任务上提高准确率的强有力技术。在很多数据挖掘竞赛中,集成学习算法是比赛大杀器,能很好地提升算法的性能。集成学习算法是由多个较弱的模型以一定方法组成集成模型,而这些弱学习器包括SVR、LASSO、KNN等等。Schapire从理论上证明了在知道弱学习器正确率下限的时,可以通过集成算法能将弱学习器提升为强学习器。

集成算法往往是先单独对每个模型进行训练,然后以某种方式结合这些模型的预测结果,最终得到一个总体的更具可靠性的预测结果。目前集成学习算法大多来源于Bagging、Boosting、Stacking三种思想。

1. Bagging算法

Bagging算法,又称为装袋算法,最初由Leo Breiman于1996年提出,是并行式集成学习的典型代表。Bagging算法主要是从数据层面上设计,使用自助采样法随机有放回地对样本进行采样,构建出样本量相等的相互独立的样本数据集,在同一算法中训练出不同的模型。Bagging算法的集成策略也很简单,对于分类问题,一般通过投票法,以多数模型预测结果为最终结果。而对于回归问题,一般采用算术平均法,对所有模型的预测结果做算术平均得到最终结果。Bagging算法的流程如图1.1所示, Bagging算法步骤如图1.2所示。

2. Boosting算法

Boosting算法是一种用来减少监督式学习中偏差的机器学习算法,与Bagging算法不同的是,Boosting串行式集成学习算法。Boosting算法基于错误提升模型性能,根据前面分类器分类错误的样本,调整训练集中各个样本的权重,构建新的分类器。其训练过程是呈阶梯状的,后一个基模型会在前一个基模型的基础上进行学习,最终以某种综合方式,比如加权法,对所有模型的预测结果进行加权来产生最终的结果。Boosting算法的流程如图2.1所示。

Boosting可以组合多个弱学习器来形成一个强学习器,提高了模型的整体预测精度。在模型训练过程中,每个算法会生成一个弱规则,而Boosting算法总是更加关注被错误分类的规则。如果第一个基础的学习算法预测错误,则该点在下一次的基础学习算法的权重会变高。关于Boosting算法,最常用的是AdaBoost和XGBoost。

3. Stacking集成学习算法

Stacking是一种分层模型集成框架,在1992年被Wolpert提出。Stacking集成可以有多层的情况,但通常会设计两层,第一层由多种基模型组成,输入为原始训练集,而输出为各种基模型的预测值,而第二层只有一个元模型,对第一层的各种模型的预测值和真实值进行训练,从而得到完成的集成模型。同理,预测测试集的过程也要先经过所有基模型的预测,组成第二层的特征,再用第二层的元模型预测出最终的结果。为了防止模型过拟合的情况,一般Stacking算法在第一层训练基模型时会结合k折交叉验证法。以五折交叉验证法为例,Stacking算法的过程如图3.1所示。

Stacking算法原理很简单,以两层结构为例,在训练阶段,假设有训练集数据D={(x1,y1), (x2,y2), … , xn,yn},根据5折交叉验证法被随机划分为5个大小相似且互斥的数据子集D1、D2、D3、D4和D5。分别以其中一个数据子集为验证集,其他4个为训练集,来训练第一层的基模型BM1,BM2, … , BMn,每个基模型都被训练5次。以第一个基模型BM1为例,对验证集进行预测,分别得到p1,p2,p3,p4和p5,组成原数据集大小的prob1。以此类推,得到prob1, prob2, prob3, … , probn作为第二层元模型的特征,与真实值label组成第二层的数据集,用于元模型训练。
在测试阶段,以第一个基模型BM1为例,5个训练好的基模型BM1分别对测试集进行预测,得到ρ1,ρ2,ρ3,ρ4和ρ5,取平均得到prob1。以此类推,得到 组成第二层的样本集,导入第二层训练好的元模型进行预测,得到最终预测结果。

Stacking优化

无论是模型选择、算法结构,还是特征处理上,传统的Stacking算法都有很多需要改进的地方。这里是我对传统Stacking算法优化的一些尝试,感兴趣的可以去看看。 stacking优化.

集成学习(Bagging、Boosting、Stacking)算法原理与算法步骤相关推荐

  1. 机器学习--集成学习--Bagging,Boosting,Stacking

    在一些数据挖掘竞赛中,后期我们需要对多个模型进行融合以提高效果时,常常会用到Bagging,Boosting,Stacking等这几个框架算法.下面就来分别详细讲述这三个框架算法.这里我们只做原理上的 ...

  2. 集成学习bagging, boosting, stacking

    集成学习能够通过训练数据集产生多个学习模型,然后通过一定的结合策略生成强学习模型. bagging 可以并行执行 每一棵树权重是一样的 随机森林 Bagging是bootstrap aggregati ...

  3. 集成学习-Bagging和Boosting算法

    文章目录 集成学习 Bagging 随机森林 Bosting Adaboost GBDT XGBoost 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网 ...

  4. 集成学习——Bagging、Boosting、Stacking

    目录 偏差与方差 投票法 集成学习 Bagging Bootstraps Bagging Boosting 基本概念 Adaboost 前向分步算法 梯度提升树(GBDT) XGBoost Light ...

  5. 树模型系列之集成学习(Bagging、Boosting、Stacking)

    文章目录 树模型系列之集成学习(Bagging.Boosting.Stacking) bagging Boosting Stacking 偏差与方差 集成学习的偏差与方差 Bagging 的偏差与方差 ...

  6. R语言基于Bagging算法(融合多个决策树)构建集成学习Bagging分类模型、并评估模型在测试集和训练集上的分类效果(accuray、F1、偏差Deviance):Bagging算法与随机森林对比

    R语言基于Bagging算法(融合多个决策树)构建集成学习Bagging分类模型.并评估模型在测试集和训练集上的分类效果(accuray.F1.偏差Deviance):Bagging算法与随机森林对比 ...

  7. 机器学习 - [集成学习]Bagging算法的编程实现

    机器学习 - [集成学习] Bagging算法的编程实现 李俊才 的 CSDN 博客:https://blog.csdn.net/qq_28550263?spm=1001.2101.3001.5343 ...

  8. 集成学习之Boosting

    集成学习之Boosting 1.boosting集成原理 1.1 什么是boosting 随着学习的积累从弱到强 简而言之:每新加入一个弱学习器,整体能力就会得到提升 代表算法:Adaboost,GB ...

  9. 集成学习——BAGGING和随机森林

    集成学习--BAGGING和随机森林 集成学习--BAGGING和随机森林 1.什么是集成学习 2.怎样进行集成学习 3.Bagging方法 4.Bagging方法训练.预测过程 5.Bagging方 ...

  10. 大白话5分钟带你走进人工智能-第30节集成学习之Boosting方式和Adaboost

    目录 1.前述: 2.Bosting方式介绍: 3.Adaboost例子: 4.adaboost整体流程: 5.待解决问题: 6.解决第一个问题:如何获得不同的g(x): 6.1 我们看下权重与函数的 ...

最新文章

  1. 【实习】京东搜索相关性算法部门
  2. 国际色卡c色号查询_怎幺提取图片中的潘通色卡?图片找色卡
  3. 头插法建立单链表学习总结
  4. 编译Linux 2.6内核
  5. 当c语言老师遇到网络崩溃,网络教学搞不定?工科教授来支招!
  6. np.meshgrid函数中的indexing参数问题
  7. antv g6多次渲染问题解决
  8. 朋友圈/评论/点赞/搜索/购物车
  9. Windows 内网渗透之攻击域控
  10. Python合并有相同列的两个表格
  11. Python之pip升级命令
  12. weblogic的集群与配置--架构师第九天
  13. 符号分开的一列数据列转行
  14. (六)安装xdd-plus的保姆级搭建教程+xdd-plus修复+对接青龙+指令用途/看了你就能学废【2022年5月23日】【更新】
  15. php iphone壁纸,iphone 壁纸尺寸 PHP 图像尺寸调整代码
  16. K均值聚类以及matlab实现
  17. ES6的三种暴露方式
  18. WinCC 使用VBS脚本操作变量、控件总结
  19. c语言题库-1010顺序结构习题:摄氏温度转换为华氏温度和绝对温度
  20. SpringBoot 配置返回前端固定格式yyyy-MM-dd HH:mm:ss和接收ISO时间自动转为LocalDateTime

热门文章

  1. CVPR2018 | R(2+1)D结构:视频动作识别中的时空卷积深度探究
  2. 【Android Training - Performance】提高显示布局文件的性能[Lesson 3 - 按需载入视图(ViewStub的使用方法)]
  3. 论文学习:Occlusion Robust Face Recognition Based on Mask Learning
  4. Occlusion Aware Facial Expression RecognitionUsing CNN With Attention Mechanism阅读笔记
  5. 【笔记】行测——常识判断之文史常识总结与归纳(二)
  6. python drop删除多列_Python drop方法删除列之inplace参数实例
  7. Mysql命令行登录和退出
  8. 阿里巴巴mysql dba面试题_阿里巴巴MySQL DBA面试题
  9. X5浏览器支持HTML5吗,腾讯X5 Blink内核 加强H5支持和渲染性能支撑
  10. 程序员的四种境界 西安尚学堂