文章目录

  • 集成学习概念:
  • 意义
  • 深入分析
  • Boosting
    • 基本思想
    • 详细过程
    • 偏差-方差
  • Bagging与随机森林
    • Bagging
    • 随机森林(Random Forest)
  • 结合策略
    • 平均法(回归问题)
    • 投票法(分类问题)
    • 学习法
  • 多样性
  • 总结

集成学习概念:

集成学习:顾名思义就是构建并结合多个学习器来完成学习任务,这样学习出来的效果比一个学习器的效果好!
集成学习的一般结果如下所示:先产生一系列的“个体学习器”,再通过某种策略将他们结合起来

集成学习又分为同质集成异质集成

同质集成: 个体学习器通常是由一种学习算法训练产生的,如C4.5决策树算法,集成中包含决策树算法;BP神经网络算法,集成中只包含神经网络。此时,对应的每一个个体学习器称为“基学习器”

异质集成: 异质集成中的个体由不同的学习算法生成,如同时包含决策树和神经网络算法,这时就不再有基学习器了,个体学习器就称为“个体学习器”

意义

集成学习的意义到底是什么呢?有时候想想,一个学习算法就已经挺复杂了,还要学习这么多的学习算法,最后还要制定规则把这些学习器联系起来,这样想是挺复杂的。
如果一个学习器就能够达到我们的要求,肯定不用更加复杂的集成学习,集成学习就好比 “三个臭皮匠顶个诸葛亮”,诸葛亮少之甚少啊,所以这时多个臭皮匠(一般的学习器)就起作用了,这也是集成学习的意义所在。脑子不聪明,但好在人多力量大!

深入分析

一般经验中,我们把好坏不等的东西掺到一起,那么结果会比最好的坏点,比对坏的好点,那么集成学习是如何做到比单一学习器更好的效果呢??
举一个简单的例子,在一个二分类任务中,假设三个分类器在三个测试样本上的表现如下图所示,其中√表示分类正确,×表示分类错误,集成学习通过投票法产生,即“少数服从多数”,如下图所示,有三种情况:

(a)每一种学习器的准确率是66%,但是最后的集成学习准确率是100%
(b)每一种学习器的准确率是66%,最后的集成学习准确率依旧是66%
(c)每一种学习器的准确率是33%,最后的集成学习准确率是0,效果更差。

从这结果来看:要想获得好的结果,集成个体学习器应 “好而不同”,即个体学习器要有一定的 “准确性”,即学习器不能太坏,并且要有 “多样性”,即学习器具有差异。


从上式可以看出,随着集成学习个体分类器的数目T的增大,集成学习的错误率将指数级下降!!最终趋于零!!!!

但是上面的分析有一点需要注意,我们是假设:基学习器的误差互相独立 ,在现实中,个体学习器是为了解决同一个问题而提出来的,它们显然不可能相互独立!

事实上,个体学习器的 “准确性”“多样性” 本身就存在矛盾,一般情况下,准确性很高之后,要增加多样性就必须牺牲准确性。所以,如何产生并结合 “好而不同” 的个体学习器,恰恰是集成学习的研究核心。

根据个体学习器的生成方式,目前的集成学习方法大致可分为两大类:
* 个体学习器间存在 “强依赖” 关系、必须 串行 生成的序列化方法;代表算法: “Boosting”
* 个体学习器间 不存在强的依赖 关系、可同时生成的 并行 化方法;代表算法:Bagging和随机森林(Random Forest)

Boosting

Boosting是一种串行的工作机制,即个体学习器之间存在依赖关系,必须一步一步的序列化的进行。

基本思想

先从初始训练集中训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的样本在后续可以得到更多的关注,然后基于调整后的样本分布来训练下一个基学习器;如此反复进行,直至基学习器的数量达到指定的数量T,最终将这T个基学习器进行加权结合。

详细过程

Boosting算法族中最著名、使用最广的算法就是AdaBoost。在训练过程的每一轮中,根据样本分布为每个训练样本的重新赋值一个权重,对无法接受带权样本的基学习器算法,则可通过“重采样法”来处理,即在每一轮学习中,根据样本分布对训练集重新采样,再用重采样的样本集对基学习器进行训练。
一般情况下,这两种做法没有显著的优劣差别,需注意的是,Boosting算法在训练的每一轮都要检查当前生成的基学习器是否比随机猜想要好,一旦条件不满足,则当前基学习器被抛弃,且学习过程终止,在这种情况下,如何基学习器的数量还没有达到初设的数量T,则采用“重采样法”可以重启动算法,避免训练过早停止。

偏差-方差

从偏差-方差的角度来看,Boosting主要关注 降低偏差,举个简单的例子,Boosting的过程就像人看一本书一样,刚开始时大致看一遍,其中有一部分不是很懂,再看第二遍时,就会着重看不懂的那一部分,如此反复就可以把这本书完全的看懂!!
这就是一个减少偏差的过程,不断逼近正确值

Bagging与随机森林

从上文可知,想得到泛化能力强的集成算法,集成算法中的个体学习器应尽可能相互独立;虽然独立在现实任务中无法做到,但是可以设法使基学习器尽可能具有较大的差异。
首先像到的是:对给定的一个训练集进行采样,产生出若干个不同的子集,再从每个数据子集中训练出一个基学习器,由于训练子集不同,我们就可以训练出差距较大的基学习器。然而,为了获得好的集成,我们还希望个体学习器不能太差,如果采样出的每一个样本子集都完全不同,则每一个基学习器只用到一小部分的数据,甚至不足以有效的学习,故我们可以使用 相互有交叠 的采样子集。

Bagging

Bagging是并行式集成学习算法著名的代表,它是基于自助采样法,给定含有m个样本的数据集,我们有放回的每一次抽取一个样本放入采样集中,经过m次随机采样的操作,我们得到含m个样本采样集,数据集中的样本有的在采样集中多次出现,有的则一次都没有!

问题:在自助法的采样过程中,对n个样本进行n次自助抽样,当n趋于无穷大时,最终有多少的数据从未被选择过?
答:一个样本在一次抽样过程中未被抽到的概率是:

n次抽样均未抽到的概率为:

当n趋于无穷大时,概率为

所以有:

因此,当样本数很大时,有36.8%的样本从未被选择过,可作为验证集

按照上面的,我们可以采样出T个含m个训练样本的采样集,然后基于每一个采样集训练出一个基学习器,再将这些基学习器进行结合,这就是bagging的基本流程。
在预测输出进行结合时,bagging对于分类问题采用简单的投票法;对于回归问题采用简单的平均法

偏差-方差方向考虑:Bagging主要关注于 降低方差

随机森林(Random Forest)

随机森林(RF)是Bagging的一个扩张变体,RF在以决策树为基学习器的基础上,进一步在决策树的训练过程中加入属性扰动。即随机森林中基学习器的 多样性不仅来自样本扰动,还来自属性扰动。
具体来说:传统的决策树在选择划分属性时是在当前结点的属性集合(假定有d个属性)中选择一个最优秀的属性;而在RF中,对基决策树的每一个结点,先从该结点的属性集合中随机选择一个包含k个属性的子集,然后再在这个子集中选择一个最优的属性。
这里的参数k控制了随机性的引入程度:若令k=d,则和传统的决策树一样;若令k=1,则随机选择一个属性用于划分;一般情况下,推荐值k = log2 d.

对于Bagging和随机森林,随机森林的训练效率常常优于Bagging,因为在个体决策树的构建中,Bagging使用的是“确定型”决策树,在选择划分属性时要对结点的所有属性进行考察,而随机森林使用的是“随机型”决策树则只考虑一个属性的子集。

结合策略

结合策略就是在基学习器训练好之后,以什么方法将这些学习器结合起来产生模型的最终输出,下面是一些常用的结合策略:

平均法(回归问题)

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

    显然,简单的平均法是加权平均法的特例,一般而言,在个体学习器性能相差较大时宜使用加权平均法,在个体学习器性能相差较小时宜使用简单平均法。

投票法(分类问题)

  • 绝对多数投票法:必须要占一半以上
  • 相对多数投票法:最多票数即可
  • 加权投票法:

    注意: 对于分类任务,各个基学习器的输出值有两种类型,分别为类标记和类概率:

    一般基于类概率进行结合往往比基于类标记进行结合的效果更好,需要注意的是对于异质集成学习算法,其类概率不能直接进行比较,此时需要将类概率转换为类标记输出,然后再投票。

学习法

学习法是一种更加高级的结合策略,即学习出一种“投票”的学习器,Stacking是学习法的代表。Stacking的基本思想是:首先训练出T个基学习器,对于一个样本它们产生T个输出,将这T个基学习器的输出与该样本的真实标记作为新的样本,m个样本就会产生一个m×T的样本集,来训练一个新的“投票”学习器。
投票学习器采样类概率作为输入属性,选用多响应线性回归(MLR)一般效果会更好。

多样性

在集成学习中,基学习器之间的多样性是影响集成器泛化能力的重要因素。因此增加多样性对于集成学习研究十分重要,常见的增加多样性的方法:

  • 数据样本的扰动:即利用具有差异的数据集来训练不同的基学习器。如:有放回的自助采样,但此类做法只对不稳定的学习算法非常有效,例如:决策树、神经网络
  • 输入属性扰动:即随机选取原数据属性的一部分,如:随机森林,从初始数据集中抽取子集,再在子集中抽取部分属性来训练基学习器。
  • 输出表示扰动:此类做法对训练样本的类标稍微变动、或者基学习器的输出进行转化
  • 算法参数扰动:通过随机设置不同的参数,例如:神经网络中,随机初始化权重与随机设置隐含层节点数。

