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