第8章-集成学习项目实战记录

Posted wyy_persist

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第8章-集成学习项目实战记录相关的知识,希望对你有一定的参考价值。

8.1 个体与集成

集成学习通过构建并集合多个学习器来学习任务,有时被称为多分类器系统,基于委员会 的学习等。

如果集成的时候是同类的模型进行集成,那么称为同质集成。其中的个体单独的学习器是基学习器。相应的学习算法被称为基学习算法。

当集成的是多个不同类型的学习器的时候,被称为异质的。同时,相应的单个学习器被称为组件学习器或称为个体学习器。

集成学习的结果是通过投票法产生的。其中,实现集成学习器的方法是:个体学习器应好而不同,个体学习器可以有较好的性能,但是相互之间应该有较大的不同之处。

示例:先得到基本学习器的错误率,然后集成为一个学习器,那么集成的学习器的错误率是由Hoeffding不等式获得的。

由式可以得到:随着集成学习器中个体学习器的数目T的不断增加,集成的错误率将指数级下降,最终趋向于零。

使用上述不等式获得对应的集成学习器的错误率的时候,需要注意的是基于前提条件:基学习器的误差之间相互独立。

实际上,如何产生较少数目并获得较高的准确率是集成学习的核心所在。

集成学习目前存在的两种的方法:

  1. 个体学习器之间存在的强依赖关系,必须串行生成的序列化方法。
  2. 个体学习器之间不存在强依赖关系,可同时生成的并行化方法。

上述的两种方法中,第一种方法的代表是:Boosting,第二种的代表方法是:Bagging和随机森林。

8.2第一种方法:Boosting

思想:使用数据样本集进行训练出一个基学习器,然后根据基学习器的表现对训练样本的分布进行调整,使得先前基学习器做错的样本在后续的训练过程中受到更多的关注,然后基于调整后的样本分布来训练下一个基学习器。然后如此反复进行,直到获得基学习器的数目达到了预先设定的T数。然后将T个基学习器进行加权的线性组合。

Boosting族算法最著名的代表是AdaBoost算法。

上述的AdaBoost算法具有多种推导方式,下述是基于加性模型的,即基学习器的线性组合:

H(X) = 求和 at * ht(x)

来最小化指数损失函数。如果上述的H(x)可以使得指数损失函数最小化,那么考虑指数损失函数对H(x)的偏导。而后令偏导为0,那么得到H(x) = 1/2 * ln (P(f(x) = 1 | x) / p(f(x) = -1 | x) );

对于上述的式子来说,sign(H(x))达到了贝叶斯分类的最优错误率。即:指数损失函数最小化,那么分类错误率也是最小化。也就是说指数损失函数是分类任务原本0/1损失函数的一致的替代损失函数。那么我们选择该函数作为优化目标实现了AdaBoost算法。

Boosting算法要求基学习器能对特定的数据分布进行学习,可以通过重赋权法实施。即在训练过程中的每一轮中,根据样本分布为每个训练样本重新赋予一个权重。

对无法接受新样本的基学习器来说,可以使用重采样法来处理。即在每一轮学习中,对样本集进行重新采样,然后再用重采样而得的样本集对基学习器进行训练。

使用重采样法,可以获得重启动的机会,以避免训练过程过早停止。

Boosting主要关注的是降低偏差,那么该算法基于泛化性能相当弱的学习器构建出很强的集成。

8.3 Bagging 和随机森林

一种比较可能的想法是:将数据进行采样之后对不同的采样数据进行不同基学习器的训练。这样一来,由于数据集的不同很有可能会使得得到的基学习器的不同。

但是上述过程带来的问题是:由于采样样本集的大小不同,有的会产生较小的样本集,使用这种比较小的样本集会导致生成的基学习器的泛化能力比较差,所以可以考虑使用相互有交叠的采样子集进行训练学习器。

Bagging是并行式集成学习方法的主要代表。

