集成学习

  • Bagging

实例:


集成学习(机器学习)

  1. 采样方式

随机采样(bootsrap)就是从我们的训练集中采集固定个数的样本,但是每采样一个样本后,都将样本放回。也就是说,之前采集到的样本放回后有可能继续被采集到。

  1. 集成方式

Bagging的集合策略也比较简单,对于分类问题,通常使用简单投票法,得到最多票数的类别或者类别之一为最终的模型输出。对于回归问题,通常采用简单平均,对弱学习器得到的回归结果进行算数平均得到最终的模型输出

  1. 优缺点

其主要目的为通过平均降低方差。Z1,Z2, ,ZnZ_1,Z_2,\cdots,Z_n的方差为δ2/n\delta^2/n。采用Bagging策略明显减小模型方差(variance)。

此方法降低了方差,但由于将多棵决策树的结果进行了平均,这损失了模型的可解释性。同时对于训练集的拟合程度会差一些,也就是模型的偏倚会大一些。

  • Stacking

Stacking就是当用初始训练数据学习出若干个基学习器后,将几个学习期的预测结果作为新的训练集,来学习一个新的学习器

实例:


集成学习(机器学习)

  1. 采样方式

    直接使用测试集进行预测

  2. 集成方式

    a. 使用交叉验证方式对训练集样本进行训练得到第一层classifier,之后使用classifier对训练集样本进行预测从而得到结果(nm的矩阵,n表示训练集的行数,m代表分类器的个数)
    b. 将第一层的测试结果(n
    m矩阵)作为输入,对训练集进行训练得到第二层的classifier,则得到第二层classfier

  3. 优缺点

    它的平滑性和突出每个基本模型在其中执行的最好的能力,并且抹黑其执行不佳的每个基本模型,所以由于单个模型。当基本模型显著不同时,堆叠是最有效的。

  • Boost算法
  1. 简介

    Boost(提升),是指每次我都产生一个弱模型,然后加权累加到总模型中,然后每一步弱预测模型生成的依据都是损失函数的负梯度方向,这样若干步后就可以达到逼近损失函数局部最小值的目的

  2. 加法模型

    f(x)=m=1Mβmb(x;θm)f(x)=\sum_{m=1}^M\beta_mb(x;\theta_m)

其中bb是基函数,β\beta是基函数的系数,这就是最终分类器。现在我们的目标是使损失函数的期望取最小值,也就是:
minβm,θmi=1NL(yi,m=1Mβmb(xi;θm))\min_{\beta_m,\theta_m}\sum_{i=1}^NL(y_i,\sum_{m=1}^M\beta_mb(x_i;\theta_m))

一次性对M个分类器同时进行优化,显然不现实。因此提出了以下的想法:
minβm,θmi=1NL(yi,fm1+βmb(xi;θm))\min_{\beta_m,\theta_m}\sum_{i=1}^NL(y_i,f_{m-1}+\beta_mb(x_i;\theta_m))

要使损失函数最小,那就使得新加的一项刚好等于损失函数的负梯度,这样不就使得损失函数的下最快下降了吗,因此就有:

βmb(x;θm)=λdL(y,fm1)df\beta_mb(x;\theta_m)=-\lambda \frac{dL(y,f_{m-1})}{df}

  • 处理方法之GDBT
  1. 采用平方误差作为损失函数

L(y,fm1(x)+βmb(x;θm))L(y,f_{m-1}(x)+\beta_mb(x;\theta_m))
(yfm1(x)βmb(x;θm))2(y-f_{m-1}(x)-\beta_mb(x;\theta_m))^2

  1. 数据处理

    上式可以等价于:
    (γm1βmb(x;θm))2(\gamma_{m-1}-\beta_mb(x;\theta_m))^2

  2. 理解

    γm1\gamma_{m-1}作为输出,使用X去拟合一个回归树进而形成新的区域划分RmR_m。划分之后可以计算第jj个变量的输出cmjc_{mj}从而更新当前模型为:
    fm=fm1+j=1mcmjI(xjRmj)f_{m}=f_{m-1}+\sum_{j=1}^mc_{mj}I(x_j\in R_{mj})

  • Adaboost的原理
  1. 简介

    AdaBoost,是英文“Adaptive Bootsing”的缩写。它的自适应在于:前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器。同时,在每一轮转中加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预指定的最大迭代次数。

    具体来说,整个Adaboost迭代算法就3步:
    a. 初始化训练数据的权值分布。如果有N个样本,则每个训练样本最开始时都被赋予相同的权值:1/N
    b. 训练弱分类器。具体训练过程中,如果某个样本点已经被准去地分类,那么在构造下一个训练集中,它的权值就被降低;相反,如果某个样本点没有被准确地分类,那么它的权值就得到提高。然后,权值更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去。
    c. 将各个训练得到的弱分类器组合成强分类器。各个弱分类器的训练过程结束后,加大分类误差率小的分类器的权重,使其在最终的分类函数中起着较大的决定作用,而降低分类误差较大的弱分类器的权重,使其在最终的分类函数中起着较小的决定作用。换言之,误差率低的弱分类器在最终分类器中的权重较大,否则较小

  2. 计算流程

    给定一个训练数据集T={(x1,y1),(x2,y2), ,(xN,yN)}T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\},其中实例xRnx\in R^n, yiY={1,+1}y_i \in Y=\{-1,+1\}。Adaboost的目的就是从训练集中学习到一系列弱分类器或基本分类器,最后将这些弱分类器组合成为一个强分类器。

    步骤1. 初始化训练数据的权值分布。每个样本最初时都被赋予相同的权值:1/N1/N
    D1=(w11,w12, ,w1N),w1i=1N,i=1,2, ,ND_1=(w_{11},w_{12},\cdots ,w_{1N}),w_{1i}=\frac{1}{N},i=1,2,\cdots,N

    步骤2. 进行多轮迭代,用m=1,2,…M代表迭代的轮数

