热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

机器学习+模式识别学习总结(五)——集成学习

一、定义1、集成学习:集成学习的核心思想就是构建并结合多个学习器提升性能。将多个分类方法聚集在一起,以提高分类准确性,可以是不同或相同的

一、定义

1、集成学习:集成学习的核心思想就是构建并结合多个学习器提升性能。

将多个分类方法聚集在一起,以提高分类准确性,可以是不同或相同的算法(异质集成/同质集成),最后通过某种方法把学习结果集成起来。是一种机器学习范式,使用多个学习器来解决同一个问题。

2、集成学习两大类:

(1)个体学习器之间存在强依赖关系,必须串行生成的序列化方法,如,Boosting;

(2)个体学习器之间不存在强依赖关系,可同时生成并行化方法,如,Bagging和随机森林。

二、Boosting

1、简述:Boosting是一种可将弱学习器提升为强学习器的算法。(强学习算法:准确率很高的学习算法;弱学习算法:准确率不高,仅比随机猜测略好。)

2、算法机制:从初始训练集训练一个基学习器——根据基学习器的表现对训练样本分布进行调整——基于调整后的分布训练下一个基学习器——直至学习器数目达到事先设定的阈值T——将这T个基学习器加权结合,让分类效果差的基学习器具有较小的权值

【注】:

①Boosting中所有的弱学习器可以是不同类的分类器。

②每一轮改变训练数据权重或概率分布的方式:通过提高那些在前一轮被弱分类器分错样例的权值,减小前一轮分对样本的权值,这样误分的样本在后续会受到更多关注。

③通过加法模型将弱分类器进行线性组合。

3、理论来源:基于PAC(Probably Approximately Correct)学习模型的一种提高。

PAC:Probably Approximate Correct直译过来就是“可能近似正确”,这里面用了两个描述”正确”的词,可能和近似。 “近似”是在取值上,只要和真实值的偏差小于一个足够小的值就认为”近似正确”;“可能”是在概率上,即只要“近似正确”的概率足够大就认为“可能近似正确”。 

https://blog.csdn.net/qq_34662278/article/details/83961427

4、代表算法:AdaBoost,“可调节提升方法” (Adaptive Boosting)

(1)算法核心思想:

①迭代。每轮迭代在训练集上产生新分类器,使用该分类器对所有样本分类,以评估每个样本的重要性(用于后面赋权值)。

②样本权重更新。初始为等概率分布,因此每个样本分布的初始权值为1/N,每次循环后,提高错误样本的分布概率,使错分样本占比增大,下一次循环弱学习器着重判断,同时正确分类的样本权重降低,其“抽中”的概率会减小。

③弱学习器的权重。准确率越高的弱学习器权值越高。当循环到一定次数或某度量标准符合要求时,停止循环,然后将弱学习器按其相应的权重加权组成强学习器。

(2)基本思路:

①训练一系列弱学习器h1,h2,h3,...,hT。

②训练过程中注重那些分类错误的样本。

③把训练出来的一系列弱学习器组合起来,每个弱学习器hT(x)都有一个相应的权重\alpha _{t},

H(x)=sign(\sum_{t=1}^{T}\alpha _{t}h_{t}(x)))

(3)AdaBoost的权重更新计算:

①基学习器权值:\alpha _{t}=\frac{1}{2}\ln(\frac{1-\epsilon _{t}}{\epsilon _{t}})

②训练样本权值:

错误分类样本的权值更新:W_{t+1}(i)=\frac{W_{t}(i)}{2\epsilon _t}

正确分类样本的权值更新:W_{t+1}(i)=\frac{W_{t}(i)}{2(1-\epsilon _t)}

(4)AdaBoost总结:

①核心思想是关注被错分的样本,注重性能好的弱分类器。

②样本权重间接影响分类器权重。

③阈值的选取规则是选取使分类错误率\epsilon _{t}最小的阈值。

不改变训练数据,而不断改变训练数据权值分布,使训练数据在基本分类器中起不同作用。

⑤利用基本分类器的线性组合构建最终分类器。

 三、Bagging与随机森林

(一)Bagging(Bootstrap Aggregating):

Bagging是一种并行式集成学习方法,可用于二分类、多分类、回归等任务,是有放回抽样,得到统计量的分布及置信区间。

1、基本流程:对一个包含m个样本的数据集,又放回地进行m次随机采样,得到具有m个样本的采样集——照这样取T个这样的采样集——每个采样集训练一个基学习器——对学习器进行组合(组合时,若是分类任务,则使用简单投票法,若是回归任务,则使用简单平均法)

【注】:

①算法思想是让学习算法训练多轮,每轮的训练集由从初始地训练集中随机取出的m个训练样本组成,某些个初始样本在某论训练集中可以出现多次/不出现。

②基于每个训练集训练一个“专属”基学习器,再将这些基学习器进行加权组合。

③Bagging通过在不同数据集上训练模型,降低分类器的方差(可以理解为数据集改动对模型性能的影响),防止过拟合。

2、基本性质及意义

①Bagging通过结合几个模型降低泛化误差:分别训练几个不同的模型,然后让所有模型表决测试样例的输出,这称为模型平均,采用这种策略的技术被称为集成方法。

②通过在构建模型的过程中引入随机性来减少基学习器的方差。

③因其可以减小过拟合,在强分类器和复杂模型上使用时表现得很好。

④采用有放回的抽样,在数据集比较小的时候可以使数据集样本“变多”,因为每次训练都需要重新采样,但由于有的样本可能会被选取多次,相当于加大了权重,改变了原本的数据分布。

3、Boosting与Bagging的比较

①样本权重:Boosting有权重,是根据错误率进行调整更新的;而Bagging使用均匀取样,每个样例的权重相等(相当于没有权重)。只能顺序生成 可以并行生成。