总结

集成学习主要分为BaggingBoosting两种框架。
Boosting:降低 偏差串行,个体学习器 强依赖
Bagging: 降低 方差并行,个体学习器 弱依赖

Boosting模型中的GBDT后面再来总结,,,,,

ML_集成学习与Boosting模型相关推荐

  1. 集成学习之Boosting

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

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

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

  3. 【机器学习】集成学习之boosting AdaBoost

    Boosting Boosting策略在上一篇中有提到过,这里再说一遍. Boosting策略的核心思想就是对错误分类的样本投入更大的关注.采用的是加法模型和向前分步算法,向前分步算法中的每一步都会改 ...

  4. boosting算法_集成学习:boosting、BDT、GBDT的概括理解

    boosting是一种集成学习的方法,与bagging并列形成俩中不同的集成学习算法,本文主要概括boosting方法. boosting在训练过程中,它通过改变训练样本的权重,学习多个学习器,然后将 ...

  5. 集成学习中boosting、bagging、随机森林算法的介绍

    集成学习的概念 定义:集成学习通过构建并结合多个学习器来完成学习任务. 分类:只包含同种类型的个体学习器,这样的集成是"同质"的,例如都是神经网络或者决策树:包含不同类型的个体学习 ...

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

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

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

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

  8. 集成学习bagging, boosting, stacking

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

  9. 【机器学习】集成学习:Boosting、Bagging 和 Stacking

    文章目录 一.集成学习概述 二.Boosting 三.Bagging 四.Stacking 借鉴 一.集成学习概述 基分类器可能是同构的,也可能是异构的. 基分类器应该"好而不同" ...

  10. 【集成学习】Boosting策略典型算法原理

    集成学习 集成学习是一种由多种弱学习器组合成强学习器的策略,主要分为3类:Boosting方法.Bagging方法.Stacking方法. 一.Boosting Boosting方法基于串行策略,新的 ...

最新文章

  1. OCS2007R2部署之一软硬件环境准备
  2. keras构建前馈神经网络(feedforward neural network)进行回归模型构建和学习
  3. 静态程序分析chapter2 - IR(Jimple) 和 CFG
  4. POJ 1637 Sightseeing tour 混合图欧拉回路存在性判断
  5. python导入包的输入法_python 模块和包的导入
  6. cpython python 区别面试_python基础教程之千万不要错过这几道Python面试题
  7. binlog数据库不写入binlog_MySQL数据库及InnoDB存储引擎的日志文件
  8. 实现机器学习的循序渐进指南IX ——树回归
  9. python 类继承方法_python类的继承、多继承及其常用魔术方法
  10. VB INET控件的全部用法
  11. 贪心 穷举 动态规划 区别
  12. dbcc checkdb 200g 要多久_东丽区无人驾驶学多久,放心省心_石家庄北方汽修学校
  13. 经过 8 万画作+人工注释训练,算法学会了赏析名画
  14. Linux平台(Ubuntu或者树莓派)上下载磁力链接;使用Deluge下载
  15. 数的变幻(小明买书)
  16. 【兴趣书签】烧脑的科幻短篇小说
  17. 零基础学kubernetes(k8s)必看教程,带你10分钟快速实战入门k8s
  18. WSN连通性模拟、WSN覆盖率模拟、WSN分簇模拟、WSN能量损耗模拟
  19. angular之CanActivate守卫
  20. 2. C++ Visual Studio中同一个项目包含多个有main函数的源文件怎么分别运行?

热门文章

  1. linux ubuntu 安装 matlab 2010 及破解 详细图解
  2. 钉钉总裁不穷:周末最烦写周报还有被人钉
  3. 【优化算法】天牛须搜索优化粒子群算法【含Matlab源码 1256期】
  4. 【数字信号调制】基于matlab多进制数字相位调制(4PSK)【含Matlab源码 1001期】
  5. 【运动学】基于matlab速度+加速度数值计算 【含Matlab源码 974期】
  6. 【元胞自动机】基于matlab元胞自动机交通流仿真【含Matlab源码 827期】
  7. mysql monitor怎么用_MySQL 监控工具 mysql-monitor 详解
  8. js判断时间两小时之内_JS 判断两个时间的大小(可自由选择精确度:天,小时,分钟,秒)...
  9. autocoder自动代码生成器_Spring Boot 集成MyBatis Plus代码生成器
  10. 单变量求解C语言,二分法求解单变量非线性方程及其应用与实现.doc