给定训练集,每次训练的时候进行采样,而后将采样之后的样本集重新放入到整个样本集中,然后在多次采样及重新放回之后,可以得到初始训练集中约有63.2%的样本出现在采样集中。

这样一来,可以使用总体样本集中的63.2%的样本集得到T个含m个训练样本的采样集。然后使用这m个采样集训练出一个基学习器,再将这些基学习器进行结合。这就是Bagging的基本流程。

Bagging使用简单投票法进行抉择,如果对两个类的票数相同的情况,那么随机选择一个,当然也可以呃进一步考察学习器投票置信度来确定最终的胜利者。

Bagging的复杂度基本上和训练一个基学习器进行学习的时间复杂度同阶,也就是说Bagging算法是一个相当高效的算法。

重点:由于Bagging仅使用了63.2%的训练集数据,那么剩下的36.8%的数据可以作为验证集进行对训练出来的学习器的泛化性能进行包外估计。

Bagging主要关注的是降低方差,因此在不剪枝决策树、神经网络等容易受到样本扰动的学习器中效用更为明显。

8.3.2 随机森林RF

其是Bagging的一个扩展变体。RF在决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。在RF中和普通的决策树中选择一个最优的划分属性之后,作为决策树的结点不同的是,在RF中首先随机选择一个包含了k个属性的集合,然后在从这个子集中选择一个最优属性用于划分。这里的参数k控制了随机性的引入程度,如果假设k = d,这里的d是每个结点的属性个数。那么此时的RF就和普通的基本的决策树相同。如果k = 1,便是随机选择一个属性进行划分。

一般情况下,k = log 2 d。

Bagging选择的是决策树中的每一个属性的考察,使用的是确定型的决策树;

但是RF不一样,是使用的属性集合中的一个小属性集进行划分。

8.4 结合策略

将基学习器进行结合可以从三个方面带来一定的好处:

  1. 由于学习任务的假设空间很大,可能有多个假设在训练集上达到同等的性能,此时若使用单学习器可能因误差而导致泛化性能的不佳,结合多个学习器则会减少风险。
  2. 可以降低陷入极小点的风险。
  3. 可能某些学习任务的假设不在当前学习算法所考虑的空间中,此时若使用单学习器那么肯定无效,所以可以通过结合多个学习器,增大相应的假设空间,那么有可能学得更好的近似。

几种结合的常用策略:

8.4.1 平均法

简单平均法、加权平均法、其中,加权平均法可以作为是集成学习的基本方法,所有的集成学习方法都可以看作是通过学习改变加权平均法中的权值。

一般来说,在个体学习器性能相差较大时,宜使用加权平均法,但是在个体学习器性能相近的时候适合使用简单平均法。

8.4.2 投票法

绝对多数投票法、相对多数投票法、加权投票法。

不同类型的个体学习器可能产生不同类型的hij(x)值,常见的有类标记,类概率。

不同类型的hij(x)值不能混用。

对于产生不同的类别的类概率的情况,应当先将类概率转换为对应类标记,然后使用投票法进行区分。

8.4.3 学习法

通过另外一个学习器进行结合。

Stacking是一个典型的代表。这里将个体学习器称为初级学习器,用于结合的学习器称为次级学习器和元学习器。

首先该算法先从初始数据集中训练出一个初级学习器,然后生成一个新的数据集用于训练次级学习器。在新学习器中初级学习器的输出被作为次级学习器的输入特征,而初始样本的标记仍被当作样例标记。

训练阶段,次级训练集是利用初级学习器产生的,若直接使用初级学习器的训练集来产生次级训练集,那么过拟合的风险比较大;所以使用交叉验证法或留一法,将初级学习器未使用的样本来产生次级学习器的训练样本。

即,对于k折交叉验证来说,对Dj 和Dj ^ 来说,前者作为验证集而后者训练集。给定T个学习算法之后,每一个学习器ht j是在Dj ^ 上以每个t个学习算法获得。那么对Dj中的每一个样本xi来说,将其作为输入,输入到训练的学习器中,然后将每一个学习器获得结果作为次级学习器的输入,同时将每一个xi对应的原来的样本标记仍然作为现在zi(产生的新样本特征属性)的样本标记。此时就形成了一个新的样本集,(zi,yi),然后将该新的样本集合作为次级学习器的输入。

