AdaBoost算法原理详细总结

        在集成学习方法之Bagging,Boosting,Stacking篇章中,我们谈论boosting框架的原理,在boosting系列算法中,AdaBoost是著名的算法之一。AdaBoost是英文"Adaptive Boosting"(自适应增强)的缩写,由Yoav Freund和Robert Schapire在1995年提出。
        今天我们就来探讨下AdaBoost分类算法的原理,本篇我们先介绍AdaBoost算法;然后通过误差分析探讨AdaBoost为什么能提升模型的学习精度;并且从前向分步加法模型角度解释AdaBoost;最后对AdaBoost的算法优缺点进行一个总结。

1)从boosting到AdaBoost算法

        集成原理中,我们提到的boosting框架的思想是选择同质的基分类器,让基分类器之间按照顺序进行训练,并让每个基分类器都尝试去修正前面的分类。既然这样,怎样才能让同质的基分类器能够修正前面的分类?或者说怎样才能让同质的基分类器之间保持“互助”呢?
       AdaBoost的做法是,让前一个基分类器 f t − 1 ( x ) f_{t-1}(x) ft1(x)在当前基分类器 f t ( x ) f_t(x) ft(x)的训练集上的效果很差(和我们随机瞎猜一样),这样 f t ( x ) f_t(x) ft(x)就能修正 f t − 1 ( x ) f_{t-1}(x) ft1(x)的分类误差, f t ( x ) f_t(x) ft(x) f t − 1 ( x ) f_{t-1}(x) ft1(x)之间也就产生了“互助”。
       AdaBoost的具体做法是,通过提高被前一轮基分类器 f t − 1 ( x ) f_{t-1}(x) ft1(x)分类错误的样本的权值,降低被正确分类样本的权值,使得上一个基分类器 f t − 1 ( x ) f_{t-1}(x) ft1(x)在更新权值后的训练集上的错误率 ϵ t − 1 \epsilon_{t-1} ϵt1增大到0.5。(再在更新权值后的训练集上训练基分类器 f t ( x ) f_t(x) ft(x),那 f t ( x ) f_t(x) ft(x)必能和 f t − 1 ( x ) f_{t-1}(x) ft1(x)产生互助。)

2)AdaBoost算法

       下面我们在二分类问题上介绍AdaBoost算法。假如给定训练数据集 T = { ( x i , y i ) } i = 1 n T=\left\{ (x^i,y^i) \right\}^n_{i=1} T={ (xi,yi)}i=1n x i ∈ R d x^i\in R^d xiRd y i ∈ { − 1 , 1 } y^i\in\left\{ -1,1\right\} yi{ 1,1}
