从优化角度推导Adaboost
1 回顾AdaBoost算法流程
Adaboost基本原理是将多个弱分类器加权组合,最终形成一个强分类器。算法中有两个重要的权重:样本权重和分类器权重。算法每一次迭代中只投入一个弱分类器进行训练,当前加权样本上计算得到误差,并通过误差来计算此分类器的权重,并更新样本的权重
1.1 模型参数
样本: { ( x 1 , y 1 ) , ( x 2 , y 2 ) . . . ( x n , y n ) } \{(x_1,y_1),(x_2,y_2)...(x_n,y_n)\} { (x1,y1),(x2,y2)...(xn,yn)},其中 y i ∈ { − 1 , 1 } y_i\in\{-1,1\} yi∈{ −1,1}
分类器: { k 1 , k 2 . . . k l } \{k_1,k_2...k_l\} { k1,k2...kl},其中 k j ( x i ) ∈ { − 1 , 1 } k_j(x_i)\in\{-1,1\} kj(xi)∈{ −1,1}
样本初始权重: w ( 1 ) = ( w 1 ( 1 ) , w 2 ( 1 ) . . . w n ( 1 ) ) = ( 1 , 1 , . . . , 1 ) w^{(1)}=(w^{(1)}_1,w^{(1)}_2...w^{(1)}_n)=(1,1,...,1) w(1)=(w1(1),w2(1)...wn(1))=(1,1,...,1)
1.2 算法流程
假设我们进行T次迭代(注:迭代次数不一定要等于分类器数量),则
对于 t = 1,2…,T
- 选择使得误差 E t E_t Et 最小的分类器 k,并设其为 C t C_t Ct
E t = ∑ i = 1 n w i ( t ) ∑ j = 1 n w j ( t ) I { y i ≠ C t ( x i ) } E_t = \sum\limits^{n}_{i=1}\frac{w^{(t)}_i}{\sum\limits^{n}_{j=1}w^{(t)}_j}I\{y_i\neq C_t(x_i)\} Et=i=1∑nj=1∑nwj(t)wi(t)I{ yi̸=Ct(xi)} - 通过误差可以计算该分类器的权重
a t = 1 2 l n ( 1 − E t E t ) a_t=\frac{1}{2}ln(\frac{1-E_t}{E_t}) at=21ln(Et1−Et) - 接下来更新样本权重
w i ( t + 1 ) = w i ( t ) ∑ j = 1 n w j ( t ) e x p { 2 a t I { y i ≠ C t ( x i ) } } w^{(t+1)}_i=\frac{w^{(t)}_i}{\sum\limits^{n}_{j=1}w^{(t)}_j}exp\{2a_t I\{y_i\neq C_t(x_i)\}\} wi(t+1)=j=1∑nwj(t)wi(t)exp{ 2atI{ yi̸=Ct(xi)}}
end
1.3 算法结果
最终得到弱分类器的加权和
f ( x i ) = ∑ t = 1 T a t C t ( x i ) f(x_i)=\sum\limits^{T}_{t=1}a_tC_t(x_i) f(xi)=t=1∑TatCt(xi)
2 从优化角度推导Adaboost
2.1 推导过程
2.1.1 第一次迭代
首先我们考虑Adaboost第一次迭代,对于分类器的选择和权重的确定,可以化为一个简单的优化问题:
y ∈ { − 1 , 1 } , 设 分 类 器 f ( x i ) = a 1 C 1 ( x i ) , 其 中 C 1 ( x i ) ∈ { − 1 , 1 } y\in\{-1,1\},设分类器f(x_i)=a_1C_1(x_i),其中C_1(x_i)\in\{-1,1\} y∈{
−1,1},设分类器f(xi)=a1C1(xi),其中C1(xi)∈{
−1,1}
损 失 函 数 : L ( y i , f ( x i ) ) = e − y i f ( x i ) 损失函数: L(y_i,f(x_i))=e^{-y_if(x_i)} 损失函数:L(yi,f(xi))=e−yif(xi)
总 误 差 为 : L ( a 1 , C 1 ) = ∑ i = 1 n e − y i f ( x i ) = ∑ i = 1 n e − y i a 1 C 1 ( x i ) 总误差为:L(a_1,C_1)=\sum\limits^{n}_{i=1}e^{-y_if(x_i)}=\sum\limits^{n}_{i=1}e^{-y_ia_1C_1(x_i)} 总误差为:L(a1,C1)=i=1∑ne−yif(xi)=i=1∑ne−yia1C1(xi)
则我们目标是求解优化问题: ( a 1 ^ , C 1 ^ ) = a r g m i n a 1 , C 1 L ( a 1 , C 1 ) (\hat{a_1},\hat{C_1})=argmin_{a_1,C_1}L(a_1,C_1) (a1^,C1^)=argmina1,C1L(a1,C1)
证明:
L ( a 1 , C 1 ) = ∑ i = 1 n e − y i a 1 C 1 ( x i ) L(a_1,C_1)=\sum\limits^{n}_{i=1}e^{-y_ia_1C_1(x_i)} L(a1,C1)=i=1∑ne−yia1C1(xi)
= ∑ i = 1 n e − a 1 I { y i = C 1 ( x i ) } + ∑ i = 1 n e a 1 I { y i ≠ C 1 ( x i ) } ( ∗ ) =\sum\limits^{n}_{i=1}e^{-a_1}I\{y_i=C_1(x_i)\}+\sum\limits^{n}_{i=1}e^{a_1}I\{y_i\neq C_1(x_i)\} (*) =i=1∑ne−a1I{
yi=C1(xi)}+i=1∑nea1I{
yi̸=C1(xi)} (∗)
= ∑ i = 1 n e − a 1 I { y i = C 1 ( x i ) } + ∑ i = 1 n e − a 1 I { y i ≠ C 1 ( x i ) } =\sum\limits^{n}_{i=1}e^{-a_1}I\{y_i=C_1(x_i)\}+\sum\limits^{n}_{i=1}e^{-a_1}I\{y_i\neq C_1(x_i)\} =i=1∑ne−a1I{
yi=C1(xi)}+i=1∑ne−a1I{
yi̸=C1(x<