自己的理解:也就是说对初始训练集来说,将其分为k个集合,然后使用其中的k-1个作为训练集,对t个学习算法中的每一个使用该训练集进行训练,得到对应的第t个学习器,然后使用此时的交叉验证集对获得的学习器进行预测,将产生的结果作为次级训练集中的输入样例的示例部分。也就是说对t个学习算法来说,k折的每一次训练过程中这t个学习算法都参与,并都获得对应的第t个学习器,且都获得对应第t个学习器的对应于本次验证集的输出结果并将该结果作为次级学习器的样本示例(也就是作为次级学习器后来的输入),同时将本来验证集中的对应的yi预测值仍然作为新样本示例的结果。

8.5 多样性

8.5.1 误差-分歧分解

集成分歧中的分歧项表征了个体学习器在样本x上的不一致性。一定程度上反映了个体学习器之间的多样性。

先得到所有的个体学习器的误差,然后获得个体学习器的加权误差均值。然后,以p(x)为样本的概率密度,进而可以获得在全样本上的泛化误差和分歧项。那么就得到了集成的泛化误差。

根据上述过程就可以得到:E = E^ - A^:(这里的^表示在字母上方加上-)。

上述的分析叫做误差-分歧分解。

上述的E^表示:个体学习器泛化误差的加权均值;

上述的A^表示:个体学习器的加权分歧值。

A^不是一个可直接操作的多样性度量,仅在集成之后才可以实现估计。上述的推导过程只适用于回归学习。

8.5.2 多样性度量

多样性度量是用于度量集成中个体分类器的多样性,即估算个体学习器多样性程度。

具体的做法是考虑个体学习器的两两之间的相似性和不相似性。

常见的多样性度量:不合度量、相关系数、Q-统计量、k-统计量。

对于k-误差图来说,当平均误差大于越高那么表示集成学习器的准确性越低;当图中的点云的位置越靠右,那么个体学习器的多样性越小。

8.5.3 多样性增强

常用的做法:

  1. 数据样本扰动。基于采样法常常,不稳定基学习器:神经网络、决策树等;稳定的基学习器:支持向量机、朴素贝叶斯、k近邻学习器等。对上述稳定基学习器进行集成往往需要使用输入属性扰动等其他机制。
  2. 输入属性扰动。随机子空间算法依赖于输入属性扰动。该算法从属性集合中选择出来多个子集,然后使用各个子集训练多个学习器。对于属性很少的样本集来说不宜使用输入属性扰动。
  3. 输出表示扰动。例如:翻转法等。也可以对输出表示进行转化。如:输出调制法。ECOC法是将多分类任务拆解为多个二分类任务并训练多个基学习器。
  4. 算法参数扰动。通过随机设置不同的参数,会导致生成的模型具有较大的不同。如:负相关法显式地通过正则化项来强制个体神经网络使用不同的参数。

MultiBoosting方法将Boosting和Bagging算法进行结合。

常见的个体学习器之间的结合方法还有:基于D-S证据理论的方法、动态分类器选择、混合专家等。

在集成之后再试图使用去除一些个体学习器来获得较小的集成,称为集成修剪。

使用集成修剪有利于进行减小模型的存储开销和预测时间开销。

集成仍然是黑箱模型。

以上是关于第8章-集成学习项目实战记录的主要内容,如果未能解决你的问题,请参考以下文章

第31章 项目实战-PC端固定布局9

极富参考价值!第1章 ClickHouse 简介《ClickHouse 企业级大数据分析引擎实战》...

机器学习实战 - ApacheCN

实战Java秒杀系统方案优化 高性能高并发实战

第32 章项目实战-移动端流体布局3

第32 章项目实战-移动端流体布局4