算法概述
AdaBoost是英文AdaptiveBoosting(自適應增強)的縮寫,由YoavFreund和RobertSchapire在1995年提出。
AdaBoost的自適應在于前一個基本分類器分類錯誤的樣本的權重會得到加強,加強后的全體樣本再次被用來訓練下一個基本分類器。同時,在每一輪訓練中加入一個新的弱分類器,直到達到某個預定的足夠小的錯誤率或達到預先指定的最大迭代次數(shù)時停止訓練。
AdaBoost算法是一種集成學習的算法,其核心思想就是對多個機器學習模型進行組合形成一個精度更高的模型,參與組合的模型稱為弱學習器。
算法原理
AdaBoost的核心思想是針對同一訓練集訓練不同的分類器(弱分類器),然后把這些弱分類器集合起來,構成一個更強大的最終分類器(強分類器)。也就是通過一些手段獲得多個弱分類器,將它們集成起來構成強分類器,綜合所有分類器的預測得出最終的結果。
AdaBoost算法本身是通過改變數(shù)據(jù)分布來實現(xiàn)的,它根據(jù)每次訓練集中每個樣本的分類是否正確,以及上次的總體分類的準確率,來確定每個樣本的權值。將修改過權值的新數(shù)據(jù)集送給下層分類器進行訓練,最后將每次訓練得到的分類器最后融合起來,作為最后的決策分類器。
算法優(yōu)化
權值更新方法的改進
在實際訓練過程中可能存在正負樣本失衡的問題,分類器會過于關注大容量樣本,導致分類器不能較好地完成區(qū)分小樣本的目的。此時可以適度增大小樣本的權重使重心達到平衡。在實際訓練中還會出現(xiàn)困難樣本權重過高而發(fā)生過擬合的問題,因此有必要設置困難樣本分類的權值上限。
訓練方法的改進
AdaBoost算法由于其多次迭代訓練分類器的原因,訓練時間一般會比別的分類器長。對此一般可以采用實現(xiàn)AdaBoost的并行計算或者訓練過程中動態(tài)剔除掉權重偏小的樣本以加速訓練過程。
多算法結合的改進
除了以上算法外,AdaBoost還可以考慮與其它算法結合產(chǎn)生新的算法,如在訓練過程中使用SVM算法加速挑選簡單分類器來替代原始AdaBoost中的窮舉法挑選簡單的分類器。
以上內容為大家介紹了Python機器學習之AdaBoost算法,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。http://m.2667701.com/