跳至內容

AdaBoost

出自Taiwan Tongues 台語維基
於 2025年8月24日 (日) 04:56 由 TaiwanTonguesApiRobot留言 | 貢獻 所做的修訂 (從 JSON 檔案批量匯入)

(差異) ←上個修訂 | 已批准修訂 (差異) | 最新修訂 (差異) | 下個修訂→ (差異)

AdaBoost為英文 " Adaptive Boosting "(自適應增強)的縮寫,是一種機器學習方法,由約阿夫 ・ 搪著因德佮羅伯特 ・ 沙皮而已提出。AdaBoost 方法的自適應佇咧:前一个分類器分毋著的原本會予人用來訓練後一个分類器。AdaBoost 方法對於噪音聲數據佮異常數據真敏感。但是一寡問題中,AdaBoost 方法相對大多數其他學習算法來講,袂蓋簡單出現過擬合現象。AdaBoost 方法內底使用的分類器可能有較弱(比如講出現真大的錯誤率), 但只要伊的分類效果隨機較好咧(譬如兩類問題分類錯誤率略細佇咧零友五), 就會當改善最終得著的模型。錯誤率傷懸機分類器的弱分類器嘛是有路用的,因為佇最終得著的濟个分類器的線性組合內底,會當予𪜶負係數,仝款嘛會當提升分類效果。

AdaBoost 方法是一種迵天代算法,佇每一輪內底加入一个新的弱分類器,一直到達到某一个預定的夠細的錯誤率。每一个訓練樣本攏予一个權重,表明伊予我某一个分類器選入訓練集的概率。若某一个本點已經予人準確地分類,按呢佇咧構造後一个訓練集中,伊予人選著的概率就予人降低;相反,若某一个樣本點無予人準確地分類,遐爾仔伊的權重就得著提懸。通過按呢的方式,AdaBoost 方法能「聚焦於」彼較歹分(較富信息)的樣本上。其實這馬具體,上早令逐項本的權重攏相等,對著頭 k 迵天代操作,阮就根據遮的權重來選取樣本點,進一步訓練分類器 Ck。然後就根據這个分類器,來提高予伊分毋著的樣本的權重,而且也降低予正確分類的樣本權重。然後,權重更新過的樣本集被用佇訓練後一个分類器 Ck。迵天規个訓練的過程迵天代地進行落去。

AdaBoost 算法

用 xi 和 yi 表示原始樣本集 D 的款本點佮𪜶的類標。用 Wk ( i ) 表示第 k 迵天代的時陣全體樣本的權重分布。按呢就有如下所示的 AdaBoost 算法:

一 . 初初化:輸入參數為訓練集 D={ x 一,y 一,. . .,xn,yn },上大循環的次數 kmax,採樣權重 Wk ( i )=一 / n,i=一,. . .,n; 二 . 迵天代計數器 k 準做零; 三 . 計數器 k 自增一; 四 . 使用 Wk ( i ) 採樣權重對弱學習器 Ck 進行訓練; 五 . 對弱學習器 Ck 的訓練結果進行評估閣記錄進誤差矩陣 Ek 中; 六 . $ \ alpha _ { k } \ gets { \ tfrac { 一 } { 二 } } \ ln { \ frac { 一-E _ { k } } { E _ { k } } } $ 七 . $ W _ { k + 一 } ( i ) \ gets { \ dfrac { W _ { k } ( i ) } { Z _ { k } } } \ times { \ begin { cases } e ^ {-\ alpha _ { k } } , & { \ mbox { if } } h _ { k } ( x ^ { i } )=y _ { i } \ \ e ^ { \ alpha _ { k } } , & { \ mbox { if } } h _ { k } ( x ^ { i } ) \ neq y _ { i } \ end { cases } } $ 八 . 當 k=kmax 時停止訓練九 . 倒轉來結果 Ck 和 αk,k=一,. . .,kmax(紮權值分類器的總體) 十 .結束

注意第五行中,當前權重分布著愛考慮著分類器 Ck 的誤差率。佇第七行中,Zk 只是一个歸一化係數,予得 Wk ( i ) 會當代表一个真正的分佈,而且 hk ( xi ) 是分量分類器 Ck 予出的對任仝款本點 xi 的標記(+ 一抑是-一), hk ( xi )=yi 時,樣本予正確分類。第八行迵天代停止條件會使予人換做判斷當前誤差率敢有較細一个阻值。

上尾仔的總體分類的判決會使使用各分量分類器加權平均來得著:

$ $ g ( x )=[\ sum _ { k=一 } ^ { k _ { max } } \ alpha _ { k } h _ { k } ( x )] $ $

按呢乎,最後對分類結果的判定規則是:

$ $ H ( x )={ \ textrm { sign } } \ left ( g ( x ) \ right ) $ $

軟體實現

  • AdaBoost and the Super Bowl of Classifiers-A Tutorial on AdaBoost .
  • Adaboost in C + + , an implementation of Adaboost in C + + and boost by Antonio Gulli
  • icsiboost , an open source implementation of Boostexter
  • JBoost , a site offering a classification and visualization package , implementing AdaBoost among other boosting algorithms .
  • MATLAB AdaBoost toolbox . Includes Real AdaBoost , Gentle AdaBoost and Modest AdaBoost implementations .
  • A Matlab Implementation of AdaBoost
  • Multi-threaded MATLAB-compatible implementation of Boosted Trees
  • milk for Python implements AdaBoost .
  • MPBoost + + , a C + + implementation of the original AdaBoost . MH algorithm and of an improved variant , the MPBoost algorithm .
  • multiboost , a fast C + + implementation of multi-class / multi-label / multi-task boosting algorithms . It is based on AdaBoost . MH but also implements popular cascade classifiers and FilterBoost along with a batch of common multi-class base learners(stumps , trees , products , Haar filters)。
  • NPatternRecognizer , a fast machine learning algorithm library written in C # . It contains support vector machine , neural networks , bayes , boost , k-nearest neighbor , decision tree , . . . , etc .
  • OpenCV implementation of several boosting variants
  • Into contains open source implementations of many AdaBoost and FloatBoost variants in C + + .
  • Mallet Java implementation .
  • adabag adabag : An R package for binary and multiclass Boosting and Bagging .
  • Scikit-learn Python implementation .

參考書目