Ensemble learning(集成学习)

定义

集成学习是一种机器学习范式,其中多个学习器被训练来解决相同的问题。 这与试图从训练数据中学习一个假设的普通机器学习方法相反,集成方法尝试构造一组假设并将它们结合使用。

一个集合包含一些通常被称为基础学习器的学习器。 一个集合的泛化能力通常比单个基础学习器的泛化能力强得多。 实际上,集成学习具有极大吸引力,因为它可以将弱于随机猜测的弱学习器提升为能够做出非常准确预测的强大学习器。 所以,“基础学习器”也被称为“弱学习器”。 然而,值得注意的是,尽管大多数理论分析都是针对弱学习器的,但实践中使用的基础学习器并不一定很弱,因为使用不那么薄弱的基础学习器通常会导致更好的表现。

基础学习器通常通过基础学习算法从训练数据生成,所述基础学习算法可以是决策树,神经网络或其他种类的机器学习算法。 大多数集成方法使用单一的基本学习算法来生成均匀基础学习器,但也有一些方法使用多种学习算法来生成异构学习器。 在后一种情况下,没有单一的基本学习算法,因此,有些人更喜欢称学习器为个别学习器或组件学习者为“基础学习器”,而“个别学习器”和“组件学习器”的名称也可用于同质基础学习器。

构成集合

通常情况下,集合是分两步构建的。 首先,生成许多基础学习器,这些基础学习器可以以并行样式或序列样式生成,序列样式即基础学习器的生成影响后续学习器的生成。 然后,将基础学习器结合使用,其中最流行的组合方案是用于分类的多数投票和用于回归的加权平均。

一般来说,为了获得一个好的集合,基础学习器应该尽可能地更加准确,并尽可能多样化。这已经被Krogh和Vedelsby正式表现出来,并且被许多其他人所强调。对于估计学习器的准确性有很多有效的过程,例如交叉验证,保持测试等。然而,对于直觉上认为是多样性的东西没有严格的定义。虽然已经设计了多种多样性措施,但Kuncheva和Whitaker 表示,现有的多样性措施在建设集合方面的作用是值得怀疑的。在实践中,可以从不同的渠道引入基础学习器的多样性,例如对训练样例进行二次采样,操纵属性,操纵输出,将随机性注入学习算法,甚至同时使用多种机制。采用不同的基础学习器生成过程和/或不同的组合方案导致不同的集合方法。

有许多有效的集成方法。 下面将简要介绍三种有代表性的方法,Boosting ,Bagging 和Stacking 。 这里为了简单考虑二元分类。 也就是说,设X和Y分别表示实例空间和一组类标签,假设Y = {-1;+1}中。 训练数据集D = {(x1 ; y1); (x2; y2); …; (xm; ym)}给出,其中xi∈X和yi∈Y(i = 1;….; m)。

Boosting

实际上,Boosting是一系列算法,因为它有许多变体。在这里,最着名的算法AdaBoost 被认为是一个例子。首先,它为所有训练实例分配相同的权重。将第t轮学习中权重的分布表示为Dt。从训练数据集和Dt算法生成一个基本学习器ht:X-> Y通过调用基础学习算法。然后,它使用训练样例来测试ht,并且不正确分类的例子的权重将会增加。因此,获得更新的权重分布Dt + 1。从训练数据集和Dt + 1中,AdaBoost通过再次调用基础学习算法生成另一个基础学习器。这种过程重复进行T次,每次都称为一轮,最终的学习器是通过T轮基础学习者的加权多数投票得出的,其中在训练过程中确定了学习器的权重。在实践中,基础学习算法可以是可以直接使用加权训练样例的学习算法;否则可以通过根据权重分布Dt对训练样本进行采样来利用权重。 AdaBoost的伪代码如图1所示。

Bagging

Bagging 通过调用基础学习算法来训练大量基础学习器,每个基础学习器都来自不同的bootstrap样本。 Bootstrap样本是通过对替换的训练数据集进行二次采样得到的,其中样本的大小与训练数据集的大小相同。 因此,对于bootstrap样本,可能会出现一些训练样例,但有些训练样例可能不会,例如至少出现一次样例的概率约为0.632。 在获得基础学习器后,Bagging通过多数投票将他们结合起来,并预测得票最多的类。 Bagging的伪代码如图2所示。 值得一提的是Bagging随机森林的一个变种被认为是迄今为止最强大的集合方法之一。

