纸上得来终觉浅,觉知此事要躬行。综上,我什莫都不懂.这仅仅是个人的学习防忘笔记
关于 Adaboost 的算法描述其实很简单,有趣的是的它的误差分析:
其中
ϵ t = P r { i ∼ D t } [ h t ( x i ) ≠ y i ] = ∑ D t ( i ) I ( h t ( x i ) ≠ y i ) α t = 2 − 1 log ( 1 − ϵ t ϵ t ) \begin{aligned} \epsilon_t &= Pr_\{i\sim D_t\}[h_t(x_i)\ne y_i]\\ &=\sum D_t(i)I(h_t(x_i)\ne y_i)\\ \alpha_t &= 2^{-1}\log (\frac{1-\epsilon_t}{\epsilon_t}) \end{aligned} ϵtαt=Pr{i∼Dt}[ht(xi)̸=yi]=∑Dt(i)I(ht(xi)̸=yi)=2−1log(ϵt1−ϵt)
PS : 稍后会证明,为什么, α t \alpha_t αt 取这个值
第一个不等式就不说了,分析,equal 和not equal 两种情况就好,我们来看第二个等式。
其实第二个等式非常简单,我们只需要将 D t D_t Dt 的递推式展开就好了:
D 2 ( i ) = m − 1 exp ( − α 1 y i h 1 ( x i ) ) Z 1 , Z t i s n o r m l i z e t e r m , a c o n s t , f o r i ∈ 1 , . . . , T D 3 ( i ) = D 2 ( i ) exp ( − α 2 y i h 2 ( x i ) ) Z 2 = m − 1 exp ( − y i ( α 1 h 1 ( x i ) + α 2 h 2 ( x i ) ) ) Z 1 Z 2 D T + 1 = m − 1 exp ( − y i ( ∑ α t h t ( x i ) ) ) ∏ t Z t b e c o u s e ∑ i D t ( i ) = 1 , s u m a t l e f t t e r m a n d r i g h t t e r m ∏ t Z t = ∑ i m − 1 exp ( − y i ( ∑ α t h t ( x i ) ) ) \begin{aligned} D_2(i)&=\frac{m^{-1}\exp (-\alpha_1y_ih_1(x_i))}{Z_1},Z_t\ is\ normlize\ term,a \ const,for\ i \in {1,...,T}\\ D_3(i)&=\frac{D_2(i)\exp(-\alpha_2y_ih_2(x_i))}{Z_2}\\ &=\frac{m^{-1}\exp(-y_i(\alpha_1h_1(x_i)+\alpha_2h_2(x_i)))}{Z_1Z_2}\\ D_{T+1}&=\frac{m^{-1}\exp(-y_i(\sum \alpha_th_t(x_i)))}{\prod_t Z_t}\\ becouse \sum_i D_t(i)=1,& sum\ at\ left\ term\ and\ right\ term\\ \prod_t Z_t&=\sum_i m^{-1}\exp(-y_i(\sum \alpha_th_t(x_i))) \end{aligned} D2(i)D3(i)DT+1becousei∑Dt(i)=1,t∏Zt=Z1m−1exp(−α1yih1(xi)),Zt is normlize term,a const,for i∈1,...,T=Z2D2(i)exp(−α2yih2(xi))=Z1Z2m−1exp(−yi(α1h1(xi)+α2h2(xi)))=∏tZtm−1exp(−yi(∑αtht(xi)))sum at left term and right term=i∑m−1exp(−yi(∑αtht(xi)))
好这里表明这个 training 的error 的上界仅仅与 Z t Z_t Zt 相关,而
Z t = ∑ D t ( i ) exp ( − y i α t h t ( x i ) ) Z_t=\sum D_t(i)\exp(-y_i\alpha_th_t(x_i)) Zt=∑Dt(i)exp(−yiαtht(xi))
因此我们相当于需要优化 α t \alpha_t αt,
其实, y i h t ( x i ) = − 1 , 1 y_ih_t(x_i)={-1,1} yiht(xi)=−1,1,因此我们可以对这个式子求个期望,由于 ϵ t = P r { i ∼ D t } [ h t ( x i ) ≠ y i ] \epsilon_t = Pr_\{i\sim D_t\}[h_t(x_i)\ne y_i] ϵt=Pr{i∼Dt}[ht(xi)̸=yi],所以
Z t = ∑ D t ( i ) ( ϵ t exp ( α t ) + ( 1 − ϵ t ) ( exp ( − α t ) ) ) = ϵ t exp ( α t ) + ( 1 − ϵ t ) ( exp ( − α t ) ) \begin{aligned} Z_t&=\sum D_t(i)(\epsilon_t\exp(\alpha_t)+(1-\epsilon_t)(\exp(-\alpha_t)))\\ &=\epsilon_t\exp(\alpha_t)+(1-\epsilon_t)(\exp(-\alpha_t)) \end{aligned} Zt=∑Dt(i)(ϵtexp(αt)+(1−ϵt)(exp(−αt)))=ϵtexp(αt)+(1−ϵt)(exp(−αt))
将 Z t Z_t Zt 对 α t \alpha_t αt 求导,并设为0,可得, α t = 2 − 1 log ( 1 − ϵ t ϵ t ) \alpha_t=2^{-1}\log(\frac{1-\epsilon_t}{\epsilon_t}) αt=2−1log(ϵt1−ϵt)
因此我们可以得到一个更有趣的bound
其中 γ t = 1 2 − ϵ t \gamma_t=\frac{1}{2}-\epsilon_t γt=21−ϵt , 假设这个base learner,比random 要好一些,那么 γ t ∈ [ 0 , . 5 ] \gamma_t \in[0,.5] γt∈[0,.5],也就是说 ∃ γ > 0 , γ t > γ f o r t ∈ 1 , . . . , T \exists \gamma>0,\gamma_t>\gamma\ for\ t \in{1,...,T} ∃γ>0,γt>γ for t∈1,...,T
所以说 ∏ Z t ≤ exp ( − 2 T γ 2 ) \prod Z_t\le \exp(-2T\gamma^2) ∏Zt≤exp(−2Tγ2)
也就是说,adaboost 的过程其实是在找一个 f = ∑ α t h t f=\sum \alpha_t h_t f=∑αtht 即若学习器的线性组合,其中找 α t \alpha_t αt 的过程其实是 coordinate-descent,并且training error 一定会收敛
接下来谈论over-fitting 的问题,这问题有趣的地方是作者证明了一个届,表明 adaboost 不会出现over fitting,至于怎么证明的我就没管了
我原本是想找一下,如何将 adaboost 方法运用到回归问题,结果就找到了这个 Gradient boosting,这其实是一种 framework
可是我个人对它没有太多的intuition 和算法推导,所以这里就不写了,详细类容可见文末paper,以及我参考过的zhihu link
reference
版权声明
本作品为作者原创文章,采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议
作者: taotao
转载请保留此版权声明,并注明出处