集成学习-三大流派

(超小声,假如实在不愿意看,就跳到终究,看回忆办法,可是不推荐这么做哦)

Bagging引导集合算法,又称装袋算法

Boosting提高办法

stacking堆叠法集成思维(注意,这是种集成思维,不是具体算法)

集成学习是一种机器学习范式。在集成学习中,咱们会练习多个模型(一般称为「弱学习器」)处理相同的问题,并结合以获得更好的成果。最重要的假定是:当弱模型被正确组合时,咱们能够得到更精确/更安稳的模型。

在集成学习理论中,咱们将弱学习器(或根底模型)称为「模型」,这些模型可用作设计更复杂模型的组件。大多数状况下,这些基模型自身的功能并不是十分好,这要么是由于具有较高的偏置(低自由度模型),要么是由于方差太大导致鲁棒性不强(高自由度模型)。

集成办法的思维是经过将这些弱学习器的偏置和/或方差结合起来,从而创立一个「强学习器」(或「集成模型」),以获得更好的功能。

建立一个集成学习办法,首要要挑选待聚合的根底模型。大多数状况下(包含bagging 和 boosting),咱们会运用单一的根底学习算法,这样一来咱们就有了以不同办法练习的同质弱学习器。

这样得到的集成模型被称为「同质的」。但是,也有一些办法运用不同品种的根底学习算法:将一些异质的弱学习器组合成「异质集成模型」。

很重要的一点是:对弱学习器的挑选应该和聚合这些模型的办法相一致。假如咱们挑选具有低偏置高方差的根底模型,咱们应该运用一种倾向于减小方差的聚合办法;而假如咱们挑选具有低方差高偏置的根底模型,咱们应该运用一种倾向于减小偏置的聚合办法。

这就引出了如何组合这些模型的问题。咱们能够用三种首要的旨在组合弱学习器的「元算法」:

bagging,该办法一般考虑的是同质弱学习器,彼此独登时并行学习这些弱学习器,并依照某种确定性的均匀进程将它们组合起来。

boosting,该办法一般考虑的也是同质弱学习器。它以一种高度自适应的办法顺序地学习这些弱学习器(每个根底模型都依赖于前面的模型),并依照某种确定性的战略将它们组合起来。

stacking,该办法一般考虑的是异质弱学习器并行地学习它们,并经过练习一个「元模型」将它们组合起来,依据不同弱模型的猜测成果输出一个终究的猜测成果。

十分粗略地说,咱们能够认为 bagging的要点在于获得一个方差比其组成部分更小的集成模型,而 boosting 和 stacking则将首要生成偏置比其组成部分更低的强模型(即便方差也能够被减小)。

接下来,咱们将具体介绍 bagging 和 boosting办法(它们比 stacking 办法运用更广泛,而且让咱们能够讨论一些集成学习的关键概念),然后简要概述 stacking 办法。

1 Bagging与Boosting

1.1 中心思维

1.1.1 Bagging思维

每个模型有自己擅长的方向,也有自己模型缺陷的地方。

每个模型或许关于某些样本的取值状况会产生过拟合的状况,此刻经过有放回重采样的多个模型交融,能够将一些过拟合的状况进行缓解。

结构:他是一个并行结构。

意图(运用场景):处理单个模型过拟合问题。

1.1.2 Boosting思维

虽然每个子模型作用比较差,可是将多个子模型的作用兼并,整个模型的作用会比单个模型作用好。

结构:他是一个串行结构。

意图(运用场景):处理单个模型欠拟合问题。

咱们能够将弱学习器结合起来,以得到功能更好的模型。

组合根底模型的办法应该与这些模型的类型相适应。

集成学习-三大流派

1.2 两者的要点

1.2.1 关于 Bagging

在「并行化的办法」中,咱们独自拟合不同的学习器,因而能够同时练习它们。最闻名的办法是「bagging」(代表「自助聚合」),它的目标是生成比单个模型更鲁棒的集成模型。

这种核算技术先随机抽取出作为代替的 B 个观测值,然后依据一个规划为 N的初始数据集生成大小为 B 的样本(称为自助样本)。

集成学习-三大流派

在某些假定条件下,这些样本具有十分好的核算特性:在一级近似中,它们能够被视为是直接从真实的底层(而且往往是未知的)数据散布中抽取出来的,而且彼此之间彼此独立。因而,它们被认为是真实数据散布的代表性和独立样本(几乎是独立同散布的样本)。

为了使这种近似建立,有必要验证两个方面的假定。

首要初始数据集应该足够大,以捕获底层散布的大部分复杂性。这样,从数据会集抽样便是从真实散布中抽样的杰出近似(代表性)。

其次,与自助样本的大小比较数据集的规划应该足够大,这样样本之间就不会有太大的相关性(独立性)。注意,接下来我或许还会说到自助样本的这些特性(代表性和独立性),但读者应该始终紧记:「这只是一种近似」。

举例而言,自助样本一般用于评价核算估量量的方差或置信区间。依据界说,核算估量量是某些观测值的函数。因而,随机变量的方差是依据这些观测值核算得到的。

为了评价这种估量量的方差,咱们需求对从感兴趣散布中抽取出来的几个独立样本进行估量。在大多数状况下,相较于实际可用的数据量来说,考虑真实独立的样本所需求的数据量或许太大了。

但是,咱们能够运用自助法生成一些自助样本,它们可被视为「最具代表性」以及「最具独立性」(几乎是独立同散布的样本)的样本。这些自助样本使咱们能够经过估量每个样本的值,近似得到估量量的方差。

集成学习-三大流派

1.2.2 关于 Boosting

