AdaBoost(Adaptive Boosting)算法詳解

AdaBoost(Adaptive Boosting)算法詳解

  • 主要內容
    • AdaBoost算法詳解
    • AdaBoost算法實例講解

1、AdaBoost算法詳解
  假設有一位患者,存在某些症狀。患者選擇諮詢多位醫生,而不是一位。假設患者根據醫生先前的診斷準確率,對每位醫生的診斷賦予一個權重。然後,這些加權診斷的組合作爲最終的診斷。這就是提升的基本思想。在提升(boosting)方法中,權重賦予每個訓練元組。迭代地學習T 個分類器。學習得到分類器Mt 之後,更新權重,使得其後的分類器Mt+1 “更關注”Mt 錯誤分類的訓練元組。最終提升的分類器M 組合每個分類器的表決,其中每個分類器投票的權重是其準確率的函數。
  Adaboost(Adaptive Boosting)是一種流行的提升算法。假設我們想提升某種學習方法的準確率。給定數據集S ,它包含n 個元組(X1,y1),(X2,y2),...,(Xn,yn) ,其中yi 是數據對象Xi 的類標號。開始時,Adaboost對每個訓練元組賦予相等的權重1/n 。組合分類器包含T 個基本分類器。針對第t 個分類器Mt :首先,從S 中的元組進行抽樣,形成大小爲n 的訓練集St ,此處抽樣方式爲有放回的抽樣,抽樣過程中,每個元組被選中的機會由它的權重決定;然後,根據St 導出(訓練出)分類器Mt ,使用St 檢驗分類器Mt 的分類誤差,並計算該分類器的“表決權”的權重;最後,訓練元組的權重根據分類器Mt 的分類情況調整。
  如果元組被錯誤分類,則它的權重增加。如果元組被正確分類,則它的權重減少。元組的權重反映元組被分類的困難程度——權重越高,被錯誤分類的可能性越高。然後,使用這些權重,爲下一輪分類器(下一個分類器)產生訓練樣本。其基本的思想是,當建立分類器時,希望它更關注上一輪分類器(上一個分類器)錯誤分類的元組。整個分類過程中,某些分類器對某些“困難”元組的分類效果可能比其他分類器好。這樣,建立了一個互補的分類器系列。
  AdaBoost算法構建組合分類器的步驟如下:

算法:AdaBoost(Adaptive Boosting)
輸入:
    S:類標記的訓練元組集合;
    T:輪數(輪數即爲分類器(分類方案)個數。第t輪分類,相當於第t個分類器進行分類,相當於訓練集第t種分類方案);
    一個基礎分類算法;
輸出:
    一個組合分類器模型:包含T個分類器,以及分類器的表決權的權重,即公式(5);
方法:
    將S中每個元組的權重初始化爲1/n;
    for t=1 to T do
        根據元組的權重從S中有放回抽樣,得到St;
        根據St導出(訓練出)分類器Mt;
        根據公式(1)計算Mt的錯誤率error(Mt);
        if error(Mt)>0.5 then
            轉向步驟11;
        endif
        根據公式(4)計算該分類器的表決權的權重;
        for St的每個被正確分類的元組 do
            根據公式(2)更新正確分類的元組的權重;
        根據公式(3)規範化每個元組的權重;
        endfor
    endfor

t 個分類器Mt 的錯誤分類率計算如下:

error(Mt)=i=1nwti×err(Xi)     (1)
其中,err(Xi) 是元組Xi 被錯誤分類的統計量:若Xi 被錯誤分類,則err(Xi)=1 ;若Xi 被正確分類,則err(Xi)=0wti 爲元組Xi 在第t 輪分類過程中的權重。若分類器Mt 的準確率太差,即error(Mt)>0.5 ,則丟棄它,並重新產生新的訓練集St ,並由此導出新的分類器Mt
   Mt 的錯誤分類率影響訓練元組的權重的更新。如果第i 元組在第t 輪正確分類,則正確分類的元組的權重變化爲:
wt+1i=wti×error(Mt)1error(Mt)     (2)
   一旦所有正確分類元組的權重被更新,就對數據集S 中所有元組的權重規範化,使得他們的和與以前一樣。爲了規範化權重,將它乘以舊權重之和,除以新權重之和,即:
wt+1i=wt+1i×ni=1wtini=1wt+1i     (3)
  以上過程,實現錯誤分類的權重增加,正確分類的元組權重減少。
  注:關於元組權重的更新,不同文獻對其描述略有不同,周志華《機器學習》將其描述爲:wt+1i=wti×exp(Wt)Ztwt+1i=wti×exp(Wt)Zt 。此處採用的是第3版《數據挖掘概念與技術》中的描述。
  對於組合分類器最終的分類結果,每個分類器有一個“表決權”(即表決元組屬於哪個類別),對每個分類器的“表決權”賦予一個權重。分類器的錯誤率越低,則準確率越高,則它的表決權的權重越大。分類器Mt 的表決權的權重爲
Wt=log1error(Mt)error(Mt)     (4)
因此,組合分類器可表示爲:
M(X)=sign(t=1TWtMt(X))     (5)
對於每個類別CkCC 爲所有類別構成的集合),對所有將待分類對象X 劃分至Ck 的分類器的權重(表決權的權重)求和。具有最大權重和的類別,即爲X 所屬類別,即max(M(X)) 所對應的類別。
  注:關於公式(4),不同文獻對其描述略有不同,周志華《機器學習》將其描述爲:Wt=12ln1error(Mt)error(Mt) 。此處採用的是第3版《數據挖掘概念與技術》中的描述。
   一旦提升完成,如何使用分類器的組合預測元組X 的類標號?具體流程如下:
使用組合分類器對待分類元組X分類:

將每個類別的權重初始化爲0for t=1 to T do     //對所有基本分類器
    分類器的表決權的權重加至劃分X所屬類別的權重上,即公式(5);
endfor
返回具有最大權重的類別;

2、AdaBoost算法實例講解
  關於AdaBoost算法實例講解,網上大致有兩個版本:一個是直接摘抄的李航《統計學學習方法》中關於AdaBoost算法的描述,另一個是大數據經典算法AdaBoost講解的版本。後者關於元組權重更新以及分類器表決權權重的公式,採用周志華《機器學習》的描述。同時,後者關於AdaBoost算法的實例講解,非常清晰,感興趣的讀者(初次接觸AdaBoost算法的讀者)可以嘗試閱讀。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章