②样本选择:Boosting每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化;Bagging的训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。

③预测函数:Boosting的弱分类器都有各自的权重,分类误差小的分类器权重更大;Bagging所有预测函数的权重相等。

④计算方式:Boosting的权重只能顺序计算生成;Bagging的权重可以并行计算生成。

⑤方差、偏差比较:Boosting基于偏差的减少;Bagging基于方差的减少。

(二)随机森林:

1、算法概述:对基学习器的每个结点,先从该节点的属性集合中随机选择一个包含K个属性的子集,然后从这个子集中选择一个最优属性用于划分,应用于结点进行分裂【K控制了随机性的引入程度,K越大,随机性越大】。随机森林的基本单元是决策树

2、每棵树的生成规则:

①Bootstrap抽取样本:如果训练集大小为N,对于每棵树而言,随机且有放回地从训练集中抽取N个训练样本,作为该树的训练集。

②选属性子集&#xff1a;若每个样本的特征维度为M&#xff0c;指定一个m<

③努力生长&#xff1a;每棵树都尽可能最大程度生长&#xff0c;且无剪枝过程。

思考&#xff1a;为什么要有放回抽样&#xff1f;若非有放回抽样&#xff0c;则每棵树的训练样本不同&#xff0c;无交集&#xff0c;这样每棵树都是“有偏的”&#xff0c;训练出来差异大(不能有太大差异&#xff0c;因为这些学习器解决的都是同一个问题&#xff0c;但也不能完全没有联系&#xff0c;这样的话学习器差异很大)&#xff0c;而随机森林最后分类取决于多棵树(弱分类器)的投票表决&#xff0c;应是“求同”的一个过程&#xff0c;若用完全不同的训练集来训练则对分类结果无帮助。

3、随机森林分类效果(错误率)与两个因素有关&#xff1a;

①森林中任意两棵树的相关性&#xff1a;相关性越高&#xff0c;错误率越大。

②每棵树的分类能力&#xff1a;分类能力越大&#xff0c;错误率越大。

4、袋外错误率&#xff1a;

  • 构建随机森林的关键问题是如何选取最优的m&#xff0c;解决该问题主要依据计算袋外错误率(oob error,out-of-bag error)
  • 可在随机森林生成的过程中对误差建立一个无偏估计&#xff0c;因为构建每棵树时&#xff0c;采用有放回抽样&#xff0c;约1/3的训练实例没有参与第K棵树的生成&#xff0c;它们便是第K棵树的oob样本。这样的采样特点便允许我们进行oob估计&#xff1a;①对每个样本计算它作为oob样本的树对它的分类情况②以简单多数投票作为该样本的分类结果③用误分类个数占样本总数的比例作为随机森林的oob错误率。

5、随机森林的随机性体现在&#xff1a;训练样本选择随机&#43;属性特征选择随机。

 四、多样性增强

常见的增强个体学习器多样性的方法&#xff1a;数据样本扰动、输入属性扰动、输出表示扰动、算法参数扰动。

1、数据样本扰动&#xff1a;通常基于采样法(如Bagging中的自助采样、Adaboost中的序列采样)&#xff0c;对“不稳定基学习器”很有效&#xff1b;&#xff08;对扰动敏感的基学习器&#xff1a;决策树、NN&#xff1b;不敏感的基学习器&#xff1a;SVM、朴素贝叶斯、K近邻、线性学习器)

2、输入属性扰动&#xff1a;不同的“子空间”(即属性子集)提供了观察数据的不同视角&#xff0c;从不同子空间训练的个体学习集必然有所不同。算法从初始属性集中抽取出若干个属性子集&#xff0c;再基于每个属性子集训练一个基学习器。

3、输出表示扰动&#xff1a;对输出表示进行操作以增强多样性。可对训练个样本的类标记稍作变动&#xff0c;如翻转法&#xff08;flipping output&#xff09;随机改变一些训练样本的标记等等。

4、算法参数扰动&#xff1a;通过随机设置不同参数&#xff0c;可产生差异较大的个体学习器。

参考&#xff1a;

Bagging和Boosting的区别&#xff08;面试准备&#xff09; - Earendil - 博客园

https://blog.csdn.net/fjssharpsword/article/details/61913092


推荐阅读
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • PRML读书会第十四章 Combining Models(committees,Boosting,AdaBoost,决策树,条件混合模型)...
    主讲人网神(新浪微博:豆角茄子麻酱凉面)网神(66707180)18:57:18大家好,今天我们讲一下第14章combiningmodel ... [详细]
  • 媒介本文的前身是源自github上的项目awesome-github-vue,但由于该项目上次更新时候为2017年6月12日,许多内容早已逾期或是许多近期优异组件未被收录,所以小肆 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • JavaScript设计模式之策略模式(Strategy Pattern)的优势及应用
    本文介绍了JavaScript设计模式之策略模式(Strategy Pattern)的定义和优势,策略模式可以避免代码中的多重判断条件,体现了开放-封闭原则。同时,策略模式的应用可以使系统的算法重复利用,避免复制粘贴。然而,策略模式也会增加策略类的数量,违反最少知识原则,需要了解各种策略类才能更好地应用于业务中。本文还以员工年终奖的计算为例,说明了策略模式的应用场景和实现方式。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • 本文讨论了使用bootstrapselect插件设置container后,选择完选项后options不隐藏的问题,给出了解决方法,并提供了相应的jsfiddle链接进行演示。 ... [详细]
  • Hello.js 是一个用于连接OAuth2服务的JavascriptRESTFULAPI库,如Go ... [详细]
author-avatar
喂╲偶稀飯妳
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有