AdaBoost(Adaptive Boosting)算法詳解
- 主要內容
- AdaBoost算法詳解
- AdaBoost算法實例講解
1、AdaBoost算法詳解
假設有一位患者,存在某些症狀。患者選擇諮詢多位醫生,而不是一位。假設患者根據醫生先前的診斷準確率,對每位醫生的診斷賦予一個權重。然後,這些加權診斷的組合作爲最終的診斷。這就是提升的基本思想。在提升(boosting)方法中,權重賦予每個訓練元組。迭代地學習
Adaboost(Adaptive Boosting)是一種流行的提升算法。假設我們想提升某種學習方法的準確率。給定數據集
如果元組被錯誤分類,則它的權重增加。如果元組被正確分類,則它的權重減少。元組的權重反映元組被分類的困難程度——權重越高,被錯誤分類的可能性越高。然後,使用這些權重,爲下一輪分類器(下一個分類器)產生訓練樣本。其基本的思想是,當建立分類器時,希望它更關注上一輪分類器(上一個分類器)錯誤分類的元組。整個分類過程中,某些分類器對某些“困難”元組的分類效果可能比其他分類器好。這樣,建立了一個互補的分類器系列。
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
第
注:關於元組權重的更新,不同文獻對其描述略有不同,周志華《機器學習》將其描述爲:
對於組合分類器最終的分類結果,每個分類器有一個“表決權”(即表決元組屬於哪個類別),對每個分類器的“表決權”賦予一個權重。分類器的錯誤率越低,則準確率越高,則它的表決權的權重越大。分類器
注:關於公式(4),不同文獻對其描述略有不同,周志華《機器學習》將其描述爲:
一旦提升完成,如何使用分類器的組合預測元組
使用組合分類器對待分類元組X分類:
將每個類別的權重初始化爲0;
for t=1 to T do //對所有基本分類器
分類器的表決權的權重加至劃分X所屬類別的權重上,即公式(5);
endfor
返回具有最大權重的類別;
2、AdaBoost算法實例講解
關於AdaBoost算法實例講解,網上大致有兩個版本:一個是直接摘抄的李航《統計學學習方法》中關於AdaBoost算法的描述,另一個是大數據經典算法AdaBoost講解的版本。後者關於元組權重更新以及分類器表決權權重的公式,採用周志華《機器學習》的描述。同時,後者關於AdaBoost算法的實例講解,非常清晰,感興趣的讀者(初次接觸AdaBoost算法的讀者)可以嘗試閱讀。