前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习|集成学习(简介)

机器学习|集成学习(简介)

作者头像
数据山谷
发布2020-07-21 15:09:27
1.1K0
发布2020-07-21 15:09:27
举报
文章被收录于专栏:数据山谷

接下来几周的时间,我们将会推出关于《西瓜书》读书笔记的连载文章,updating~

01

集成学习简介

集成学习通过构建并结合多个学习器来完成学习任务,有时也被称为多分类器系统。集成学习的结构示意图如下所示:

如图所示我们把多个“个体学习器“通过某种策略组合在一起来执行学习任务,当我们的“个体学习器”都是同类的时候(比如:决策树、神经网络)我们可以说这个集成是“同质的”,此时的个体学习器我们通常叫做“基学习器”;反之如果“个体学习器”是多种类型的学习器,我们可以说这个集成是“异质的”,此时的个体学习器我们通常叫做“组件学习器”。

集成学习通过将多个学习器进行组合,常常可以获得比单一学习器显著优越的泛化性能,这对“弱学习器(泛化能力略优于随机猜测的学习器)”尤为明显,因此集成学习的很多理论研究都是针对弱学习器进行的,而基学习器有时也被直接称为弱学习器。

对于集成学习我们通常要关注两个重要的概念:准确性多样性

准确性:个体学习器不能太差,要有一定的准确度。

多样性:个体学习器之间的输出要具有差异性。

下图举例说明了不同准确性和多样性的集成模型的结果(最终的集成结果通过投票法产生,即“少数服从多数”):

图(a):准确度高、差异度高

图(b):准确度高、差异度低

图(c):准确度低、差异度高

02

Boosting

Boosting 是一种可以将弱学习器提升为强学习器的算法。这是一种串行的思想,序列化进行。基本思想是:增加前一个基学习器预测错误的样本的权值,使得后续的基学习器更加关注于这些打错标注的样本,尽可能的纠正这些错误。直到训练出了T个基学习器,最终将这T个基学习器进行加权结合。

Boosting的结构图如下所示:

注:本文中我们只做一个概念性的介绍,后续再仔细的去讲解相关的Boosting算法。

03

Bagging

Bagging是一种并行的集成学习方法,基学习器的训练没有先后顺序,同时进行。Bagging 采用“有放回”采样,对于包含m 个样本的训练集,进行m次有放回的随机采样操作,从而得到m个样本的采样集,按照这样的方式重复进行,我们就可以得到 T 个包含m个样本的训练集,训练出来T个基学习器,然后对这些基学习器的输出进行结合。

Bagging的结构图如下所示:

注:本文中我们只做一个概念性的介绍,后续再仔细的去讲解相关的Bagging算法。

04

随机森林(RF)

RF是Bagging的一个变体。它的基学习器固定是决策树,所以多棵树就叫做森林。而“随机” 体现在属性选择的随机性上。

RF 在训练基学习器时候,也采用了自助取样法增加样本扰动;除此之外,RF还引入了一种属性扰动:对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含K个属性的子集,然后在子集中选取一个最优的属性用于该结点的划分。而这里的参数K控制了随机性的程度,令k=d,则就是传统的决策树;令k=1,就是随机选择一个属性用于结点划分。一般情况下,推荐的K值是 k=log2d。

与Bagging相比,RF由于随机属性引入的多样性,使得其在多样性上有了进一步提升。相比于 Bagging,由于属性扰动的加入,其初始泛化性能较差(基决策树的准确度有一定的下降),但是随着集成数目的增多,其往往可以收敛到更低的泛化误差。同时 RF,由于属性选择,训练效率更高。

随机森林的结构图如下所示:

注:本文中我们只做一个概念性的介绍,后续再仔细的去讲解随机森林算法。

05

结合策略

理论上来看,学习器结合会带来3个方面的好处,如下图所示:

  • 统计方面:从统计学角度来说,多个假设在训练集上可能达到相同性能。此时单个学习器只能选择其中部分假设,难以提高泛化性能。
  • 计算方面:从求解的角度来说,学习器算法往往会陷入局部最优解。多个学习器的结合有助于降低陷入局部最优解风险,从而提高整体的泛化性能。
  • 表示方面:从表示方面来说,某些学习任务的真实假设是不在当前的假设空间中的。所以多个学习器结合有助于扩大假设区间,可能学得更好的近似

再让我们来看一下结合策略都分为哪几种。

平均法

投票法

学习法

学习法是一种更加高级的结合策略,即学习出一种“投票”的学习器,Stacking 是学习法的一种典型代表。Stacking 的基本思想是:首先训练出T个基学习器,对每一个样本,用这T个基学习器产生T个输出。将这些输出和该样本的真实标记作为新的样本,这样就有了 m*T 的样本集,用这个样本集训练出一个新的“投票”学习器。而这个“投票学习器”的输入属性学习算法,对最终投票学习器的泛化性能影响很大。当投票学习器采用类概率作为输入属性,选用更多响应线性回归(MLR)一般会产生较好的效果。

  • Stacking

训练好的所有基模型对训练集进行预测,第j个基模型对第i个训练样本的预测值将作为新的训练集中第i个样本的第j个特征值,最后基于新的训练集进行训练。同理,预测的过程也要先经过所有基模型的预测形成新的测试集,最后再对测试集进行预测,Stacking的流程图如下所示:

注:本文中我们只做一个概念性的介绍,后续再仔细的去讲解Stacking学习法。

06

多样性

多样性度量

多样性增强

正如我们其那面所说,我们集成学习就是要做“好而不同”的基学习器的整合。这其中,基学习器之间的多样性,则成为影响集成学习器泛化性能的重要因素。一般我们要在学习过程中引入随机性,常做法主要是对数据样本、输入属性、输入表示、算法参数进行扰动:

  • 数据样本扰动:即利用具有差异的数据集来训练不同的基学习器。我们之前讲过的Bagging就是通过自主采样来加入数据样本扰动。但是需要注意的是,这种做法只能对于不稳定的基学习器起作用,即样本的改变会使得学习器的性能产生较大的变化,如神经网络和决策树等。
  • 输入属性扰动:即随机选取原属性空间的一个子空间来训练不同的基学习器。我们之前讲过的Random Forest就是通过输入属性扰动来获得比 Bagging 更加好的泛化性能的。但是,如果训练集中的属性维度少,用这种方法会使得单个基学习器的性能大大下降,最终集成学习器的泛化性能不一定有提升。
  • 输出表示扰动:对训练样本的类标记稍作变动;也可以对输出表示进行转化。
  • 算法参数扰动:随机设置不同的参数。如:神经网络中,随机初始化权重与随机设置隐含层节点数。

总的来说集成学习不是一种特定的算法,而是一种通用的框架。是教我们怎么用基础学习器来得到泛化性能大大提高的集成学习器。这是一种非常重要的思想。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据山谷 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档