AdaBoost

Overview

overview

AdaBoost算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2。如此重复进行,直到弱学习器数达到事先指定的数目 T T T ,最终将这 T T T 个弱学习器通过集合策略进行整合,得到最终的强学习器。

AdaBoost分类算法流程

输入样本集 T = { ( x , y 1 ) , ( x 2 , y 2 ) , … ( x m , y m ) } \boldsymbol{T}=\left\{\left(x, y_{1}\right),\left(x_{2}, y_{2}\right), \ldots\left(x_{m}, y_{m}\right)\right\} T={(x,y1),(x2,y2),(xm,ym)} ,类别为 { − 1 , + 1 } \{ -1, +1 \} {1,+1},弱分类器迭代次数 K K K。输出为最终的强分类器 f ( x ) f(x) f(x)

  1. 初始化样本集权重为:
    D ( 1 ) = ( w 11 , w 12 , … w 1 m ) ; w 1 i = 1 m ; i = 1 , 2 … m D(1)=\left(w_{11}, w_{12}, \ldots w_{1 m}\right) ; \quad w_{1 i}=\frac{1}{m} ; \quad i=1,2 \ldots m D(1)=(w11,w12,w1m);w1i=m1;i=1,2m

  2. 对于 k = 1 , 2 , … , K k=1, 2, \dots, K k=1,2,,K

    1. 使用具有权重 D k D_k Dk 的样本集来训练数据,得到弱分类器 G k ( x ) G_k(x) Gk(x)

    2. 计算 G k ( x ) G_k(x) Gk(x) 的分类误差率:
      e k = P ( G k ( x i ) ≠ y i ) = ∑ i = 1 m w k i I ( G k ( x i ) ≠ y i ) e_{k}=P\left(G_{k}\left(x_{i}\right) \neq y_{i}\right)=\sum_{i=1}^{m} w_{k i} I\left(G_{k}\left(x_{i}\right) \neq y_{i}\right) ek=P(Gk(xi)=yi)=i=1mwkiI(Gk(xi)=yi)

    3. 计算弱分类器的权重系数:
      α k = 1 2 log ⁡ 1 − e k e k \alpha_{k}=\frac{1}{2} \log \frac{1-e_{k}}{e_{k}} αk=21logek1ek
      从上式可以看出,如果分类误差率 e k e_k ek 越大,则对应的弱分类器权重系数 α k \alpha_{k} αk 越小。即误差率小的弱分类器权重系数越大。

    4. 更新样本集的权重分布:
      w k + 1 , i = w k i Z K exp ⁡ ( − α k y i G k ( x i ) ) i = 1 , 2 , … m w_{k+1, i}=\frac{w_{k i}}{Z_{K}} \exp \left(-\alpha_{k} y_{i} G_{k}\left(x_{i}\right)\right) \quad i=1,2, \ldots m wk+1,i=ZKwkiexp(αkyiGk(xi))i=1,2,m
      其中 Z K Z_K ZK 是归一化因子:
      Z k = ∑ i = 1 m w k i exp ⁡ ( − α k y i G k ( x i ) ) Z_{k}=\sum_{i=1}^{m} w_{k i} \exp \left(-\alpha_{k} y_{i} G_{k}\left(x_{i}\right)\right) Zk=i=1mwkiexp(αkyiGk(xi))
      从上式可以看出,如果第 i i i 个样本分类错误,则 y i G k < 0 y_{i} G_{k} < 0 yiGk<0 ,导致样本的权重在第 k + 1 k+1 k+1 个弱分类器中增大;如果分类正确,则权重在第 k + 1 k+1 k+1 个弱分类器中减少。

  3. 构建最终分类器:
    f ( x ) = sign ⁡ ( ∑ k = 1 K α k G k ( x ) ) f(x)=\operatorname{sign}\left(\sum_{k=1}^{K} \alpha_{k} G_{k}(x)\right) f(x)=sign(k=1KαkGk(x))

对于Adaboost多元分类算法,其原理和二元分类类似。最主要区别在弱分类器的系数上。比如Adaboost SAMME算法,它的弱分类器的系数:
α k = 1 2 log ⁡ 1 − e k e k + log ⁡ ( R − 1 ) \alpha_{k}=\frac{1}{2} \log \frac{1-e_{k}}{e_{k}}+\log (R-1) αk=21logek1ek+log(R1)
其中 R R R 为类别数。如果 R = 2 R=2 R=2 ,那么上式即是二分类的弱分类器系数。

AdaBoost回归算法流程

