AdaBoost 是英文"Adaptive Boosting"(自適應增強)的縮寫,是一種迭代演算法,其核心思想是針對同一個訓練集訓練不同的分類器 ( 弱分類器 ),然後把這些弱分類器集合起來,構成一個更強的最終分類器(強分類器)。AdaBoost 是 Adaptive Boosting(自適應)的縮寫,它的自適應在於:前一個基本分類器分錯的樣本會得到加強,加權後的樣本再次被用來訓練下一個基本分類器。同時,在每一輪中加入一個新的弱分類器,直到達到某個預定的足夠小的錯誤率,或者達到預先設定的最大迭代次數。
0x00弱分類器和分類器
當一個分類器的正確率不那麼高的時候,稱之為弱分類器,或者說該分類器的學習方法為若學習方法。與之對應的,存在強分類器和強學習方法。強學習方法的正確率很高。
常見的機器學習演算法都可以建立弱分類器,不過最經常使用的弱分類器是單層決策樹。單層決策樹又稱為決策樹樁(Decision Stump),即層數為1的決策樹。
下面距離得演算法使用單層決策樹作為弱分類器。每一個訓練資料都有一一個權值係數,注意不是弱
分類器的係數。建立最佳單層決策樹的依據就是:每個訓練資料在單層決策樹中的分類結果乘以自己的權值係數後相加的“和”最小,即分類誤差最小化。
0x01AdaBoost迭代演算法步驟
具體說來,整個AdaBoost迭代演算法分為以下3步。
①初始化訓練資料的權值分佈。如果有N個樣本,則每一一個訓練樣本最開始時都被賦予相同的權重: 1/N。
②訓練弱分類器。具體訓練過程中,如果某個樣本點已經被準確分類,那麼在構造下-個訓練集中,它的權重就被降低;相反,如果某個樣本點沒有被準確分類,那麼它的權重就得到提高。然後,權重更新過的樣本集被用於訓練下一一個分類器,整個訓練過程如此迭代進行下去。
③將各個訓練得到的弱分類器組合成強分類器。各個弱分類器的訓練過程結束後,加大分類誤差率小的弱分類器的權重,使其在最終的分類函式中起著較大的決定作用,而降低分類誤差率大的弱分類器的權重,使其在最終的分類函式中起著較小的決定作用。換言之,誤差率低的弱分類器在最終分類器中佔的權重較大,否則較小。
其執行過程為:訓練資料中的每個樣本,並賦予一開始相等的權重, 這些權重構成了向量D.首先在訓練資料上訓練一個弱分類器並計算分類器的錯誤率,然後在同一資料集上再次訓練弱分類器。在第二次訓練分類器中,會再次重新調整每個樣本的權重,其中第- -次分類錯誤的權重會提高,而第一次分類樣本的權重會降低。AdaBoost根據每個弱分類器的錯誤率進行計算,為每個分類器都配了一一個權重a.
計算出D後,AdaBoost又開始進行下一輪迭代,AdaBoost演算法會不斷地重複訓練和調正權重,知道訓練錯誤率為0,或者說弱分類器地數目達到使用者地指定值
上圖中,左邊是資料集,其中直方圖得不同寬度表示每個案例上得不同權重,在經過一個分類器之後,會通過圖形中得a(阿爾法)值進行加權,經過加權後再進行求和,從而得到輸出結果,
本作品採用《CC 協議》,轉載必須註明作者和本文連結
文章!!首發於我的部落格Stray_Camel(^U^)ノ~YO。