集成学习(ensemble learning)可以说是现在非常火爆的机器学习方法了。它本身不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务。也就是我们常说的“博采众长”。集成学习可以用于分类问题集成,回归问题集成,特征选取集成,异常点检测集成等等,可以说所有的机器学习领域都可以看到集成学习的身影。本文就对集成学习的原理做一个总结。

一、集成学习概述

从下图,我们可以对集成学习的思想做一个概括。对于训练集数据,我们通过训练若干个个体学习器,通过一定的结合策略,就可以最终形成一个强学习器,以达到博采众长的目的。

也就是说,集成学习有两个主要的问题需要解决:

1、第一是如何得到若干个个体学习器;

2、第二是如何选择一种结合策略,将这些个体学习器集合成一个强学习器。

二、集成学习之个体学习器

集成学习的第一个问题就是如何得到若干个个体学习器。这里我们有两种选择。

  • 第一种就是所有的个体学习器都是一个种类的,或者说是同质的。比如都是决策树个体学习器,或者都是神经网络个体学习器。
  • 第二种是所有的个体学习器不全是一个种类的,或者说是异质的。比如我们有一个分类问题,对训练集采用支持向量机个体学习器,逻辑回归个体学习器和朴素贝叶斯个体学习器来学习,再通过某种结合策略来确定最终的分类强学习器。

目前来说,同质个体学习器的应用是最广泛的,一般我们常说的集成学习的方法都是指的同质个体学习器。而同质个体学习器使用最多的模型是CART决策树和神经网络。同质个体学习器按照个体学习器之间是否存在依赖关系可以分为两类:

  • 第一个是个体学习器之间存在强依赖关系,一系列个体学习器基本都需要串行生成,代表算法是boosting系列算法;
  • 第二个是个体学习器之间不存在强依赖关系,一系列个体学习器可以并行生成,代表算法是bagging和随机森林(Random Forest)系列算法。

下面就分别对这两类算法做一个概括总结。

三、集成学习之boosting

boosting的算法原理我们可以用一张图做一个概括如下:

从图中可以看出,Boosting算法的工作机制是首先从训练集用初始权重D(1)训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2.,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。

Boosting系列算法里最著名算法主要有AdaBoost算法和提升树(boosting tree)系列算法。提升树系列算法里面应用最广泛的是梯度提升树GBDT(Gradient Boosting Tree)。AdaBoost和提升树算法的原理在后面的文章中会专门来讲。

四、集成学习值bagging

Bagging的算法原理和 boosting不同,它的弱学习器之间没有依赖关系,可以并行生成,我们可以用一张图做一个概括如下:

从上图可以看出,bagging的个体弱学习器的训练集是通过随机采样得到的。通过T次的随机采样,我们就可以得到T个采样集,对于这T个采样集,我们可以分别独立的训练出T个弱学习器,再对这T个弱学习器通过集合策略来得到最终的强学习器。

对于这里的随机采样有必要做进一步的介绍,这里一般采用的是自助采样法(Bootstap sampling),即对于m个样本的原始训练集,我们每次先随机采集一个样本放入采样集,接着把该样本放回,也就是说下次采样时该样本仍有可能被采集到,这样采集m次,最终可以得到m个样本的采样集,由于是随机采样,这样每次的采样集是和原始训练集不同的,和其他采样集也是不同的,这样得到多个不同的弱学习器。

随机森林是bagging的一个特化进阶版,所谓的特化是因为随机森林的弱学习器都是决策树。所谓的进阶是随机森林在bagging的样本随机采样基础上,又加上了特征的随机选择,其基本思想没有脱离bagging的范畴。bagging和随机森林算法的原理在后面的文章中会专门来讲。

五、集成学习之结合策略

在上面我们主要关注于学习器,提到了学习器的结合策略但没有细讲,这里就对集成学习之结合策略做一个总结。我们假定我得到的T个弱学习器是{h1,h2,...hT}。

1、平均法

对于数值类的回归预测问题,通常使用的结合策略是平均法,也就是说,对于若干个弱学习器的输出进行平均得到最终的预测输出。

最简单的平均是算术平均,也就是说最终预测是:

如果每个个体学习器有一个权重ω,则最终预测是:

其中ωi是个体学习器hi的权重,通常有:

2、投票法

对于分类问题的预测,我们通常使用的是投票法。假设我们的预测类别是{c1,c2,....ck},对于任意一个预测样本x,我们的T个弱学习器的预测结果分别是{h1(x),h2(x),...hT(x)}。

最简单的投票法是相对多数投票法,也就是我们常说的少数服从多数,也就是T个弱学习器的对样本x的预测结果中,数量最多的类别ci为最终的分类类别。如果不止一个类别获得最高票,则随机选择一个做最终类别。

稍微复杂的投票法是绝对多数投票法,也就是我们常说的要票过半数。在相对多数投票法的基础上,不光要求获得最高票,还要求票过半数。否则会拒绝预测。

更加复杂的是加权投票法,和加权平均法一样,每个弱学习器的分类票数要乘以一个权重,最终将各个类别的加权票数求和,最大的值对应的类别为最终类别。

3、学习法

