集成学习--Boosting

集成学习——Boosting

集成学习

  • 什么是集成学习?

    集成学习通过构建并结合多个学习器来完成学习任务,这多个学习器通常叫“基学习器”或“弱学习器”,这些学习器是简单的学习器如决策树学习器或神经网络学习期,性能只是比随机好一点。

    多个学习器的学习结果通过一定方法结合起来得到最终的学习结果在这里插入图片描述


Boosting

  • Boosting是一种常见的集成学习算法,各个个体学习器具有串行的关系,何为串行的关系,下文可以看到。

    其中最常见的是AdaBoost算法(adapt boosting)

  • 符号说明:

    符号含义
    h i h_i hi第i个个体学习器函数
    H t H_t Htt个个体学习器集成的最终学习器函数
    D i D_i Di第i个数据集取值分布
    D D D数据集{ ( x 1 , y 1 x_1,y_1 x1,y1),( x 2 , y 2 x_2,y_2 x2,y2),( x 3 , y 3 x_3,y_3 x3,y3),( x 4 , y 4 x_4,y_4 x4,y4) ⋯ \cdots ( x N , y N ) (x_N,y_N) (xN,yN)},即N个数据
    ϵ t \epsilon_t ϵt第t个学习器的学习误差
    α t \alpha_t αt第t个学习器对应的权重
    E x − D [ f ] E_{x-D}[f] ExD[f]函数f对于x在分布D下的期望
  • 算法说明:

    对于N个数据,一开始是等可能性的看待,即每个数据的权重相等,此时对应分布 D 1 = 1 N D_1=\frac{1}{N} D1=N1,即每个数据对应权重 w i = 1 w_i=1 wi=1,此时将这些数据作为弱学习器 h 1 h_1 h1的输入,得到预测结果 h 1 ( x ) h_1(x) h1(x),与真实结果 y y y比较,得到学习误差 P ( h 1 ( x ) ≠ y ) = ϵ 1 P(h_1(x)\neq y)=\epsilon_1 P(h1(x)=y)=ϵ1,然后得到该学习器的权重 α 1 = 1 2 l n ( 1 − ϵ 1 ϵ 1 ) \alpha_1=\frac{1}{2}ln(\frac{1-\epsilon_1}{\epsilon_1}) α1=21ln(ϵ11ϵ1),然后根据结果对分布进行调整,分类正确的权重变大,变为 W t + 1 = W t ∗ e − α s u m ( W t ) W_{t+1}=\frac{W_t*e^{-\alpha}}{sum(W_t)} Wt+1=sum(Wt)Wteα,分类错误权重变小,变为 W t + 1 = W t ∗ e α s u m ( W t ) W_{t+1}=\frac{W_t*e^{\alpha}}{sum(W_t)} Wt+1=sum(Wt)Wteα,然后根据此分布继续学习 h 2 h_2 h2,同样得到学习误差,学习器权重和下一个学习的数据集的分布,以此类推,直至某次学习器学习成果不理想或者学习次数满了为止,由于学习器学习的数据集是根据上一个学习器的学习成果来调整的,这样就是串行。

  • 详细推导:基于“加性模型”的AdaBoost算法,即线性组合,简化模型为二分类任务

    H ( x ) = ∑ t = 0 T α t h t ( x ) H(x)=\sum_{t=0}^T\alpha_th_t(x) H(x)=t=0Tαtht(x),此处我们假设有T个个体学习器,即训练T次

    我们的目的是得到 α t \alpha_t αt D t D_t Dt来最小化指数损失函数
    L ( H ) = E x − D [ e − y ∗ H ( x ) ] , L(H)=E_{x-D}[e^{-y*H(x)}], L(H)=ExD[eyH(x)]
    1. 怎么求 α t \alpha_t αt

    对于每个学习器有 L ( α t h t ( x ) ) = E x − D t [ e − y ∗ α t h t ( x ) ] L(\alpha_th_t(x))=E_{x-D_t}[e^{-y*\alpha_th_t(x)}] L(αtht(x))=ExDt[eyαtht(x)]这个形式很难看懂,然后来看看更易于理解的形式:
    L ( α t h t ( x ) ) = e − α t P ( y = h t ( x ) ) + e α t p ( y ≠ h t ( x ) ) L(\alpha_th_t(x))=e^{-\alpha_t}P(y=h_t(x))+e^{\alpha_t}p(y\neq h_t(x)) L(αtht(x))=eαtP(y=ht(x))+eαtp(y=ht(x))
    因为对于每个x,对于的y和h(x)都只是1或-1

    L L L α t \alpha_t αt求导并等于0,即
    e − α t ( 1 − ϵ t ) + e α t ϵ t = 0 , 得 到 α 1 = 1 2 l n ( 1 − ϵ 1 ϵ 1 ) e^{-\alpha_t}(1-\epsilon_t)+e^{\alpha_t}\epsilon_t=0,得到\alpha_1=\frac{1}{2}ln(\frac{1-\epsilon_1}{\epsilon_1}) eαt(1ϵt)+eαtϵt=0α1=21ln(ϵ11ϵ1)
    2. 怎么求 D t D_t Dt:

    AdaBoost算法在获得 H t − 1 H_{t-1} Ht1之后样本分布将进行调整,是下一轮的基学习器 h t h_t ht能纠正 H t − 1 H_{t-1} Ht1的一些错误,即最小化损失函数(此处有些疑惑,为什么是这样的损失函数,分布D是什么)
    L ( H t − 1 + h t ) = E x − D [ e − y ( H t − 1 ( x + h t ( x ) ) ] = E X − D [ e − y H t − 1 ( x ) e − y h t ( x ) ] L(H_{t-1}+h_t)=E_{x-D}[e^{-y(H_{t-1}(x+h_t(x))}] =E_{X-D}[e^{-yH_{t-1}(x)}e^{-yh_t(x)}] L(Ht1+ht)=ExD[ey(Ht1(x+ht(x))]=EXD[eyHt1(x)eyht(x)]
    指数函数的泰勒展开
    L ( H t − 1 + h t ) = E x − D [ e − y H t − 1 ( x ) ( 1 − y h t ( x ) + y 2 h t 2 ( x ) 2 ) ] = E x − D [ e − y H t − 1 ( x ) ( 1 − y h t ( x ) + 1 2 ) ] = E x − D [ − e − y H t − 1 ( x ) y h t ( x ) ] ( 舍 去 常 数 )        ∗ L(H_{t-1}+h_t)=E_{x-D}[e^{-yH_{t-1}(x)}(1-yh_t(x)+\frac{y^2h^2_t(x)}{2})]\\ =E_{x-D}[e^{-yH_{t-1}(x)}(1-yh_t(x)+\frac{1}{2})]\\ =E_{x-D}[-e^{-yH_{t-1}(x)}yh_t(x)](舍去常数)\space\space\space\space\space\space * L(Ht1+ht)=ExD[eyHt1(x)(1yht(x)+2y2ht2(x))]=ExD[eyHt1(x)(1yht(x)+21)]=ExD[eyHt1(x)yht(x)]()      
    上式的一些备注:首先 H t − 1 H_{t-1} Ht1是确定的,要想最小化损失函数,即最小化在D分布下的期望,即最大化在某一个 D t D_t Dt分布下的 y h t ( x ) yh_t(x) yht(x)期望,又 y h t ( x ) = 1 − 2 I ( y ≠ h t ( x ) ) yh_t(x)=1-2I(y\neq h_t(x)) yht(x)=12I(y=ht(x)),其中 I I I函数是为真时是1,假时是0,

    上面的式子说明理想的 h t h_t ht将在分布 D t D_t Dt下最小化分类误差,个人的理解是只要分布符合 D t D_t Dt,即数据集的权重符合一定的分布,任何有效学习器分类都能使分类损失降到最小

    那么 D t D_t Dt是什么呢?看回*式,将常数 e − y H t − 1 ( x ) e^{-yH_{t-1}(x)} eyHt1(x)加入到分布D中,则可得到 D t D_t Dt分布
    L ( H t − 1 + h t ) = E x − D [ − e − y H t − 1 ( x ) y h t ( x ) ] = E x − D t [ y h t ( x ) ] L(H_{t-1}+h_t)=E_{x-D}[-e^{-yH_{t-1}(x)}yh_t(x)]\\ =E_{x-D_t}[yh_t(x)] L(Ht1+ht)=ExD[eyHt1(x)yht(x)]=ExDt[yht(x)]
    根据分布相关知识,
    D t = D ∗ e − y H t − 1 ( x ) Z t , 此 处 Z t 是 一 个 规 范 化 因 子 , 使 得 D t 符 合 分 布 的 特 征 D_t=\frac{D*e^{-yH_{t-1}}(x)}{Z_t},此处Z_t是一个规范化因子,使得D_t符合分布的特征 Dt=ZtDeyHt1(x)Zt使Dt

    D t = D t − 1 Z t − 1 e − y H t − 2 ( x ) ∗ e − y H t − 1 ( x ) Z t = D t − 1 ∗ e − y h t − 1 α t − 1 ∗ Z t − 1 Z t D_t =\frac{D_{t-1}Z_{t-1}}{e^{-yH_{t-2}(x)}}*\frac{e^{-yH_{t-1}}(x)}{Z_t}=D_{t-1}*e^{-yh_{t-1}\alpha_{t-1}}*\frac{Z_{t-1}}{Z_t} Dt=eyHt2(x)Dt1Zt1ZteyHt1(x)=Dt1eyht1αt1ZtZt1

    ​ (这里 Z t − 1 / Z t Z_{t-1}/Z_t Zt1/Zt是规范化因子,此处具体是什么不是很理解)

    上式的具体含义就是:

    ​ 如果该样本在上一个学习器中分类正确,则该样本的权重变为
    W t + 1 = W t ∗ e − α s u m ( W t ) W_{t+1}=\frac{W_t*e^{-\alpha}}{sum(W_t)} Wt+1=sum(Wt)Wteα
    ​ 如果该样本在上一个学习器中分类错误,则该样本的权重变为
    W t + 1 = W t ∗ e α s u m ( W t ) W_{t+1}=\frac{W_t*e^{\alpha}}{sum(W_t)} Wt+1=sum(Wt)Wteα
    ​ 其中 s u m ( W t ) = ∑ t T W t ∗ e − α ∗ y ∗ h t ( x ) sum(W_t)=\sum_t^TW_t*e^{-\alpha*y*h_t(x)} sum(Wt)=tTWteαyht(x),大概就是上文的 Z t − 1 / Z t Z_{t-1}/Z_t Zt1/Zt

    到此基于加性模型的AdaBoost算法二分类任务详细推导结束,该结论同样适用于多分类任务
    😉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值