Stacking

在Stacking的典型实现中,通过采用不同的学习算法从训练数据集中生成许多第一级个体学习器。 这些个别学习器然后被称为元学习器的二级学习者组合。 Stacking的伪代码如图3所示。 很明显Stacking与信息融合方法有着密切的关系。

一般来说,没有一种整体方法比其他整体方法更出色。 流行的集合方法的实证研究可以在许多论文中找到。 以前,有人认为使用更多的基础学习器会导致更好的表现,但周等人证明了“许多可能比所有更好“的理论,这就表明更多的基础学习器带来更好的表现可能不是事实。 结果表明,在生成一组基础学习器之后,选择一些基础学习器而不是全部使用它们来组成一个集合是更好的选择。 这样的集合被称为选择性集合。

值得一提的是,除了分类和回归之外,集合方法也被设计用于聚类和其他类型的机器学习任务。

为什么集合优于单个

为了理解为什么一个集合的泛化能力通常比单个学习器的泛化能力强得多,Dietterich 通过观察机器学习的本质为寻找最准确假设的假设空间提供了三个理由。第一个原因是,训练数据可能无法提供足够的信息来选择单一的最佳学习器。例如,可能有许多学习器在训练数据集上的表现同样出色。因此,结合这些学习器可能是更好的选择。第二个原因是,学习算法的搜索过程可能不完善。例如,即使存在唯一的最佳假设,也可能难以实现,因为运行算法会导致次优假设。因此,集合可以弥补这种不完善的搜索过程。第三个原因是,被搜索的假设空间可能不包含真正的目标函数,而集合可以给出一些很好的近似值。例如,众所周知,决策树的分类边界是与坐标轴平行的线段。如果目标分类边界是一条光滑的对角线,则使用单个决策树不能产生良好的结果,但通过组合一组决策树可以实现良好的近似。请注意,这些是直观的,而不是严格的理论解释。

有关Boosting和Bagging等着名集合方法的理论研究很多,但对这些方法的潜在机制还没有一个清晰的认识。 例如,经验观察表明,即使经过大量循环,Boosting也不会遭受过度拟合,有时甚至能够在训练误差已经达到零之后减少泛化误差。 尽管许多研究人员已经研究了这种现象,但理论解释仍在争论中。

偏差方差分解常用于研究集合方法的性能。 众所周知Bagging可以显着减少方差,因此最好应用于遭受大方差的学习器,例如决策树或神经网络等不稳定的学习器。 除了减少方差外,Boosting可以显着减少偏差,因此,对于弱决策者如决策残块,Boosting通常更有效。

总结

集成学习是一种强大的机器学习范式,在许多应用中展现出明显的优势。 通过使用多个学习者,一个集合的泛化能力可以比单个学习者的泛化能力好得多。 目前的集合方法的严重缺陷是缺乏可理解性,即集合体所学的知识对于用户是不可理解的。 提高集合的可理解性是一个重要但尚未充分研究的方向。 另一个重要问题是目前没有多样性措施令人满意,尽管众所周知多样性在集合中起着重要作用。 如果这些问题能够得到很好的解决,集体学习将能够为更多的应用做出更多贡献。



参考文献:“Ensemble Learning” Zhi-Hua Zhou

原文地址:https://www.cnblogs.com/yifdu25/p/8598228.html

时间: 2024-11-08 11:26:06

Ensemble learning(集成学习)的相关文章

Ensemble_learning 集成学习算法 stacking 算法

原文:https://herbertmj.wikispaces.com/stacking%E7%AE%97%E6%B3%95 stacked 产生方法是一种截然不同的组合多个模型的方法,它讲的是组合学习器的概念,但是使用的相对于bagging和boosting较少,它不像bagging和boosting,而是组合不同的模型,具体的过程如下:1.划分训练数据集为两个不相交的集合.2. 在第一个集合上训练多个学习器.3. 在第二个集合上测试这几个学习器4. 把第三步得到的预测结果作为输入,把正确的回

ensemble learning 之 boosting

