集成学习--Boosting

偶尔善良 提交于 2020-01-30 02:18:26

集成学习——Boosting

集成学习

  • 什么是集成学习?

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

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


Boosting

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

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

  • 符号说明:

    符号 含义
    hih_i 第i个个体学习器函数
    HtH_t t个个体学习器集成的最终学习器函数
    DiD_i 第i个数据集取值分布
    DD 数据集{ (x1,y1x_1,y_1),(x2,y2x_2,y_2),(x3,y3x_3,y_3),(x4,y4x_4,y_4)\cdots (xN,yN)(x_N,y_N)},即N个数据
    ϵt\epsilon_t 第t个学习器的学习误差
    αt\alpha_t 第t个学习器对应的权重
    ExD[f]E_{x-D}[f] 函数f对于x在分布D下的期望
  • 算法说明:

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

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

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

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

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

    LLαt\alpha_t求导并等于0,即
    eαt(1ϵt)+eαtϵt=0α1=12ln(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})
    2. 怎么求DtD_t:

    AdaBoost算法在获得Ht1H_{t-1}之后样本分布将进行调整,是下一轮的基学习器hth_t能纠正Ht1H_{t-1}的一些错误,即最小化损失函数(此处有些疑惑,为什么是这样的损失函数,分布D是什么)
    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+h_t(x))}] =E_{X-D}[e^{-yH_{t-1}(x)}e^{-yh_t(x)}]
    指数函数的泰勒展开
    L(Ht1+ht)=ExD[eyHt1(x)(1yht(x)+y2ht2(x)2)]=ExD[eyHt1(x)(1yht(x)+12)]=ExD[eyHt1(x)yht(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 *
    上式的一些备注:首先Ht1H_{t-1}是确定的,要想最小化损失函数,即最小化在D分布下的期望,即最大化在某一个DtD_t分布下的yht(x)yh_t(x)期望,又yht(x)=12I(yht(x))yh_t(x)=1-2I(y\neq h_t(x)),其中II函数是为真时是1,假时是0,

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

    那么DtD_t是什么呢?看回*式,将常数eyHt1(x)e^{-yH_{t-1}(x)}加入到分布D中,则可得到DtD_t分布
    L(Ht1+ht)=ExD[eyHt1(x)yht(x)]=ExDt[yht(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)]
    根据分布相关知识,
    Dt=DeyHt1(x)ZtZt使Dt D_t=\frac{D*e^{-yH_{t-1}}(x)}{Z_t},此处Z_t是一个规范化因子,使得D_t符合分布的特征

    Dt=Dt1Zt1eyHt2(x)eyHt1(x)Zt=Dt1eyht1αt1Zt1Zt 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}

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

    上式的具体含义就是:

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

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!