样本权值为 w i n w_i^n win,误差率 ϵ i \epsilon_i ϵi。在训练数据集 T T T上训练第一个基分类器 f 1 ( x ) f_1(x) f1(x),其错误率为 ϵ 1 , ϵ 1 < 0.5 \epsilon_1,\epsilon_1 < 0.5 ϵ1ϵ1<0.5(起码比瞎猜要好一些)
ϵ 1 = ∑ n w 1 n δ ( ( f 1 ( x n ) ≠ y ^ n ) Z 1 Z 1 = ∑ n w 1 n \epsilon_1=\frac{\sum_nw_1^n\delta((f_1(x^n)\neq {\hat y}^n)}{Z_1} \qquad Z_1 = \sum_nw_1^n ϵ1=Z1nw1nδ((f1(xn)=y^n)Z1=nw1n
        更新样本的权值(权值为 w 2 n w_2^n w2n)后的训练集为 T ′ {T}' T,使得 f 1 ( x ) f_1(x) f1(x) T ′ {T}' T分类效果等同于随机瞎猜( ϵ = 0.5 \epsilon=0.5 ϵ=0.5)。用数学语言表示即为
∑ n w 2 n δ ( ( f 1 ( x n ) ≠ y ^ n ) Z 2 = 0.5 Z 2 = ∑ n w 2 n \frac{\sum_nw_2^n\delta((f_1(x^n)\neq {\hat y}^n)}{Z_2}=0.5 \qquad Z_2 = \sum_nw_2^n Z2nw2nδ((f1(xn)=y^n)=0.5Z2=nw2n
        那么样本权重如何更新呢?AdaBoost具体做法是,减小 f 1 ( x ) f_1(x) f1(x)分类正确的样本的权值,权值除以一个常数 d d d,即 w 1 n d 1 \frac{w_1^n}{d_1} d1w1n;增大 f 1 ( x ) f_1(x) f1(x)分类错误的样本的权值,权值乘以一个常数 d d d,即 w 1 n d 1 w_1^nd_1 w1nd1。用数学语言表示即为
{ w 2 n = w 1 n d 1 i f   f 1 ( x n ) ≠ y ^ n ) w 2 n = w 1 n d 1 i f   f 1 ( x n ) = y ^ n ) \begin{cases} w_2^n = w_1^nd_1 \qquad if \ f_1(x^n)\neq {\hat y}^n)\\ w_2^n = \frac{w_1^n}{d_1} \qquad if \ f_1(x^n)= {\hat y}^n)\\ \end{cases} { w2n=w1nd1if f1(xn)=y^n)w2n=d1w1nif f1(xn)=y^n)
        下面我们再回到下式中来,

∑ n w 2 n δ ( ( f 1 ( x n ) ≠ y ^ n ) Z 2 = 0.5 \frac{\sum_nw_2^n\delta((f_1(x^n)\neq {\hat y}^n)}{Z_2}=0.5 Z2nw2nδ((f1(xn)=y^n)=0.5

其中, Z 2 = ∑ f 1 ( x n ) ≠ y ^ n w 1 n d 1 + ∑ f 1 ( x n ) = y ^ n w 1 n d 1 Z_2=\sum_{f_1(x^n)\neq {\hat y}^n} w_1^n d_1+\sum_{f_1(x^n)= {\hat y}^n} \frac{w_1^n}{d_1} Z2=f1(xn)=y^nw1nd1+f1(xn)=y^nd1w1n;当 f 1 ( x n ) ≠ y ^ n f_1(x^n)\neq {\hat y}^n f1(xn)=y^n时, w 2 n = w 1 n d 1 w_2^n = w_1^nd_1 w2n=w1nd1
        将上面两式带入得:

∑ f 1 ( x n ) ≠ y ^ n w 1 n d 1 ∑ f 1 ( x n ) ≠ y ^ n w 1 n d 1 + ∑ f 1 ( x n ) = y ^ n w 1 n d 1 = 0.5 \frac{\sum_{f_1(x^n)\neq {\hat y}^n} w_1^n d_1}{\sum_{f_1(x^n)\neq {\hat y}^n} w_1^n d_1+\sum_{f_1(x^n)= {\hat y}^n} \frac{w_1^n}{d_1}}=0.5 f1(xn)=y^nw1nd1+f1(xn)=y^nd1w1nf1(xn)=y^nw1nd1=0.5

∑ f 1 ( x n ) = y ^ n w 1 n d 1 = ∑ f 1 ( x n ) ≠ y ^ n w 1 n d 1 \sum_{f_1(x^n)= {\hat y}^n} \frac{w_1^n}{d_1}=\sum_{f_1(x^n)\neq {\hat y}^n} w_1^n d_1 f1(xn)=y^nd1w1n=f1(xn)=y^nw1nd1

又因为 ϵ 1 = ∑ f 1 ( x n ) ≠ y ^ n w 1 n Z 1 ⇒ ϵ 1 Z 1 = ∑ f 1 ( x n ) ≠ y ^ n w 1 n \epsilon_1=\frac{\sum_{f_1(x^n)\neq {\hat y}^n} w_1^n}{Z_1}\Rightarrow \epsilon_1Z_1=\sum_{f_1(x^n)\neq {\hat y}^n} w_1^n ϵ1=Z1f1(xn)=y^nw1nϵ1Z1=f1(xn)=y^nw1n
1 − ϵ 1 = ∑ f 1 ( x n ) = y ^ n w 1 n Z 1 ⇒ ( 1 − ϵ 1 ) Z 1 = ∑ f 1 ( x n ) = y ^ n w 1 n 1-\epsilon_1=\frac{\sum_{f_1(x^n)= {\hat y}^n} w_1^n}{Z_1}\Rightarrow (1-\epsilon_1)Z_1=\sum_{f_1(x^n)= {\hat y}^n} w_1^n 1ϵ1=Z1f1(xn)=y^nw1n(1ϵ1)Z1=f1(xn)=y^nw1n
因此,
∑ f 1 ( x n ) = y ^ n w 1 n d 1 = ∑ f 1 (

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值