机器学习笔记17——集成学习(ensemble learning)简介

在这里插入图片描述

1、概述

\quad \quad 集成学习通过构建并结合多个学习器(称为基学习器)来完成学习任务,有时也被称为多学习器系统、基于委员会的学习等。集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能。

\quad \quad 集成学习是一大类模型融合策略和方法的统称,其中包含多种集成学习的思想。不仅在学界的研究热度不减,在业界和众多学习竞赛中也有非常成功的应用。例如在Kaggle竞赛中所向披靡的XGBoost,就是成功应用集成学习思想的一个例子。另外,集成学习(Ensemble learning)可以用于分类问题集成,回归问题集成,特征选取集成,异常点检测集成等等。

2、基本步骤

\quad \quad 对于训练集数据,我们通过训练若干个个体学习器(基学习器),通过一定的结合策略,就可以最终形成一个强学习器,以达到博采众长的目的。因此,集成学习主要有以下两个问题

Q1:如何获得若干个个体学习器?
Q2:采用什么样的结合策略?

\quad \quad 集成学习一般可以分为以下3个步骤:

(1)找到误差互相独立的基学习器。
(2)训练基学习器。
(3)合并基学习器的结果。

2.1 基学习器

这里也涉及到三个问题
(1)选择什么算法训练个体学习器?
\quad \quad 通常选择一个现有的学习算法训练产生个体学习器,例如决策树、神经网络

(2)不同的基学习器用同样的算法吗?
\quad \quad 可以用相同的算法,这样的集成是“同质”的,我们可以管“同质”的集成里的个体学习器叫基学习器;也可以用不同的算法,这样的集成是“异质”的,我们可以管“异质”的集成里的个体学习器叫组件学习器

  • 1、同质学习器(常用)
    比如都是决策树个体学习器,或者都是神经网络个体学习器。

    • 强依赖同质学习器
      个体学习器之间存在强依赖关系,一系列个体学习器基本都需要串行生成,代表算法是boosting系列算法,Boosting主要关注降低偏差,因此Boosting能基于泛化性能相当弱的学习器构建出很强的集成;

    • 无依赖同质学习器
      个体学习器之间不存在强依赖关系,一系列个体学习器可以并行生成,代表算法是bagging和随机森林系列算法,Bagging主要关注降低方差,因此它在不剪枝的决策树、神经网络等学习器上效用更为明显。

  • 2、异质学习器
    比如我们有一个分类问题,对训练集采用支持向量机个体学习器,逻辑回归个体学习器和朴素贝叶斯个体学习器来学习,再通过某种结合策略来确定最终的分类强学习器。

(3)什么样的个体学习器更好?
\quad \quad 个体学习器必须有一定的“准确性”;一定的“多样性”,简单的说就是“好而不同”。

\quad \quad 最常用的基分类器是决策树,主要有以下3方面的原因:
(1)决策树可以较为方便地将样本的权重整合到训练样本中,而不需要使用采样的方法来调整样本权重。

(2)决策树的表达能力和泛化能力,可以通过调节树的层数来做折中。

(3)数据样本的扰动对于决策树的影响较大,因此不同子样本集合生成的决策树基分类器随机性较大,这样的"不稳定学习器“更适合作为基分类器。此外,在决策树节点分裂的时候,随机地选择一个特征子集,从中找出最优分裂属性,很好地引入了随机性。

\quad \quad 除了决策树外,神经网络模型也适合作为基分类器,主要由于神经网络模型也比较”不稳定“,而且还可以通过调整神经元数量、连接方式、网络层数、初始权重等方式引入随机性。

2.2 合并基学习器策略

\quad \quad 对于基分类器最终的结合策略常见的方法有如下几种:

  1. 平均法
    对于数值型输出,最常见的结合策略即为平均法:

    • )简单平均法
    • )加权平均法
  2. 投票法:类别标记输出
    对于分类任务来说,学习器将从类别集合中预测出一个标记,最常见的结合策略是投票法。

    • )绝对多数投票法
      预测为得票超过半数的标记,如果没有就拒绝预测
    • )相对多数投票法
      预测为得票最多的标记,若同时有多个标记获最高票,则从中随机选取一个。即我们常说的少数服从多数。
    • )加权投票法
      每个弱学习器的票数乘以一个权重,预测为加权后的票数最多的标记
  3. 学习法
    \quad \quad 当训练数据很多时,一种更为强大的结合策略是是使用学习法,即通过另一个学习器来对所有基学习器产生结果的结合方法进行学习,这时候个体学习器称为初级学习器,用于结合的学习器成为次级学习器或元学习器。