Ensemble Learning 集成学习是组合多个模型来共同完成一个任务的方法,每个模型可以叫做基学习器,集学习器通过现有的学习算法从训练数据中训练得到,常见的如 Decision Tree 与 Neural Network ,衡量集成学习主要有两个指标: 准确性:即个体学习器要有一定的准确性,才能达到更好的效果. 多样性:即学习器之间要有一些差于,极端情况下完全相同的几个学习器集成起来后完全没有任何效果. 目前集成学习大致分为 Boosting 与 Bagging 两种方式,Boostin

集成学习:随机森林.GBDT

集成学习(Ensemble Learning) 集成学习的思想是将若干个学习器(分类器&回归器)组合之后产生一个新学习器.弱分类器(weak learner)指那些分类准确率只稍微好于随机猜测的分类器(errorrate < 0.5): 集成算法的成功在于保证弱分类器的多样性(Diversity).而且集成不稳定的算法也能够得到一个比较明显的性能提升 常见的集成学习思想有: Bagging Boosting Stacking Why need Ensemble Learning? 1. 弱分

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

1. 集成学习(Ensemble Learning)原理 2. 集成学习(Ensemble Learning)Bagging 3. 集成学习(Ensemble Learning)随机森林(Random Forest) 4. 集成学习(Ensemble Learning)Adaboost 5. 集成学习(Ensemble Learning)GBDT 6. 集成学习(Ensemble Learning)算法比较 1. AdaBoost Vs GBDT 相同 AdaBoost和GBDT都是重复选择一个

7. 集成学习(Ensemble Learning)Stacking

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. 前言 到现在

Ensemble learning(集成学习)

集成学习:是目前机器学习的一大热门方向,所谓集成学习简单理解就是指采用多个分类器对数据集进行预测,从而提高整体分类器的泛化能力. 我们在前面介绍了.所谓的机器学习就是通过某种学习方法在假设空间中找到一个足够好的函数h逼近f,f是现实数据的分布函数模型,这个近似的函数就是分类器.  我们以分类问题作为说明,分类问题指的是使用某种规则进行分类,实际上就是寻找某个函数.集成学习的思路大体上可以这样理解:在对新的数据实例进行分类的时候,通过训练好多个分类器,把这些分类器的的分类结果进行某种组合(比如投票

集成学习(Ensemble Learning)

集成学习是机器学习中一个非常重要且热门的分支,是用多个弱分类器构成一个强分类器,其哲学思想是"三个臭皮匠赛过诸葛亮".一般的弱分类器可以由决策树,神经网络,贝叶斯分类器,K-近邻等构成.已经有学者理论上证明了集成学习的思想是可以提高分类器的性能的,比如说统计上的原因,计算上的原因以及表示上的原因.集成学习中主要的3个算法为:boosting,bagging,stacking.其中boosting的弱分类器形成是同一种机器学习算法,只是其数据抽取时的权值在不断更新,每次都是提高前一次分错

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

本杂记摘录自文章<开发 | 为什么说集成学习模型是金融风控新的杀手锏?> 基本内容与分类见上述思维导图. . . 一.机器学习元算法 随机森林:决策树+bagging=随机森林 梯度提升树:决策树Boosting=GBDT  . 1.随机森林 博客: R语言︱决策树族--随机森林算法 随机森林的原理是基于原始样本随机抽样获取子集,在此之上训练基于决策树的基学习器,然后对基学习器的结果求平均值,最终得到预测值.随机抽样的方法常用的有放回抽样的booststrap,也有不放回的抽样.RF的基学习器

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

1. 前言 相信看了之前关于集成学习的介绍,大家对集成学习有了一定的了解.本文在给大家介绍下远近闻名的随机森林(RF)算法. 随机森林是集成学习中可以和梯度提升树GBDT分庭抗礼的算法,尤其是它可以很方便的并行训练,在如今大数据大样本的的时代很有诱惑力. 2. 随机森林原理 随机森林是Bagging算法的进化版,也就是说,它的基本思想仍然和Bagging,但是进行了独有的改进. RF使用了CART决策树作为弱学习器,这让我们想到了梯度提示树GBDT. 在使用决策树的基础上,RF对决策树的建立做了