自適應(yīng)提升
提升方法通過前一個學(xué)習(xí)器所犯的錯誤來訓(xùn)練下一個學(xué)習(xí)器,是一種串行方法。關(guān)于提升算法有很多,最具代表性的是AdaBoost算法。
在集成學(xué)習(xí)-組合多學(xué)習(xí)器中介紹的Adaboost方法,樣本按概率被抽取作為訓(xùn)練子學(xué)習(xí)器的訓(xùn)練集。而每個子學(xué)習(xí)器根據(jù)前一子學(xué)習(xí)器的結(jié)果誤差更新樣本抽取概率,使被誤分類的實例在后面的訓(xùn)練中得到更多的重視。
分類問題中,Adaboost方法還可以采用全樣本數(shù)據(jù)訓(xùn)練每一個基學(xué)習(xí)器,根據(jù)前一子學(xué)習(xí)器的結(jié)果改變樣本數(shù)據(jù)的權(quán)重,來使被誤分類的實例得到更多重視。具體流程如下:
訓(xùn)練數(shù)據(jù)集,其中
,
。
1)初始化訓(xùn)練數(shù)據(jù)權(quán)值分布
2)對
??(a)使用具有權(quán)值的訓(xùn)練集學(xué)習(xí),得到基分類器
??(b)計算在訓(xùn)練集上的分類誤差率
??(c)計算的系數(shù)
??(d)更新訓(xùn)練集的權(quán)重分布
是規(guī)范化因子
3)構(gòu)建基本分類器的線性組合
得到最終分類器
回歸問題情況下,則對上一個學(xué)習(xí)器擬合結(jié)果的殘差進行學(xué)習(xí),得到后面的學(xué)習(xí)器。
基學(xué)習(xí)器根據(jù)具體問題選定。一般常見的是提升樹算法,adaboost的最決策樹一般被認為是最好的機器學(xué)習(xí)算法之一。
而針對不同問題的提升樹,主要區(qū)別在于使用的損失函數(shù),包括回歸問題的平方誤差,分類問題的指數(shù)誤差,或一般決策問題的一般損失函數(shù)。
梯度提升
提升樹在學(xué)習(xí)過程中,當(dāng)損失函數(shù)是平方損失和指數(shù)損失時,計算相對簡單。但對一般損失函數(shù),往往每一步優(yōu)化不那么容易?;诖耍荻忍嵘椒?,通過學(xué)習(xí)前一個子學(xué)習(xí)器殘差的負梯度,得到后面的學(xué)習(xí)器。典型的就是GBDT算法(回歸樹)。
訓(xùn)練數(shù)據(jù)集,其中
,
,損失函數(shù)
,
為回歸樹。
1)初始化
2)對
??(a)對,計算
??(b)對擬合一個回歸樹,得到第m棵樹,共有
個葉子結(jié)點,其葉子結(jié)點區(qū)域為
,
。
??(c)對,計算
??(d)更新。
3)得到最終回歸樹
對比
推薦GBDT樹的深度一般為6,對比DecisionTree/RandomForest需要把樹的深度調(diào)到15或更高。原因在于Bagging主要關(guān)注降低方差,并行地訓(xùn)練很多不同的分類器的目的就是降低這個方差。因此它在不剪枝的決策樹、神經(jīng)網(wǎng)絡(luò)等學(xué)習(xí)器上效用更為明顯。
Boosting主要關(guān)注降低偏差,因此Boosting能基于泛化性能相當(dāng)弱的學(xué)習(xí)器構(gòu)建出很強的集成。Boosting來說,每一步我們都會在上一輪的基礎(chǔ)上更加擬合原數(shù)據(jù),所以可以保證偏差,所以對于每個基分類器來說,問題就在于如何選擇variance更小的分類器,即更簡單的分類器,所以我們選擇了深度很淺的決策樹。