【機器學習基礎】GBDT--梯度提升樹例項分析完全解讀

杉杉不要bug發表於2019-05-08

GBDT是整合學習中的一員,想要理解梯度提升,必須先理解什麼是提升樹,想理解提升樹要了解什麼是提升方法。

提升方法本身是採用了加法模型(基函式的線性組合)和前向分步演算法,從弱學習演算法出發,反覆學習,得到一系列弱學習器,然後通過組合弱學習器得到強學習器。當每個弱學習器是CART樹的時候,就是提升樹。對於迴歸問題一般採用平方誤差作為損失函式,分類問題採用指數損失函式,一般問題用一般的損失函式。

一、提升樹

每一步生成一棵樹,不斷優化當前的學習器,用優化後的學習器學習到的值,和原始標籤資料計算殘差,繼續將殘差作為下一棵樹的初始資料進行擬合,每一棵樹都是CART迴歸樹,因為每次迭代擬合的目標是殘差,是連續值。

【機器學習基礎】GBDT--梯度提升樹例項分析完全解讀
迴歸問題中提升樹的生成方法:

【機器學習基礎】GBDT--梯度提升樹例項分析完全解讀
【機器學習基礎】GBDT--梯度提升樹例項分析完全解讀
二、梯度提升

那麼為什麼要用負梯度呢?對於損失函式是平方誤差的迴歸問題,我們可以簡單優化,但是對於一般的損失函式用損失函式的負梯度來擬合本輪損失的近似值,利用最速下降法的近似方法來起到和迴歸問題中的殘差近似的效果。

【機器學習基礎】GBDT--梯度提升樹例項分析完全解讀
三、梯度提升例項

【機器學習基礎】GBDT--梯度提升樹例項分析完全解讀
【機器學習基礎】GBDT--梯度提升樹例項分析完全解讀
【機器學習基礎】GBDT--梯度提升樹例項分析完全解讀
四、梯度提升例項

用一個稍微複雜一點點的例子來說明一下,上個例子中只有一個特徵,不易理解。要求最大深度為3,樹5棵。

【機器學習基礎】GBDT--梯度提升樹例項分析完全解讀
呼叫sklearn跑出來的5棵樹如下圖,

初始值,f0(x)=1.475

第一棵樹:

【機器學習基礎】GBDT--梯度提升樹例項分析完全解讀
第二棵樹:
【機器學習基礎】GBDT--梯度提升樹例項分析完全解讀
第三棵樹:
【機器學習基礎】GBDT--梯度提升樹例項分析完全解讀
第四棵樹:
【機器學習基礎】GBDT--梯度提升樹例項分析完全解讀
第五棵樹:
【機器學習基礎】GBDT--梯度提升樹例項分析完全解讀

詳細解答過程:(感謝大神) mp.weixin.qq.com/s/ljC2dYfUz…

相關文章