上面的方法都是对弱学习器的结果做平均或者投票,相对比较简单,但是可能学习误差较大,于是就有了学习法这种方法,对于学习法,代表方法是stacking,当使用stacking的结合策略时, 我们不是对弱学习器的结果做简单的逻辑处理,而是再加上一层学习器,也就是说,我们将训练集弱学习器的学习结果作为输入,将训练集的输出作为输出,重新训练一个学习器来得到最终结果。

在这种情况下,我们将弱学习器称为初级学习器,将用于结合的学习器称为次级学习器。对于测试集,我们首先用初级学习器预测一次,得到次级学习器的输入样本,再用次级学习器预测一次,得到最终的预测结果。

参考文章

[1]集成学习原理小结

转载于:https://www.cnblogs.com/zyly/p/9416155.html

集成学习原理小结(转载)相关推荐

  1. 梯度提升树(GBDT)原理小结(转载)

    在集成学习值Adaboost算法原理和代码小结(转载)中,我们对Boosting家族的Adaboost算法做了总结,本文就对Boosting家族中另一个重要的算法梯度提升树(Gradient Boos ...

  2. 【算法】集成学习原理

    [博客地址]:https://blog.csdn.net/sunyaowu315 [博客大纲地址]:https://blog.csdn.net/sunyaowu315/article/details/ ...

  3. (转载)机器学习知识点(十七)Bagging与随机森林算法原理小结

    集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系.另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合.本文就对集成学习中Bagging ...

  4. Bagging与随机森林算法原理小结

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boos ...

  5. 机器学习之集成学习概述

    目录 集成方法概述 学习器生成策略(串行)--boosting 学习器生成策略(并行)-- bagging.Random Forest 结合策略之学习法--堆叠法(Stacking) 传送门 集成方法 ...

  6. 集成学习(期末复习)

    集成学习 参考: 机器学习-浅谈随机森林的几个tricks:https://zhuanlan.zhihu.com/p/29408863 机器学习算法之Boosting:https://www.biao ...

  7. 集成学习(含常用案列)

    集成学习原理: 工作原理是生成多个分类器/模型,各自独立地学习和作出预测.这些预测最后结合成组合预测,因此优于任何一个单分类的做出预测 集成学习算法分类: 集成学习算法一般分为:bagging.boo ...

  8. 基于机器学习中集成学习的stacking方式进行的金线莲质量鉴别研究(python进行数据处理并完成建模,对品种进行预测)

    1.前言 金线莲为兰科开唇兰属植物,别名金丝兰.金丝线.金耳环.乌人参.金钱草等,是一种名贵中药材,国内主要产地为较低纬度地区如:福建.台湾.广东.广西.浙江.江西.海南.云南.四川.贵州以及西藏南部 ...

  9. 集成学习算法之boosting、bagging和随机森林算法原理

    集成学习的定义 集成学习的主要思路是先通过一定的规则生成多个学习器,再采用某种集成策略进行组合,最后综合判断输出最终结果.一般而言,通常所说的集成学习中的多个学习器都是同质的"弱学习器&qu ...

最新文章

  1. Microsoft 服务器产品端口
  2. html用颜色区分不同区间数据_最新数据可视化指南
  3. Mongo学习---mongo入门1
  4. 2020年Java讲课笔记目录
  5. python中的while循环语句的数组循环_while循环
  6. Win10 64位安装SQL2000(个人版)
  7. JsonHelper(Json帮助类)
  8. SIR模型 matlab模拟
  9. PADS PCB绘图软件使用过程中遇到的问题和填坑
  10. Java 实现 pdf 和 Excel 的生成及数据动态插入、导出
  11. wⅰndows ISO文件备份,5 款 Windows 最佳备份软件
  12. tp6/thinkphp6实现微信小程序支付/微信支付v3版本,全部流程代码
  13. 创始人李卉:麦客CRM2.0核心逻辑及其背后的思考
  14. 关于VMware上的VAAI特性详解
  15. python下的考勤签到系统
  16. 2022年低代码关键点:GeneXus即将推出什么
  17. 海关统计:各地级市-进出口与贸易差额(2000-2020)
  18. 写给嵌入式程序员的循环冗余校验(CRC)算法入门引导
  19. 计算机一级学平均数,excel计算平均值怎么做?计算机一级考试╭(╯ε╰)╮
  20. 阿里妈妈iconfont矢量图标的使用方法(超详细)

热门文章

  1. 【C/C++16】_public.h,_public.cpp,_cmpublic.h
  2. 【Python4】字符分割识别,车牌识别矫正,移动物检测,Caffe_SSD三字码识别,ckpt文件转pb文件,人脸检测与识别
  3. DSP SCI模块实验
  4. c语言圈子,C语言经典编程
  5. k8s灰度更新_通过rancher部署k8s过程实战分享
  6. Apache Web Server - httpd 的长连接配置
  7. linux sed p变量,Linux sed 命令详解系列教程之各种问题解决
  8. libevent源码学习-----统一事件源及信号绑定函数
  9. shiro注销其他用户_Shiro实现互斥登录,并踢出登录用户功能。
  10. 使用OpenSSL进行RSA加密和解密(非对称)