摘要:
繼前面的gbdt,xgboost,這裡是關於另外一個很有名的boosting演算法,Adaboost,Ada是Adaptive的縮寫(此外,有一種最佳化演算法adagrad,自適應梯度下降也是用的adaptive縮寫)。
同時由於網上對Adaboost的介紹的資料也很充足。在李航《統計學習方法》上面也有一個實際演算的例子。周志華《西瓜書》也對adaboost作了比較清晰的分析,所這裡只是簡單總結一下要點。 核心:
AdaBoost也是一類boosting的演算法,既然是boosting演算法所以核心也是符合這樣一個訓練過程:在訓練第n個分類器時,會利用前n-1個分類器的結果。具體來說在Adaboost裡面是通過前n-1個分類器的學習結果對第n個分類器即將學習的樣本權重進行調整,最後預測的結果為將n個學習得到的分類器進行加權求和後經過符號函數的映射。 演算法步驟:
輸入:
1.訓練集 D=(x1,y1),(x1,y1)...(xm,ym) D = ( x 1 , y 1 ) , ( x 1 , y 1 ) . . . ( x m , y m )
2.基學習演算法 Γ Γ
3.迭代次數 T T
過程:
1.初始化樣本權重 D1(w)={w11,w12,w13....w1m},w1i=1m D 1 ( w ) = { w 11 , w 12 , w 13 . . . . w 1 m } , w 1 i = 1 m
2. for t=1,2,3...T do: f o r t = 1 , 2 , 3... T d o :
3. ht=Γ(D,Dt) h t = Γ ( D , D t ) (利用基學習演算法擬合 Dt D t 權重下的資料集 D D )
4. ϵ=Px~Dt(ht(x)!=f(x)) ϵ = P x ~ D t ( h t ( x ) ! = f ( x ) ) (計算分類錯誤率,錯誤樣本數/總樣本數)
5. αt=12ln(1−ϵϵ) α t = 1 2 l n ( 1 − ϵ ϵ ) (計算當前分類器的權重,對數比率。比率是正確率/錯誤率)
6. w2i=1Ztwtie−yiαtht(xi) w 2 i = 1 Z t w t i e − y i α t h t ( x i ) ,其中規範因子 Zt=∑iwtie−yiαtht(xi) Z t = ∑ i w t i e − y i α t h t ( x i )
7. end for e n d f o r
輸出:
1. yi=sign(∑Ttαtht(xi)) y i = s i g n ( ∑ t T α t h t ( x i ) ) 要點小結: 1.adaboost的兩個權重值
從上面的演算法流程上看,adaboost的關鍵是計算兩個權重值。第一個是樣本的權重值,第二個是第n個分類器的權重值。
樣本的權重值除第一個分類器初始化為了 1m 1 m 外,其餘都是利用規範因子×樣本加權的指數損失數值。規範因子其實就是所有樣本的加權指數損失值的和。而所謂的加權指數損失值就是: wtieyiαtht(xi) w t i e y i α t h t ( x i ) ,其實就是樣本的權重×樣本在當前模型下的指數損失值
第二個權重就是每個分類器的權重,其直接由一個對數比率給出,比率是正確率與錯誤率的比值。 2.adaboost基本分類器選擇樹模型
當adaboost的基本分類器選擇樹模型時,需要特別注意的是,此時使用的樹是分類樹。這裡區別於gbdt和xgboost。gbdt和xgboost使用的樹是迴歸樹。