集成学习

1. 概述

集成学习, Ensemble Learning. 通过多个学习器来完成学习任务.
图1-1 显示出集成学习的一般结构: 先产生一组个体学习器, 再用某种策略把它们结合起来.
这里写图片描述
图1-1 集成学习示意图

集成学习通过对多个学习器进行结合, 常可获得比单一学习器优越的泛化性能.

集成学习方法大致可分为:

  • 串行化生成基学习器
    • AdaBoost
    • 提升树
  • 并行化生成基学习器
    • Bagging
    • 随机森林

2. Boosting

wikipedia:Boosting_(machine_learning)

Boosting是一类机器学习算法, 思想是通过迭代训练出一组基学习器, 再加以组合.
常用的有AdaBoost与提升树.

2.1 AdaBoost算法

大致过程见下.

  1. 先从初始训练集训练出一个基学习器.
  2. 根据基学习器的表现对训练样本分布进行调整, 使得先前基学习器做错的训练样本在后续受到更多关注. 然后基于此调整后的样本分布来训练下一个基学习器.
  3. 将第(2)步重复T次, 最终将这T个基学习器进行加权结合.

约定符号:

m=1,2, … , M, 为迭代的轮次.
Dm=(wmi,...,wmn) D m = ( w m i , . . . , w m n ) , 记为第k轮样本的权值分布. 相应地 wmi w m i 表示第i个样本在第m轮的权重.
Gm(x) G m ( x ) 为第m次迭代学习到的基学习器.
em e m Gm(x) G m ( x ) 在训练集上的表现误差.
αm α m 为Gm的系数.

算法流程见下:

  1. 根据特定的学习算法, 由 Dm D m 学得 Gm(x) G m ( x )
  2. 根据特定的损失函数, 计算 em e m
  3. 计算
    αm=12log1emem(2.1-1) (2.1-1) α m = 1 2 log ⁡ 1 − e m e m
  4. 计算下一轮的样本分布权值 Dm+1 D m + 1
    wm+1,i=wm,iZmexp(αmyiGm(xi))Zm=i=1Nwm,iexp(αmyiGm(xi)) w m + 1 , i = w m , i Z m exp ⁡ ( − α m y i G m ( x i ) ) Z m = ∑ i = 1 N w m , i exp ⁡ ( − α m y i G m ( x i ) )
  5. 重复步骤 1-4, 得到最终的弱分类器的线性组合
    f(x)=m=1MαmGm(x) f ( x ) = ∑ m = 1 M α m G m ( x )

Zm是规范化因子.
由式 (2.1-1)知, αm α m em e m 的减小而增大, 所以误差率小的基学习器最终发挥的作用更大.

例子

统计学习方法, 李航, P140。根据阀值对一组一维数据做二分类(线性不可分)。
假设第m轮后, 计算m+1轮得到的权重分布为w, 那么m+1轮基分类器的学习目标就是:

argminθi=1NwiI(G(xi;θ)yi) arg ⁡ min θ ∑ i = 1 N w i I ( G ( x i ; θ ) ≠ y i )

2.2 提升树(GBDT)

可见 参考[1].

代表是GBDT, Gradient Boosting Decison Tree.
AdaBoost算法是1995年由Freund和Schapire提出的, 提升树是2000年由Friedman提出的.
与Adaboost调整样本权重不同, 提升树通过拟合已学习树的残差来迭代学习回归树.

fm(x)=fm1(x)+T(x;θm)=m=1MT(x;θm) f m ( x ) = f m − 1 ( x ) + T ( x ; θ m ) = ∑ m = 1 M T ( x ; θ m )

fm(x) f m ( x ) 为当前学习到的m棵树的组合模型. T(x;θ) T ( x ; θ ) 表示参数为 θ θ 的一棵树.

通过经验风险最小化

argminθm+1i=1NL(yi,fm(xi)+T(xi;θm+1)) arg ⁡ min θ m + 1 ∑ i = 1 N L ( y i , f m ( x i ) + T ( x i ; θ m + 1 ) )

迭代地得到下一棵树.

特别地, 当损失函数是差的平方的时候,

