机器学习十大算法——集成方法


机器学习十大算法——集成方法

什么是集成方法

集成方法是先构建一组分类器,然后用各个分类器带权重的投票来预测新数据的算法。最初的集成方法是贝叶斯平均,但最新的算法包括误差纠正输出编码和提升算法。

​​​​在这里插入图片描述

那么集成模型的原理是什么,以及它为什么比独立模型的效果好呢?

它们消除了偏置的影响:比如把民主党的问卷和共和党的问卷混合,从中得到的将是一个不伦不类的偏中立的信息。

它们能减小预测的方差:多个模型聚合后的预测结果比单一模型的预测结果更稳定。在金融界,这被称为是多样化 —— 多个股票的混合产品波动总是远小於单个股票的波动。这也解释了为何增加训练数据,模型的效果会变得更好。

它们不容易产生过拟合:如果单个模型不会产生过拟合,那么将每个模型的预测结果简单地组合(取均值、加权平均、逻辑回归),没有理由产生过拟合。

集成学习(ensemble learning)更多的是一种组合策略,将多个机器学习模型结合起来,可以称为元算法(meta-algorithm)。

面对一个机器学习问题,通常有两种策略,一种是研发人员尝试各种模型,选择其中表现最好的模型做重点调参优化。这种策略类似于奥运会比赛,通过强强竞争来选拔最优的运动员,并逐步提高成绩。另一种重要的策略是集各家之长,如同贤明的君主广泛的听取众多谋臣的建议,然后综合考虑,得到最终决策。后一种策略的核心,是将多个分类器的结果集成为一个统一的决策。使用这类策略的机器学习方法统称为集成学习。其中的每个单独的分类器称为基分类器。

集成学习可以大致分为两类:

Boosting:这类方法训练基分类器时采用串行的方法,各个基分类器之间有依赖。它的基本思路是将基分类器层层叠加,每一层在训练的时候,对前一层基分类器分错的样本,给予更高的权重。测试时,根据各层分类器的结果的加权得到最终结果。
Bagging:这类方法基分类器之间无强依赖,可以并行。其中很著名的算法之一是基于决策树基分类器的随机森林(Random Forest)。为了让基分类器之间互相独立,将训练集分为若干子集(当训练样本数量较少时,子集之间可能有交叠)。

基分类器有时又称为弱分类器,因为基分类器的错误率要大于集成后的分类器。基分类器的错误,是偏差(Bias)和方差(Variance)两种错误之和。偏差主要是由于分类器的表达能力有限导致的系统性错误,表现在训练误差不能收敛到一个比较小的值。方差则是由于分类器对于样本分布过于敏感,导致在训练样本数较少时,产生过拟合。

Boosting方法通过逐步聚焦于基分类器分错的样本,减小集成分类器的偏差。Bagging方法则是采取分而治之的策略,通过对训练样本多次采样,并分别训练出多个不同模型,然后做综合,来减小集成分类器的方差。假设每个基分类器出错的概率都是相互独立的,在某个测试样本上,用简单多数的投票方法来集成结果,超过半数基分类器都出错的概率会小于每个单独的基分类器的出错概率。一个Bagging的简单示例如下图:
在这里插入图片描述

Boosting

Boosting 是一族可将弱学习器提升为强学习器的算法.这族算法的工作机制类似:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器数目达到事先指定的值T , 最终将这T 个基学习器进行加权结合.

Boosting算法的典型代表就是Adaboost算法,下图是Adaboost算法步骤。

在这里插入图片描述
Boosting 算法要求基学习器能对特定的数据分布进行学习,这可通过"重赋权法" (re-weighting)实施,即在训练过程的每一轮中,根据样本分布为每个训练样本重新赋予一个权重.对无法接受带权样本的基学习算法,则可通过"重采样法" (re-sampling)来处理,即在每一轮学习中,根据样本分布对训练集重新进行采样,再用重采样而得的样本集对基学习器进行训练.

Bagging

Bagging [Breiman, 1996a] 是并行式集成学习方法最著名的代表.从名字即可看出,它直接基于自助采样法(bootstrap sampling)。给定包含m 个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中,这样,经过m次随机采样操作,我们得到含m 个样本的采样集,初始训练集中有的样本在采样集里多次出现,有的则从未出现。初始训练集中约有63.2%的样本出现在来样集中。

在这里插入图片描述
与标准AdaBoost 只适用于二分类任务不间, Bagging 能不经修改地用于多分类、回归等任务.

随机森林

随机森林(Random Forest ,简称RF) 是Bagging的一个扩展变体.RF在以决策树为基学习器构建Bagging 集成的基础上,进一步在决策树的训练过程中引入了随机属性选择.具体来说,传统决策树在选择划分属性时是在当前结点的属性集合(假定有d 个属性)中选择一个最优属性;而在RF 中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。

随机森林简单、容易实现、计算开销小,令人惊奇的是, 它在很多现实任务中展现出强大的性能,被誉为"代表集成学习技术水平的方法"可以看出,随机森林对Bagging 只做了小改动, 但与Bagging 中基学习器的"多样性"仅通过样本扰动(通过对初始训练集采样)而来不同,随机森林中基学习器的多样性不仅来自样本扰动,还来自属性扰动,这就使得最终集成的泛化性能可通过个体学习器之间差异度的增加而进一步提升.

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

集成方法的结合策略

平均法

平均法又分为简单平均法和加权平均法。

简单平均法就是求均值。

