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