\quad \quad 对于学习法,代表方法是stacking,当使用stacking的结合策略时, 我们不是对弱学习器的结果做简单的逻辑处理,而是再加上一层学习器,也就是说,我们将训练集弱学习器的学习结果作为输入,将训练集的输出作为输出,重新训练一个学习器来得到最终结果。

3、集成学习算法

\quad \quad 根据个体学习器的生成方式,目前的集成学习方法大致可以分为两大类,即个体学习器间存在强依赖关系必须串行生成的序列化方法,以及个体学习器间不存在强依赖关系可同时生成的并行化方法;前者的代表是Boosting,后者的代表是Bagging和随机森林。

\quad \quad 集成学习是一个大家族,学习的方式有Boosting,Bagging等,每个家族分别有很多不同的实现,他们的不同主要在于生成学习器方式。

3.1 Boosting

\quad \quad Boosting方法训练基学习器时采用串行的方式,各个基学习器之间有依赖。

学习机制:

在这里插入图片描述

  • 先从初始训练集训练出一个基学习器;
  • 再根据基学习器的表现对训练样本分布进行调整(数据加权),使得先前基学习器做错的训练样本在后续受到更多关注;
  • 然后基于调整后的样本分布来训练下一个基学习器;
  • 重复进行上述步骤,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。

Q1:如何计算第k个弱分类器在训练集上的学习误差率 e k e_k ek

Q2:如何由学习误差率 e k e_k ek 更新第k个弱分类器的权重系数 α k α_k αk

Q3:如何更新训练集上的样本权重D

Q4:使用何种结合策略

原理:

\quad \quad Boosting,是集成学习算法的一种,核心思想就是:1)基学习器之间存在强依赖关系,每一个基分类器是在前一个基分类器的基础之上生成;2)将所有基学习器结果进行线性加权求和,作为最终结果输出。所以boosting算法,是一个加法模型,再对加法模型进行优化。

\quad \quad 总的来说,提升方法使用加法模型和前向分步算法。

3.1.1 加法模型

f ( x ) = ∑ m = 1 M β m b ( x ; γ m ) (1.1) f\left(x\right)=\sum_{m=1}^M\beta_m b\left(x;\gamma_m\right) \tag{1.1} f(x)=m=1Mβmb(x;γm)(1.1)
其中, b ( x ; γ m ) b\left(x;\gamma_m\right) b(x;γm)为基函数, γ m \gamma_m γm为基函数的参数, β m \beta_m βm为基函数的系数。

  在给定训练数据 { ( x i , y i ) } i = 1 N \{\left(x_i,y_i\right)\}_{i=1}^N {(xi,yi)}i=1N及损失函数 L ( y , f ( x ) ) L\left(y,f\left(x\right)\right) L(y,f(x))的条件下,学习加法模型 f ( x ) f\left(x\right) f(x)成为经验风险极小化问题:
min ⁡ β m , γ m ∑ i = 1 N L ( y i , ∑ m = 1 M β m b ( x i ; γ m ) ) (1.2) \min_{\beta_m,\gamma_m}\sum_{i=1}^N L\left(y_i,\sum_{m=1}^M\beta_m b\left(x_i;\gamma_m\right)\right)\tag{1.2} βm,γmmini=1NL(yi,m=1Mβmb(xi;γm))(1.2)

  前向分步算法求解这一优化问题的思路:因为学习的是加法模型,可以从前向后,每一步只学习一个基函数及其系数,逐步逼近优化目标函数式(1.2),则可以简化优化复杂度。具体地,每步只需优化如下损失函数:
min ⁡ β , γ ∑ i = 1 N L ( y i , β b ( x i ; γ ) ) (1.3) \min_{\beta,\gamma}\sum_{i=1}^N L\left(y_i,\beta b\left(x_i;\gamma\right)\right)\tag{1.3} β,γmini=1NL(yi,βb(xi;γ))(1.3)

3.1.2 前向分布算法

是专门针对加法模型的优化方法。

