Adaboost 算法【python,机器学习,算法】

27 篇文章 0 订阅
20 篇文章 0 订阅

算法步骤

  1. 初始化样本数据,样本数据集大小为N,每个样本的权重设置为1/N
    相关公式: D 1 = ( w 11 , w 12 , w 13 , w 14 , . . . , w 1 i , . . . , w 1 N ) , w 1 i = 1 N , i = 1 , 2 , 3 , 4 , . . . , N D_1=(w_{11},w_{12},w_{13},w_{14},...,w_{1i},...,w_{1N}),w_{1i}=\frac{1}{N},i=1,2,3,4,...,N D1=(w11,w12,w13,w14,...,w1i,...,w1N),w1i=N1,i=1,2,3,4,...,N
    其中D1表示,第一次迭代每个样本的权值。w11表示,第1次迭代时的第一个样本的权值。

  2. 迭代。

    1. 根据前一个分类器分类结果,对样本进行加权处理(分类正确的样本权重减小,分类错误的样本权重增加)。

    2. 按照新的权重,对当前样本进行重新训练,得到一个新的弱分类器。

    3. 计算公式如下:

      W k + 1 , i = W k , i Z k e − α k y k , i G k ( x i ) Z k = ∑ i = 1 m e − α k y k , i G k ( x i ) W_{k+1,i} = \frac{W_{k,i}}{Z_k} e^{-\alpha_k y_{k,i} G_k(x_i)}\\ Z_k=\sum\limits_{i=1}^{m} e^{-\alpha_k y_{k,i} G_k(x_i)} Wk+1,i=ZkWk,ieαkyk,iGk(xi)Zk=i=1meαkyk,iGk(xi)

      推导出如下公式

      w i n e w = { 1 2 ( 1 − ε ) w i o l d , 样本被正确分类 1 2 ( ε ) w i o l d , 样本被错误分类 w_{i}^{new}= \begin{cases} \frac{1}{2(1-\varepsilon)} w_{i}^{old}, 样本被正确分类 \\ \frac{1}{2(\varepsilon)} w_{i}^{old}, 样本被错误分类 \end{cases} winew={2(1ε)1wiold,样本被正确分类2(ε)1wiold,样本被错误分类

      其中 ε = ∑ i = 1 N w i I ( f i ≠ y i ) \varepsilon=\sum\limits_{i=1}^{N} w_i I(f_i\neq y_i) ε=i=1NwiI(fi=yi)表示当前训练器的错误率,即所有错误分类的样本权重之和除以所有的权重之和。
      I 是指示函数,如果条件成立则为 1,否则为 0。

  3. 当迭代到一定的次数,或者得到的分类器的误差很小时,结束迭代循环。

  4. 组合弱分类器。公式如下:
    F ‾ = α 1 f 1 + α 2 f 2 + α 3 f 3 + . . . + α k f k \overline{F}=\alpha_{1} f_{1}+\alpha_{2} f_{2}+\alpha_{3} f_{3}+...+\alpha_{k} f_{k} F=α1f1+α2f2+α3f3+...+αkfk
    其中 α k = 1 2 ln ⁡ 1 − ε k ε k \alpha_{k}=\frac{1}{2}\ln{\frac{1-\varepsilon_k}{\varepsilon_k}} αk=21lnεk1εk f k f_k fk表示第 k k k次迭代训练得到的训练器。

根据损失函数进行优化

  1. 整体是一个强学习器,是由一个一个弱学习器迭代而来。公式如下:
    F m ( x ) = F m − 1 ( x ) + α m G ( x ) F_m(x)=F_{m-1}(x)+\alpha_m G(x) Fm(x)=Fm1(x)+αmG(x), 强学习器需要通过 s i g n ( F ( x ) ) sign(F(x)) sign(F(x))函数转换输出。
    其中 F m ( x ) F_m(x) Fm(x)表示第 m m m代强学习器, α m \alpha_m αm表示当前弱学期器的权重, G ( x ) = { − 1 , 1 } G(x)=\{-1,1\} G(x)={1,1}表示弱学习器。

  2. 怎样求取弱学习器的权重 α m \alpha_m αm
    假设有 N 个样本,那么样本的初始权重为 1 N \frac{1}{N} N1
    定义损失函数 L ( F m , y ) = ∑ i = 1 N e − y i F m ( x i ) L(F_m,y)=\sum\limits_{i=1}^{N}e^{-y_i F_m(x_i)} L(Fm,y)=i=1NeyiFm(xi)
    根据损失函数进行化简推导:

    L o s s = ∑ i = 1 N e − y i F m ( x i ) = ∑ i = 1 N e − y i [ F m − 1 ( x i ) + α m G m ( x i ) ] = ∑ i = 1 N e − y i F m − 1 ( x i ) − y i α m G m ( x i ) = ∑ i = 1 N w m i × e − y i α m G m ( x i ) = ∑ y i = G ( x i ) N w m i × e − α m + ∑ y i ≠ G ( x i ) N w m i × e α m = ∑ y i = G ( x i ) N w m i × e − α m + ∑ y i ≠ G ( x i ) N w m i × e α m + ∑ y i ≠ G ( x i ) N w m i × e − α m − ∑ y i ≠ G ( x i ) N w m i × e − α m = ∑ i = 1 N w m i × e − α m + ( e α m − e − α m ) ∑ y i ≠ G ( x i ) N w m i Loss = \sum\limits_{i=1}^{N}e^{-y_i F_m(x_i)} \\ = \sum\limits_{i=1}^{N} e^{-y_i[F_{m-1}(x_i)+\alpha_m G_m(x_i)]} \\ = \sum\limits_{i=1}^{N} e^{-y_i F_{m-1}(x_i) -y_i\alpha_m G_m(x_i)} \\ = \sum\limits_{i=1}^{N} w_{mi}\times e^{-y_i\alpha_m G_m(x_i)} \\ = \sum\limits_{y_i=G(x_i)}^{N} w_{mi}\times e^{-\alpha_m} + \sum\limits_{y_i \neq G(x_i)}^{N} w_{mi}\times e^{\alpha_m} \\ = \sum\limits_{y_i=G(x_i)}^{N} w_{mi}\times e^{-\alpha_m} + \sum\limits_{y_i \neq G(x_i)}^{N} w_{mi}\times e^{\alpha_m} +\sum\limits_{y_i \neq G( x_i)}^{N} w_{mi}\times e^{-\alpha_m} -\sum\limits_{y_i \neq G(x_i)}^{N} w_{mi}\times e^{-\alpha_m} \\ = \sum\limits_{i=1}^{N} w_{mi}\times e^{-\alpha_m} + (e^{\alpha_m}-e^{-\alpha_m})\sum\limits_{y_i \neq G(x_i)}^{N} w_{mi} Loss=i=1NeyiFm(xi)=i=1Neyi[Fm1(xi)+αmGm(xi)]=i=1NeyiFm1(xi)yiαmGm(xi)=i=1Nwmi×eyiαmGm(xi)=yi=G(xi)Nwmi×eαm+yi=G(xi)Nwmi×eαm=yi=G(xi)Nwmi×eαm+yi=G(xi)Nwmi×eαm+yi=G(xi)Nwmi×eαmyi=G(xi)Nwmi×eαm=i=1Nwmi×eαm+(eαmeαm)yi=G(xi)Nwmi

    上面的推导用定义了权重 w m i = e − y i F m − 1 ( x i ) w_{mi}=e^{-y_i F_{m-1}(x_i)} wmi=eyiFm1(xi)

    接着对损失函数求导,当损失函数对 α m \alpha_m αm求偏导,导数为 0 时,取得极小值,这时可以得到 α m \alpha_m αm的值。

    L o s s ′ ( α m ) = − e − α m ∑ i = 1 N w m i + ( e α m + e − α m ) ∑ y i ≠ G ( x i ) N w m i {Loss}^\prime(\alpha_m)=-e^{-\alpha_m}\sum\limits_{i=1}^{N} w_{mi} + (e^{\alpha_m}+e^{-\alpha_m})\sum\limits_{y_i \neq G(x_i)}^{N} w_{mi} Loss(αm)=eαmi=1Nwmi+(eαm+eαm)yi=G(xi)Nwmi

    L o s s ′ ( α m ) = 0 {Loss}^\prime(\alpha_m)=0 Loss(αm)=0得到

    e − α m e α m + e − α m = ∑ y i ≠ G ( x i ) N w m i ∑ i = 1 N w m i = ∑ i N w m i I ( y i ≠ G ( x i ) ) ∑ i = 1 N w m i = e m \frac{e^{-\alpha_m}}{e^{\alpha_m}+e^{-\alpha_m}}\\ =\frac{\sum\limits_{y_i \neq G(x_i)}^{N} w_{mi}}{\sum\limits_{i=1}^{N} w_{mi}} \\ =\frac{\sum\limits_{i}^{N} w_{mi} I(y_i\neq G(x_i))}{\sum\limits_{i=1}^{N} w_{mi}}\\ = e_m eαm+eαmeαm=i=1Nwmiyi=G(xi)Nwmi=i=1NwmiiNwmiI(yi=G(xi))=em

    求解 α m = 1 2 ln ⁡ 1 − e m e m \alpha_m=\frac{1}{2}\ln{\frac{1-e_m}{e_m}} αm=21lnem1em,
    其中 e m = ∑ i N w m i I ( y i ≠ G ( x i ) ) ∑ i = 1 N w m i e_m=\frac{\sum\limits_{i}^{N} w_{mi} I(y_i\neq G(x_i))}{\sum\limits_{i=1}^{N} w_{mi}} em=i=1NwmiiNwmiI(yi=G(xi))表示分类误差率,
    I ( y i ≠ G ( x i ) ) I(y_i\neq G(x_i)) I(yi=G(xi))表示条件函数,条件成立时为 1,不成立时为 0。

  3. 怎样在迭代中求取样本的权重 w i w_i wi
    根据以下公式组

    F m + 1 ( x i ) = F m ( x i ) + α m + 1 G m + 1 ( x i ) W m + 1 , i = e − y i F m ( x i ) F_{m+1}(x_i)=F_{m}(x_i)+\alpha_{m+1} G_{m+1}(x_i)\\ W_{m+1,i}=e^{-y_i F_{m}(x_i)} Fm+1(xi)=Fm(xi)+αm+1Gm+1(xi)Wm+1,i=eyiFm(xi)

    推导权重的递推公式

    W m + 1 , i = e − y i F m ( x i ) W m + 1 , i = e − y i ( F m − 1 ( x i ) + α m G m ( x i ) ) W m + 1 , i = W m , i ∗ e − y i α m G m ( x i ) ) W_{m+1,i}=e^{-y_i F_{m}(x_i)}\\ W_{m+1,i}=e^{-y_i (F_{m-1}(x_i)+\alpha_{m} G_{m}(x_i))}\\ W_{m+1,i}=W_{m,i} * e^{-y_i \alpha_{m} G_{m}(x_i))}\\ Wm+1,i=eyiFm(xi)Wm+1,i=eyi(Fm1(xi)+αmGm(xi))Wm+1,i=Wm,ieyiαmGm(xi))

    其中初始值 α 0 = 1 \alpha_0=1 α0=1, w [ 0 ] i = 1 N w_{[0]i}=\frac{1}{N} w[0]i=N1

  • 18
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值