加权平均法的权重一般是从训练数据中学习而得,现实任务中的训练样本通常不充分或存在噪声,这将使得学出的权重不完全可靠.尤其是对规模比较大的集成来说,要学习的权重比较多,较容易导致过拟合.因此,实验和应用均显示出,加权平均法未必一起优于简单平均法。一般而言,在个体学习器性能相差较大时宜使用加权平均
法,而在个体学习器性能相近时宜使用简单平均法。

投票法

投票法常用的有 绝对多数投票法,相对多数投票法和 加权投票法。

在不允许拒绝预测的任务中,绝对多数、相对多数投票法统称为"多数投票法"

学习法

当训练数据很多时,一种更为强大的结合策略是使用"学习法",即通过Stacking 本身是一种著另一个学习器来进行结合. Stacking 是学习法的典型代表.这里我们把个体学习器称为初级学习器,用于结合的学习器称为次级学习器或元学习器(meta-learner)。

stacking算法描述如下:
在这里插入图片描述

在训练阶段,次级训练集是利用初级学习器产生的,若直接用初级学习器的训练集来产生次级训练集,则过拟合风险会比较大;因此,一般是通过使用交叉验证或留一法这样的方式,用训练初级学习器未使用的样本来产生次级学习器的训练样本.

次级学习器的输入属性表示和次级学习算法对Stacking 集成的泛化性能有很大影响.有研究表明,将初级学习器的输出类概率作为次级学习器的输入属性,用多响应线性回归(Multi-response Linear Regression,简称MLR) 作为次级学习算法效果较好,在MLR 中使用不同的属性集更佳。

贝叶斯模型平均(Bayes Model Averaging,简称BMA)基于后验概率来为不同模型赋予权重7 可视为加权平均法的一种特殊实现. 对Stacking 和BMA 进行了比较.理论上来说?若数据生成模型怡在当前考虑的模型中,且数据噪声很少,则BMA 不差于Stacking; 然而,在现实应用中无法确保数据生成模型一定在当前考虑的模型中,甚至可能难以用当前考虑的模型来进行近似,因此, Stacking 通常优于BMA,因为其鲁棒性比BMA 更好,而且BMA 对模型近似误差非常敏感。

集成放法的多样性

误差-分歧分解

个体学习器准确性越高、多样性越大,则集成越好.上面这个分析首先由[Krogh and Vedelsby, 1995] 给出,称为"误差一分歧分解" (error-ambiguity decomposition).

多样性度量

多样性度量(diversity measure)是用于度量集成中个体分类器的多样性,即估算个体学习器的多样化程度.典型做法是考虑个体分类器的两两相似/不相似性.

在这里插入图片描述
不合度量 = (b+c)/m, 值越大,则多样性越大

在这里插入图片描述

在这里插入图片描述

多样性增强

常见做法主要是对数据样本、输入属性、输出表示、算法参数进行扰动。

集成学习有哪些基本步骤?

集成学习一般可分为以下三个步骤:

  1. 找到误差互相独立的基分类器;
  2. 训练基分类器;
  3. 合并基分类器的结果。

合并基分类器的方法有voting和stacking两种。前者是用投票的方式,将获得最多选票的结果作为最终的结果。后者是用串行的方式,把前一个基分类器的结果输出到下一个分类器,将所有基分类器的输出结果相加作为最终的输出。

以Adaboost为例,它基分类器的训练和合并的基本步骤如下:
在这里插入图片描述

合并基分类器

在这里插入图片描述

另一个例子是GBDT(Gradient Boosted Decision Tree):

GBDT的基本思想是,每一棵树学的是之前所有树结论和的残差,这个残差就是一个加预测值后能得真实值的累加量。

我们以一个视频网站的用户为例,为了将广告匹配到指定年龄性别的用户,视频网站需要对每个用户的性别/年龄做出预测。在这个问题中,每个样本是一个已知性别/年龄的用户,而特征则包括这个人访问的时长、时段、观看的视频的类型等。

例如用户A的真实年龄是25岁,但第一棵决策树的预测年龄是22岁,差了3岁,即残差为3。那么在第二棵树里我们把A的年龄设为3岁去学习,如果第二棵树能把A分到3岁的叶子节点,那两棵树的结果相加就可以得到A的真实年龄;如果第二棵树的结论是5岁,则A仍然存在-2岁的残差,第三棵树里A的年龄就变成-2岁,继续学。这里使用残差继续学习,就是Gradient Boosting的意义。

集成方法常用的基分类器是什么?

常用的基分类器是什么?可否将随机森林中的基分类器,由决策树替换为线性分类器或K-近邻?请解释为什么?

最常用的基分类器是决策树,这是因为:

  1. 决策树可以较为方便的将样本的权重整合到训练过程中,而不需要使用过采样的方法来调整样本权重。
  2. 决策树的表达能力和泛化能力,可以通过调节树的层数来做折中。

随机森林属于Bagging类的集成学习。Bagging的主要好处是集成后的分类器的方差,比基分类器的方差小。Bagging所采用的基分类器,最好是本身对样本分布较为敏感的(即所谓unstable分类器)。这样Bagging才能有用武之地。线性分类器或者K-近邻都是较为稳定的分类器,本身方差就不大,所以以它们为基分类器使用Bagging并不能在原有基分类器的基础上,获得更好的表现。甚至可能因为Bagging的采样,而导致他们在训练中更难收敛,而增大了集成分类器的偏差。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章