输入样本集 T = { ( x , y 1 ) , ( x 2 , y 2 ) , … ( x m , y m ) } \boldsymbol{T}=\left\{\left(x, y_{1}\right),\left(x_{2}, y_{2}\right), \ldots\left(x_{m}, y_{m}\right)\right\} T={(x,y1),(x2,y2),(xm,ym)} ,弱分类器迭代次数 K K K。输出为最终的强分类器 f ( x ) f(x) f(x)

  1. 初始化样本集权重为:
    D ( 1 ) = ( w 11 , w 12 , … w 1 m ) ; w 1 i = 1 m ; i = 1 , 2 … m D(1)=\left(w_{11}, w_{12}, \ldots w_{1 m}\right) ; \quad w_{1 i}=\frac{1}{m} ; \quad i=1,2 \ldots m D(1)=(w11,w12,w1m);w1i=m1;i=1,2m

  2. 对于 k = 1 , 2 , … , K k=1, 2, \dots, K k=1,2,,K

    1. 使用具有权重 D k D_k Dk 的样本集来训练数据,得到弱分类器 G k ( x ) G_k(x) Gk(x)

    2. 计算训练集上的最大误差:
      E k = max ⁡ ∣ y i − G k ( x i ) ∣ i = 1 , 2 … m E_{k}=\max \left|y_{i}-G_{k}\left(x_{i}\right)\right| i=1,2 \ldots m Ek=maxyiGk(xi)i=1,2m

    3. 计算每个样本的相对误差:

      • 线性误差: e k i = ∣ y i − G k ( x i ) ∣ E k e_{k i}=\frac{\left|y_{i}-G_{k}\left(x_{i}\right)\right|}{E_{k}} eki=EkyiGk(xi)
      • 平方误差: e k i = ( y i − G k ( x i ) ) 2 E k 2 e_{k i}=\frac{(y_{i}-G_{k}(x_{i}))^2}{E_{k}^2} eki=Ek2(yiGk(xi))2
      • 指数误差: e k i = 1 − exp ⁡ ( − ∣ y i − G k ( x i ) ∣ E k ) e_{k i}=1-\exp \left(\frac{-\left|y_{i}-G_{k}\left(x_{i}\right)\right|}{E_{k}}\right) eki=1exp(EkyiGk(xi))
    4. 计算回归误差率:
      e k = ∑ i = 1 m w k i e k i e_k = \sum_{i=1}^m w_{ki} e_{ki} ek=i=1mwkieki

    5. 计算弱学习器的权重系数:
      a k = 1 − e k e k a_k = \frac{1-e_k}{e_k} ak=ek1ek

    6. 更新样本集的权重分布:
      w k + 1 , i = w k i Z k α k 1 − e k i w_{k+1, i}=\frac{w_{k i}}{Z_{k}} \alpha_{k}^{1-e_{k i}} wk+1,i=Zkwkiαk1eki
      其中 Z K Z_K ZK 是归一化因子:
      Z k = ∑ i = 1 m w k i α k 1 − e k i Z_{k}=\sum_{i=1}^{m} w_{k i} \alpha_{k}^{1-e_{k i}} Zk=i=1mwkiαk1eki

  3. 构建最终强学习器:
    f ( x ) = G k ∗ ( x ) f(x)=G_{k^{*}}(x) f(x)=Gk(x)

其中, G k ∗ ( x ) \boldsymbol{G}_{k^{*}}(x) Gk(x) 是所有 l n 1 α k , k = 1 , 2 , … . K ln \frac{1}{\alpha_{k}}, k=1,2, \ldots . K lnαk1,k=1,2,.K 的中位数值对于序号 k ∗ k^{*} k 对应的弱学习器。

AdaBoost正则化

为了防止AdaBoost过拟合,我们加入正则化项:
f k ( x ) = f k − 1 ( x ) + v α k G k ( x ) , 0 < v < = 1 f_{k}(x)=f_{k-1}(x)+v \alpha_{k} G_{k}(x), \quad 0 < v <= 1 fk(x)=fk1(x)+vαkGk(x),0<v<=1
与GBDT类似,该正则化项称作学习率。对于同样的训练集学习效果,较小的 v v v 意味着我们需要更多的弱学习器的迭代次数。

AdaBoost总结

优点
  • Adaboost作为分类器时,分类精度很高
  • 在Adaboost的框架下,可以使用各种回归分类模型来构建弱学习器,非常灵活
  • 不容易发生过拟合
缺点
  • 对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习器的预测准确性

参考自:

  • https://blog.csdn.net/px_528/article/details/72963977
  • https://www.cnblogs.com/pinard/p/6133937.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值