a. 使用权值分布DmD_m的训练数据集学习,得到基本分类器

Gm:X{1,1}G_m:X \rightarrow \{-1,1\}

b. 计算Gm(x)G_m(x)在训练集上的分类误差率:
em=P(Gm(xi)yi)=i=1nwmiI(Gm(xi)yi)e_m=P(G_m(x_i)\neq y_i)=\sum_{i=1}^{n}w_{mi}I(G_m(x_i)\neq y_i)
注:I(Gm(xi)yi)I(G_m(x_i)\neq y_i):不等函数II的值为1,相等函数II的值为0

c. 计算G_m(x)的系数
am=12log1emema_m=\frac{1}{2}\log \frac{1-e_m}{e_m}
这里的对数是自然对数。显然ama_meme_m的单调函数,这里就解释了为什么对于没有正确分类的数据要加大权值

d. 更新训练集的权值
Dm+1=(wm+1,1,ww+1,2, ,wm+1,N)D_{m+1}=(w_{m+1,1},w_{w+1,2},\cdots,w_{m+1,N})
wm+1,i=wmiZmexp(αmyiGm(xi))w_{m+1,i}=\frac{w_{mi}}{Z_m}exp(-\alpha_my_iG_m(x_i))
这里,ZmZ_m是泛化因子
Zm=i=1Nwmiexp(αmyiGm(xi))Z_m=\sum_{i=1}^{N}w_{mi}exp(-\alpha_my_iG_m(x_i))
它使得Dm+1D_{m+1}成为一个概率分布

步骤3. 构建基本分类器的线性组合

f(x)=m=1MamGm(x)f(x)=\sum_{m=1}^Ma_mG_m(x)
得到最终分类器:
G(x)=sign(f(x))=sign(m=1MamGm(x))G(x)=sign(f(x))=sign(\sum_{m=1}^Ma_mG_m(x))

  1. 特点

标准的Adaboot算法只适用于二分类,要想让其处理多分类或回归任务还需要对其进行修改

  • Adaboost公式推导
  1. 损失函数

L(y,f(x)=exp[yf(x)]L(y,f(x)=exp[-yf(x)]

  1. 目标

(am,Gm(x))=argmina,Gi=1Nexp[yi(fm1(xi)+aG(xi))](a_m,G_m(x))=argmin_{a,G}\sum_{i=1}^Nexp[-y_i(f_{m-1}(x_i)+aG(x_i))]

  1. 推导

(am,Gm(x))=argmina,Gi=1Nw^miexp[yiaG(xi)](a_m,G_m(x))=argmin_{a,G}\sum_{i=1}^N\hat w_{mi}exp[-y_iaG(x_i)]

其中w^mi=exp[yifm1(xi)]\hat w_{mi}=exp[-y_if_{m-1}(x_i)]w^mi\hat w_{mi}既不依赖于aa也不依赖于G,与最小值无关

  1. 计算

接下来,便是要证使得上式达到最小的ama_m^*Gm(x)G_m^*(x)就是Adaboost算法所求解得到的ama_mGm(x)G_m(x),为求解上式,我们可以先求解Gm(x)G_m^*(x),再求ama_m

首先求解Gm(x)G_m(x)。对于任意a>0a>0,使上式(ama_mGm(x)G_m(x))最小的G(x)由下式得到:

Gm(x)=argminGi=1Nw^miI(yiG(xi))G_m^*(x)=argmin_G\sum_{i=1}^N\hat w_{mi}I(y_i \neq G(x_i))

然后求a的过程如下:

下面描述使目标函数最小的Gm(x)G^*_m(x),当Gm(x)G^*_m(x)预测正确时,它与y_i的积必然为1,反之为-1。因此exp()exp()中只会出现两种结果:exp(a)exp(-a)exp(a)exp(a),所以想要使上述目标函数最小,在aa不变的情况下,使其最小的G(x)G(x)必然由一下公式得到:
(am,Gm(x))=argmina,Gi=1Nw^miexp[yiaG(xi)](a_m,G_m(x))=argmin_{a,G}\sum_{i=1}^N\hat w_{mi}exp[-y_iaG(x_i)]
(am,Gm(x))=argmina,G[yi=Gm(xi)w^miea+yiGm(xi)w^miea](a_m,G_m(x))=argmin_{a,G}[\sum_{y_i=G_m(x_i)}\hat w_{mi}e^{-a}+\sum_{y_i\neq G_m(x_i)}\hat w_{mi}e^a]
(am,Gm(x))=argmina,G(eaea)[i=1Nw^miI(yiG(xi))+eai=1Nw^mi](a_m,G_m(x))=argmin_{a,G}(e^a-e^{-a})[\sum_{i=1}^N\hat w_{mi}I(y_i\neq G(x_i))+e^{-a}\sum_{i=1}^N\hat w_{mi}]

对上式求导并使其为0可得:

am=12ln1emema_m=\frac{1}{2}ln\frac{1-e_m}{e_m}
em=i=1Nw^miI(yiGm(xi))i=1Nw^mie_m=\frac{\sum_{i=1}^N\hat w_{mi}I(y_i\neq G_m(x_i))}{\sum_{i=1}^N\hat w_{mi}}

  • 总结

从加法模型角度推导的损失函数如下:
i=1Nw^miexp[yiaG(xi)]\sum_{i=1}^N\hat w_{mi}exp[-y_iaG(x_i)]

最小化它又等价于:
i=1Nw^miI(yiG(xi))\sum_{i=1}^N\hat w_{mi}I(y_i\neq G(x_i))

相关文章: