1. 集成学习(Ensemble Learning)原理

2. 集成学习(Ensemble Learning)Bagging

3. 集成学习(Ensemble Learning)随机森林(Random Forest)

4. 集成学习(Ensemble Learning)Adaboost

5. 集成学习(Ensemble Learning)GBDT

6. 集成学习(Ensemble Learning)算法比较

7. 集成学习(Ensemble Learning)Stacking

1. 前言

我们之前介绍了很多的机器学习的算法,大家有没想过一个问题用所有的方法都试一遍,然后拿结果一起再来判断。其实这种思路在机器学习中完全是可以的,并且有了自己的一个阵营,就是集成学习。集成学习顾名思义是结合了好多的算法一起来进行预测。就像我们想看一部电影前,问问身边看过的几个朋友对这部电影的评价,然后作出一个综合的判断,要不要看这部电影。

2. 集成学习原理

我们之所以要把多个学习器组合在一起,是因为单个学习器往往可能效果不那么好,而多个学习器可以互相帮助,各取所长,就有可能一起决策,把一个学习任务完成得比较漂亮。单个学习器我们称为弱学习器,相对的集成学习则是强学习器。

  • 弱学习器:常指泛化性能略优于随机猜测的学习器:例如在二分类问题桑精度略高于50%的分类器。
  • 强学习器:通过一定的方式集成一些弱学习器,达到了超过所有弱学习器的准确度的分类器。

根据个体学习器的种类的个数,我们可以分为两种集成学习。

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

同质个体学习器按照个体学习器之间是否存在依赖关系可以分为两类:

  1. 个体学习器之间存在强依赖关系,一系列个体学习器基本都需要串行生成,代表算法是Boosting系列算法
  2. 个体学习器之间不存在强依赖关系,一系列个体学习器可以并行生成,代表算法是Bagging和随机森林(Random Forest)系列算法。下面就分别对这两类算法做一个概括总结。

3. Bagging介绍

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

下图是决策树的Bagging和KNN的Bagging决策边界:

4. Boosting介绍

Boosting的主要的过程如下图:

Boosting算法的工作机制:

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

Boosting系列算法里最著名算法主要有AdaBoost算法和提升树(GBDT)系列算法

下图是AdaBoost不同弱学习器个数的决策边界:

5. Stacking介绍

当使用Stacking的结合策略时, 我们不是对弱学习器的结果做简单的逻辑处理,而是再加上一层学习器,也就是说,我们将训练集弱学习器的学习结果作为输入,将训练集的输出作为输出,重新训练一个学习器来得到最终结果。

6. 结合策略

6.1 平均法

  • 简单平均法
  • 加权平均法

6.2 投票法

  • 绝对多数投票法:得票过半数的标记,否则拒绝预测(可靠性要求较高的学习任务)
  • 相对多数投票法:得票最多的标记(学习任务要求必须提供预测结果)
  • 加权投票法

1. 集成学习(Ensemble Learning)原理的更多相关文章

  1. 【Supervised Learning】 集成学习Ensemble Learning & Boosting 算法(python实现)

    零. Introduction 1.learn over a subset of data choose the subset uniformally randomly (均匀随机地选择子集) app ...

  2. 笔记︱集成学习Ensemble Learning与树模型、Bagging 和 Boosting

    本杂记摘录自文章<开发 | 为什么说集成学习模型是金融风控新的杀手锏?> 基本内容与分类见上述思维导图. . . 一.机器学习元算法 随机森林:决策树+bagging=随机森林 梯度提升树 ...

  3. 集成学习(Ensembling Learning)

    集成学习(Ensembling Learning) 标签(空格分隔): 机器学习 Adabost 对于一些弱分类器来说,如何通过组合方法构成一个强分类器.一般的思路是:改变训练数据的概率分布(权值分布 ...

  4. 集成学习ensemble

    集成学习里面在不知道g的情况下边学习边融合有两大派:Bagging和Boosting,每一派都有其代表性算法,这里给出一个大纲. 先来说下Bagging和Boosting之间的相同点:都是不知道g,和 ...

  5. 集成学习(ensemble method)--基于树模型

    bagging方法(自举汇聚法 bootstrap aggregating) boosting分类:最流行的是AdaBoost(adaptive boosting) 随机森林(random fores ...

  6. 集成算法——Ensemble learning

    目的:让机器学习效果更好,单个不行,群殴啊! Bagging:训练多个分类器取平均 Boosting:从弱学习器开始加强,通过加权来进行训练 (加入一棵树,比原来要强) Stacking:聚合多个分类 ...

  7. 【集成学习】 lightgbm原理

    # lightgbm和xgboost对比: 模型精度:lightgbm≈xgboost 收敛速度:lightgbm>xgboost #

  8. 集成学习的不二法门bagging、boosting和三大法宝<结合策略>平均法,投票法和学习法(stacking)

    单个学习器要么容易欠拟合要么容易过拟合,为了获得泛化性能优良的学习器,可以训练多个个体学习器,通过一定的结合策略,最终形成一个强学习器.这种集成多个个体学习器的方法称为集成学习(ensemble le ...

  9. [白话解析] 通俗解析集成学习之bagging,boosting & 随机森林

    [白话解析] 通俗解析集成学习之bagging,boosting & 随机森林 0x00 摘要 本文将尽量使用通俗易懂的方式,尽可能不涉及数学公式,而是从整体的思路上来看,运用感性直觉的思考来 ...

  10. 机器学习:集成学习:随机森林.GBDT

    集成学习(Ensemble Learning) 集成学习的思想是将若干个学习器(分类器&回归器)组合之后产生一个新学习器.弱分类器(weak learner)指那些分类准确率只稍微好于随机猜测 ...

随机推荐

  1. ROS学习(四)—— 创建ROS Package

    一.caktin Package的组成 1.必须含有 package.xml文件,提供有关程序包的元信息 2.必须含有一个catkin版本的 CmakeLists.txt文件,如果是一个catkin元 ...

  2. Postman 网络调试工具

    1.Postman 简介 Postman 是一款功能强大的网页调试与发送网页 HTTP 请求的工具.我们可以用来很方便的模拟 get 或者 post 或者其他方式的请求来调试接口. 官网下载地址 Po ...

  3. 【Algorithm】插入排序

    一. 算法描述 插入排序具体算法描述如下: 从第一个元素开始,该元素可以认为已经被排序 取出下一个元素,在已经排序的元素序列中从后向前扫描 如果该元素(已排序)大于新元素,将该元素移到下一位置 重复步 ...

  4. Python学习笔记001——Linux

    Linux文件系统采用树形目录结构,系统中一切皆文件.文件名字母区分大小写 Linux命令使用格式(终端窗口) 命令名 [选项] [参数] 命令名:在命令行输入命令. 备注:命令名字母区分大小写, 1 ...

  5. xtrabackup-增量备份

    增量备份之所以能工作是因为每个innodb的page都包含日志序列号(LSN).LSN是整个数据库的版本号. 增量备份会拷贝那些LSN比备份开始时新的页.有两种算法用来计算查找这些页:第一种,支持所有 ...

  6. angularjs框架及其生态环境 --待续

    angular的MVVM框架结构:     1. app,   2.routes, config,   3.module,   4.Controller, $scope,controller参数,事件 ...

  7. [转]session和cookie的区别和联系,session的生命周期,多个服务部署时session管理

    Session和Cookie的区别 对象 信息量大小 保存时间 应用范围 保存位置 Session 小量,简单的数据 用户活动时间+一段延迟时间(一般为20分钟) 单个用户 服务器端 Cookie 小 ...

  8. GitHub 上值得推荐的开源电子书

    GitHub 上值得推荐的开源电子书 开源不仅局限于软件领域,开源同样意味着自由选择的权利和对知识开放的追求. 可以参照这篇文章,已附上所有超链接编程类开放书籍荟萃-Linux Story 语言无关类 ...

  9. 微信小程序 开发过程中遇到的坑(一)

      2124 1.我们使用app.json文件来对微信小程序进行全局配置,决定页面文件的路径.窗口表现.设置网络超时时间.设置多 tab 的时候在pages中写注释的时候回报错. 例如: { &quo ...

  10. Android 控件: Webview 的一些知识点

    WebView 加载网页,当点击返回键的时,会显示上一个页面,并刷新. 同时可以对返回上一个页面进行干预,就是用到了缓存. webview加载网页的几个模式,即websetting中设置的加载模式.w ...