算法1.1 前向分步算法
输入:训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) } T=\{\left(x_1,y_1\right),\left(x_2,y_2\right),\dots,\left(x_N,y_N\right)\} T={(x1,y1),(x2,y2),,(xN,yN)}; 损失函数 L ( y , f ( x ) ) L\left(y,f\left(x\right)\right) L(y,f(x));基函数集合 { b ( x ; γ ) } \{b\left(x;\gamma\right)\} {b(x;γ)}
输出:加法模型 f ( x ) f\left(x\right) f(x)
(1)初始化 f 0 ( x ) = 0 f_0\left(x\right)=0 f0(x)=0
(2)对 m = 1 , 2 , … , M m=1,2,\dots,M m=1,2,,M
(a)极小化损失函数
( β m , γ m ) = arg ⁡ min ⁡ β , γ ∑ i = 1 N L ( y i , f m − 1 ( x i ) + β b ( x i ; γ ) ) (1.4) \left(\beta_m,\gamma_m\right)=\mathop{\arg\min}_{\beta,\gamma} \sum_{i=1}^N L\left(y_i, f_{m-1}\left(x_i\right)+\beta b\left(x_i;\gamma\right)\right) \tag{1.4} (βm,γm)=argminβ,γi=1NL(yi,fm1(xi)+βb(xi;γ))(1.4)
得到参数 β m \beta_m βm γ m \gamma_m γm
(b)更新
f m ( x ) = f m − 1 ( x ) + β m b ( x ; γ m ) (1.5) f_m\left(x\right)=f_{m-1}\left(x\right)+\beta_m b\left(x;\gamma_m\right) \tag{1.5} fm(x)=fm1(x)+βmb(x;γm)(1.5)
(3)得到加法模型
f ( x ) = f M ( x ) = ∑ m = 1 M β m b ( x ; γ m ) (1.6) f\left(x\right)=f_M\left(x\right)=\sum_{m=1}^M\beta_m b\left(x;\gamma_m\right) \tag{1.6} f(x)=fM(x)=m=1Mβmb(x;γm)(1.6)

  前向分步算法将同时求解从 m = 1 m=1 m=1 M M M所有参数 β m , γ m \beta_m,\gamma_m βm,γm的优化问题简化为逐次求解各个 β m , γ m \beta_m, \gamma_m βm,γm的优化问题。

3.1.3 系列算法

在这里插入图片描述

3.1.3.1 AdaBoost 算法

见本文

3.1.3.2 BDT 算法

见此文

3.1.3.3 GBDT 算法

见本文

3.1.3.4 XGBoost算法

见此文

总结:
\quad \quad Boosting是一族可将弱学习器提升为强学习器的算法。Boosting算法是对特点的数据分布进行学习,可以通过“重赋值法”或者“重采样法”来处理。Boosting算法关注降低偏差,可以基于泛化能力相当弱的学习器构建出很强的集成

3.2 Bagging算法

\quad \quad Bagging与Boosting的串行训练不同,Bagging方法在训练过程中,各基学习器之间无强依赖,可以进行并行训练。

学习机制:

在这里插入图片描述
基本流程:

\quad \quad 对原始数据自助采样,产生T个不同的子集,分别学习生成T个基学习器,再将这些基学习器结合。在对预测输出进行结合时,Bagging通常对分类任务使用简单投票法,对回归任务使用简单平均法。

  • 自助采样法(Bootstrap sampling),即对于m个样本的原始训练集,我们每次先随机采集一个样本放入采样集,接着把该样本放回,也就是说下次采样时该样本仍有可能被采集到,这样采集m次,最终可以得到m个样本的采样集,初始训练集中有的样本在采样集里多次出现,有的则从未出现【初始训练集中约有63.2%的样本出现在采样集里】。由于是随机采样,这样每次的采样集是和原始训练集不同的,和其他采样集也是不同的,这样得到多个不同的弱学习器。

算法的伪代码如下:

在这里插入图片描述
\quad \quad 从偏差-方差分解的角度看,降低一个估计的方差的方式是把多个估计平均起来,所以Bagging主要关注降低方差,因此它在不剪枝决策树、神经网络等易受样本扰动的学习器上效用更为明显。同时,Bagging并不能减小模型的偏差,所以应尽量选择偏差较小的基分类器,如未剪枝的决策树。

特点:

  • 1)样本选择上:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
  • 2)样例权重:使用均匀取样,每个样例的权重相等
  • 3)预测函数:所有预测函数的权重相等。
  • 4)并行计算:各个预测函数可以并行生成,他们是相互独立的。
  • 5)Bagging对样本重采样,对每一重采样得到的子样本集训练一个模型,最后取平均。
  • 6)Bagging算法主要关注降低方差,从而降低过拟合,但不会降低偏差,因此最好不要用高偏差的模型。
  • 7)与标准AdaBoost只适用于二分类任务不同,Bagging能不经修改地用于多分类、回归等任务。

3.2.1 常见算法

\quad \quad 基于决策树基分类器的随机森林(Random Forest,简称RF)

参考资料:
1、《西瓜书》
2、https://www.cnblogs.com/pinard/p/6131423.html

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值