L(yi,fm(x)+T(x;θm+1))=[yifm(x)T(x;θm+1)]2=[T(x;θm+1)rm]2 L ( y i , f m ( x ) + T ( x ; θ m + 1 ) ) = [ y i − f m ( x ) − T ( x ; θ m + 1 ) ] 2 = [ T ( x ; θ m + 1 ) − r m ] 2

第m+1棵树要拟合的就是残差.

Q:如何利用梯度迭代构造第m棵树?

计算每个样本 xi x i 在本轮 t t 迭代的损失负梯度 rti=L(yi,yi^)yi^ r t i = − ∂ L ( y i , y i ^ ) ∂ y i ^ , 以 <xi,rti> < x i , r t i > 而不是 <xi,yi> < x i , y i > 为样本来构造新的CART树.
最后重新计算叶子结点中的值.
其对应的叶节点区域 Rtj,j=1,2,...,J R t j , j = 1 , 2 , . . . , J 。其中J为叶子节点的个数。

针对每一个叶子节点里的样本,我们求出使损失函数最小,也就是拟合叶子节点最好的的输出值ctj如下:

ctj=argmincxiRtjL(yi,yi^+c) c t j = arg ⁡ min c ∑ x i ∈ R t j L ( y i , y i ^ + c )

通过损失函数的负梯度来拟合,我们找到了一种通用的拟合损失误差的办法,这样无轮是分类问题还是回归问题,我们通过其损失函数的负梯度的拟合,就可以用GBDT来解决我们的分类回归问题。区别仅仅在于损失函数不同导致的负梯度不同而已。

3. Bagging

Bagging是并行式集成学习的著名代表.

3.1 基学习器的学习

给定包含m个样本的数据集 Sa S a , 基学习器的样本选择策略见下:

  1. 先从 Sa S a 中随机取一个放入采样集 Sb S b 中, 再把该样本放回初始数据集 Sa S a .
  2. 经过m次步骤(1)的随机采样操作, 得到包含m个样本的采样集 Sb S b . 对于任意的 xSa x ∈ S a ,它在 Sb S b 中可能出现0次, 也有可能出现多次.
  3. 重复步骤(1), (2) T T 次,我们可采样出T个采样集 S(1)b,S(2)b,...,S(T)b S b ( 1 ) , S b ( 2 ) , . . . , S b ( T ) .
  4. 对每个采样集训练出一个基学习器, 再讲它们进行结合.

4. 随机森林

随机森林,Random Forest, 是Bagging的一个扩展变体.
RF在Bagging集成的基础上, 进一步在训练过程中引入了随机属性选择.
具体来说, 传统决策树在/选择划分属性时,是在当前节点的属性集合中选择一个最优属性; 而在RF中, 对基决策树的每个节点, 先从当前节点的属性集合中随机选择一部分(比如从d个属性中随机选k个), 再从k个中选择一个最优属性.
这里的参数 k k 控制了随机性的引入程度. 一般情况下推荐值 k=log2d k = log 2 ⁡ d .

用随机的方式去建一个森林, 里面有若干棵决策树, 建成之后怎么用呢?
预测样本进入时,森林中的每棵决策树分别进行判断,然后看看哪种判断被选择最多,就预测这个样本为哪一类。

随机森林简单, 易实现, 计算开销小, 令人惊奇的是, 它在很多现实任务中展现出强大的性能, 被誉为”代表集成学习技术水平的方法”.

5. 组合策略

5.1 平均法

用于回归任务.
假定集成含有T个基学习器, 第i个基学习器的输出为 hi(x) h i ( x ) .

  • 简单平均法, sample averaging
    H(x)=1Ti=1Thi(x)(5.1) (5.1) H ( x ) = 1 T ∑ i = 1 T h i ( x )
  • 加权平均法, weighted averaging
    H(x)=i=1Twihi(x)(5.2) (5.2) H ( x ) = ∑ i = 1 T w i h i ( x )

5.2 投票法

在对预测输出进行结合时, 对于分类任务, 通常用简单投票法; 对于回归任务, 通常用简单平均法.

  • 绝对多数投票法
    得票最多的为结果, 且过半数才有效.
  • 相对多数投票法
    得票最多的为结果.
  • 加权投票法
    给不同基学习器不同的权重.

参考

  1. 他人blog, 梯度提升树(GBDT)原理小结

你可能感兴趣的:(集成学习)