機器學習教程 之 加性模型:GBDT退化爲AdaBoost原理

Gradient boosting是一種廣泛被用於迴歸、分類和排序任務的集成方法,於2001年被Friedman提出
該類算法通過以上一輪基學習器的誤差的負梯度爲訓練目標訓練本輪的基學習器,不斷降低集成模型在訓練集上的偏差實現高精度的集成
基於Gradient Boosting算法的學習器被稱爲Gradient Boosting Machine(GBM),如果說AdaBoost是boosting方法的開山之作,那麼GBM就是boosting方法的集大成者。GBM幾乎刷新了各個領域衆多數據集的精度記錄,有人認爲GBM是性能最好的機器學習方法,這種說法有點激進,但通常各類數據競賽贏家的策略裏也確實都會有這類算法的方法或者思想

由於集成學習方法在實際應用中出色的性能,我曾經寫過幾篇這方面的博文,關於集成學習及其boosting方法的

機器學習教程 之 Boosting 與 bagging:集成學習框架
人工智能裏的數學修煉 | AdaBoost的數學原理: 分佈更新推導
機器學習教程 之 集成學習算法: 深入刨析AdaBoost

還有一片關於 bagging 類隨機森林的
機器學習教程 之 隨機森林: 算法及其特徵選擇原理

關於GBDT的博客有
機器學習教程 之 梯度提升方法:GBDT及其擴展模型XGBoost
機器學習教程 之 梯度提升方法:GBDT處理分類問題
感興趣的朋友可以瞭解一下,可以幫助你們更好的瞭解集成學習的整體情況, 而這篇博客要講述的內容是,GBDT在何種情況下會退化爲AdaBoost

GBDT退化爲AdaBoost原理

Boosting在集成學習領域是非常耀眼的一類方法,其中又以AdaBoost和GBDT最爲突出,AdaBoost是Adaptive Boosting的簡稱,在人臉識別和處理不均勻數據相關領域得到廣泛引用;GBDT 更是被稱爲最強學習器,在各類數據競賽中得到追捧。這兩類方法都是集成模型,其構造方法是通過構造多個弱分類器來組成一個強分類器,且他們同屬於Boosting框架,那麼AdaBoost和GBDT有什麼區別呢?

這兩者的最大區別在於, AdaBoost不屬於梯度提升方法(Gradient Boosting),即它在構造集成模型的時候沒有用到梯度下降的思想,而是用的 Forward Stagewise Additive Modeling (分步前向加性模型,FSAM)。這個模型和方法在之前的機器學習教程 之 梯度提升方法:GBDT及其擴展模型XGBoost 已經詳細介紹過,爲了後面更好的描述,這裏簡單再說一下
集成模型的加性模型

Fm(x)=m=1Mαmfm(x)

等價於
Fm(x)=Fm1(x)+αmfm(x)

這個加性模型的求解,嚴格上要求我們同時找出所有的 alphamfm , 這是一個非常困難的問題,因此我們採用分步求解的方法,每一步找出一個合適的 alphaf 。假設我們已經得到了前 m1 個弱學習器,即 Fm1(x) , 我們針對損失函數 L 進行優化有
這裏寫圖片描述

如果損失函數爲平方差函數,則我們有
這裏寫圖片描述

這裏的 yiFm1(xi) 就是當前模型在數據上的殘差,可以看出,求解合適的 alphaf 就是在當前的殘差上擬合一個弱的分類器,而且損失函數還是平方差損失函數。這和GBDT選擇平方差損失函數時構造弱分類器的方法恰好一致
而如果損失函數是指數形式,即
這裏寫圖片描述

則有
這裏寫圖片描述

上式中的 wim1=exp(yi(Fm1(xi))) 和要求解的 alphamfm 無關,與樣本有關,可以理解爲樣本權重,因此,在這種情況下,構造弱分類器就是在對樣本設置權重後的數據上擬合,且損失函數還是指數形式,這也正式AdaBoost的形式。不過值得一提的是,最早的AdaaBoost並不是從這個思路推出來的,在AdaBoost提出5年後,人們纔開始從FSAM的角度來解釋AdaBoost的原理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章