在「顺序化的办法中」,组合起来的不同弱模型之间不再彼此独登时拟合。其思维是「迭代地」拟合模型,使模型在给定过程上的练习依赖于之前的过程上拟合的模型。「Boosting」是这些办法中最闻名的一种,它生成的集成模型一般比组成该模型的弱学习器偏置更小。

1.3 两者的差异

Boosting 办法和bagging办法的工作思路是相同的:咱们构建一系列模型,将它们聚合起来得到一个功能更好的强学习器。但是,与要点在于减小方差的 bagging 不同,boosting 着眼于以一种适应性很强的办法顺序拟合多个弱学习器:序列中每个模型在拟合的进程中,会愈加注重那些序列中之前的模型处理地很糟糕的观测数据。

直观地说,每个模型都把注意力会集在现在最难拟合的观测数据上。这样一来,在这个进程的终究,咱们就获得了一个具有较低偏置的强学习器(咱们会注意到,boosting也有减小方差的作用)。和 bagging 相同,Boosting 也能够用于回归和分类问题。

由于其要点在于减小偏置,用于 boosting的根底模型一般是那些低方差高偏置的模型。例如,假如想要运用树作为根底模型,咱们将首要挑选只要少许几层的较浅决策树。

而挑选低方差高偏置模型作为 boosting弱学习器的另一个重要原因是:这些模型拟合的核算开销较低(参数化时自由度较低)。

实际上,由于拟合不同模型的核算无法并行处理(与 bagging不同),顺序地拟合若干复杂模型会导致核算开销变得十分高。

一旦选定了弱学习器,咱们仍需求界说它们的:

拟合办法(在拟合当时模型时,要考虑之前模型的哪些信息);

聚合办法(如何将当时的模型聚合到之前的模型中)。

1.4 实例差异

adaboost和gbdt的差异

两种元算法在顺序化的进程中创立和聚合弱学习器的办法存在差异。自适应增强算法会更新附加给每个练习数据会集观测数据的权重,而梯度提高算法则会更新这些观测数据的值。这儿产生差异的首要原因是:两种算法处理优化问题(寻找最佳模型——弱学习器的加权和)的办法不同。

集成学习-三大流派

2 Stacking

2.1 Stacking 概述

Stacking 与 bagging 和 boosting 首要存在两方面的差异。首要,Stacking 一般考虑的是异质弱学习器(不同的学习算法被组合在一起),而bagging 和 boosting首要考虑的是同质弱学习器。其次,stacking 学习用元模型组合根底模型,而bagging 和 boosting 则依据确定性算法组合弱学习器。

堆叠法(Stacking)

正如上文已经说到的,stacking的概念是学习几个不同的弱学习器,并经过练习一个元模型来组合它们,然后根据这些弱模型回来的多个猜测成果输出终究的猜测成果。

因而,为了构建 stacking 模型,咱们需求界说两个东西:想要拟合的 L个学习器以及组合它们的元模型。

例如,关于分类问题来说,咱们能够挑选 KNN 分类器、logistic回归和SVM 作为弱学习器,并决定学习神经网络作为元模型。然后,神经网络将会把三个弱学习器的输出作为输入,并回来根据该输入的终究猜测。

所以,假定咱们想要拟合由 L 个弱学习器组成的 stacking集成模型。咱们有必要遵循以下过程:

将练习数据分为两组

挑选 L 个弱学习器,用它们拟合第一组数据

使 L 个学习器中的每个学习器对第二组数据中的观测数据进行猜测

在第二组数据上拟合元模型,运用弱学习器做出的猜测作为输入

在前面的过程中,咱们将数据集一分为二,由于对用于练习弱学习器的数据的猜测与元模型的练习不相关。因而,将数据集分成两部分的一个明显缺陷是,咱们只要一半的数据用于练习根底模型,另一半数据用于练习元模型。

为了克服这种限制,咱们能够运用某种「k-折穿插练习」办法(类似于k-折穿插验证中的做法)。这样所有的观测数据都能够用来练习元模型:

关于恣意的观测数据,弱学习器的猜测都是经过在 k-1折数据(不包含已考虑的观测数据)上练习这些弱学习器的实例来完结的。

换句话说,它会在 k-1折数据上进行练习,从而对剩下的一折数据进行猜测。迭代重复这个进程,就能够得到对任何一折观测数据的猜测成果。这样一来,咱们就能够为数据会集的每个观测数据生成相关的猜测,然后运用所有这些猜测成果练习元模型。

集成学习-三大流派

3 场景挑选

集成学习的适用场景:

1 弱模型间存在一定差异性。这会导致数据区别的边界不同,即同一弱模型在处理使命时或许存在错误。

将多个弱模型兼并后,多个模型一起比较,就能够得到愈加合理的边界,减少整体的错误率,完成更好的作用;

2 关于数据集过大或许过小,能够分别进行区别和有放回的操作产生不同的数据子集,然后运用数据子集练习不同的分类器,终究再兼并成为一个大的分类器;

3 假如数据的区别边界过于复杂,运用线性模型很难描述状况,那么能够练习多个模型,然后再进行模型的交融;

4 关于多个异构的特征集的时分,很难进行交融,那么能够考虑每个数据集构建一 个分类模型,然后将多个模型交融。

4 总结

假如前面的都没记住,那么请参阅笔者的专用办法进行区别回忆(独家办法,仅供参阅,出事不负责啊

Bagging:创立好多相同的模型我们一起跑,然后我们一起商量成果;

Boosting:创立一个模型,一遍一遍重复跑,跑到终究结合历史考虑成果;

Stacking:创立几个不相同的模型,我们都跑一遍,然后我们投票,少数服从多数。