【小白學AI】GBDT梯度提升詳解

文章來自微信公衆號:【機器學習煉丹術】

文章目錄:

0 前言

先縷一縷幾個關係:

  • GBDT是gradient-boost decision tree
  • GBDT的核心就是gradient boost,我們搞清楚什麼是gradient boost就可以了
  • GBDT是boost中的一種方法,boost還有XGBoost,adaboost。
  • GBDT的基模型一般是CART

1 基本概念

【Boost】 就是讓多個弱分類器,通過不同的集成方式,來讓多個弱分類器變成一個強分類器。

【gradient-boost】 梯度提升。簡單的說,先訓練一個弱分類器,然後弱分類器和目標值之間的殘差,作爲下一個弱分類器訓練的目標值。這裏有一個非常簡單的例子
在這裏插入圖片描述

  • 第一個模型預測年齡,雖然真實值是30歲,第一個模型只給出了20歲的估計值;
  • 第二棵樹要預測的就是這個10歲的殘差,但是第二棵樹只給出了6歲的估計值;
  • 第三棵樹預測的是第二棵樹的4歲的殘差,但是………………(禁止套娃)

2 梯度 or 殘差 ?

對於GBDT,網上的很多文章都沒有講清楚,學習梯度還是學習殘差?從上面的那個例子來看,是學習殘差的。

其實,從來GBDT都是學習梯度的,學習殘差只是學習梯度的一個特例!

如果我們是在做一個迴歸任務(就像是上面例子中預測年齡),採用平方損失:\(loss = \frac{1}{2}\sum^n_i{(y_i-\hat{y_i})^2}\)
其中\(y_i\)是真實數值,\(\hat{y_i}\)是模型預測的值。

然後想求取這個關於\(\hat{y_i}\)的梯度,那就是:
\(\frac{\partial loss}{\partial \hat{y^i}}=(-1)(y_i-\hat{y_i})\)

所以殘差在平方損失的情況下,就是等於負梯度,所以兩者一回事。

3 殘差過於敏感

對於數據不乾淨,沒有清晰掉異常值的數據樣本。使用平方損失對異常值過於敏感了

敏感就是因爲,異常值的損失過大了,導致下一個弱分類器就會強行擬合這個5.445的樣本,擬合異常值就意味着弱化了泛化能力,從而整體精度就可能會下降。

所以,這裏在迴歸問題中,也可以考慮使用下面的兩個損失函數:

  • Absolute loss:
    \(loss=|y-\hat{y}|\)

  • Huber loss:
    這個是設置一個閾值,當\(|y-\hat{y}|\)小於這個閾值的時候,採用平方損失,當\(|y-\hat{y}|\)大於這個閾值的時候,採用類似於絕對損失的線性損失:

    這裏看一下huber loss的函數圖像:

    就是一個平方損失,一個線性損失。

然後看一下平方損失,絕對損失,huber損失對於異常值的容忍程度:


【小小的總結】

GBDT是基於boosting的思想,串行地構造多棵決策樹來進行數據的預測,它是在損失函數所在的函數空間中做梯度下降,即把待求的決策樹模型當作參數,每輪迭代都去擬合損失函數在當前模型下的負梯度,從而使得參數朝着最小化損失函數的方向更新。

【現在還用嗎?】

學肯定是要學的,因爲GBDT是非常經典的集成模型,知道了可以擴充知識面。但是其實在2010年橫霸大數據競賽的,現在10年過去了,在競賽中已經是老古董了。

【GBDT vs Adaboost】

Adaboost是boost集成的另一個非常經典的算法。Adaboost只能採用指數損失的二分類任務,而GBDT可以使用各種可微分的損失函數來處理多分類、迴歸等任務。


4 兩個基模型的問題

【問題:爲什麼GBDT模型都會使用CART(分類和迴歸樹)來作爲基模型呢?】

這與決策樹算法自身的優點有很大的關係。決策樹可以認爲是if-then規則的集合,易於理解,可解釋性強,預測速度快 。同時,決策樹算法相比於其他的算法需要更少的特徵工程,比如可以不用做特徵標準化,可以很好的處理字段缺失的數據,也可以不用關心特徵間是否相互依賴 等。決策樹能夠自動組合多個特徵,它可以毫無壓力地處理特徵間的交互關係並且是非參數化 的,因此你不必擔心異常值或者數據是否線性可分(舉個例子,決策樹能輕鬆處理好類別A在某個特徵維度x的末端,類別B在中間,然後類別A又出現在特徵維度x前端的情況)不過,單獨使用決策樹算法時,有容易過擬合缺點。所幸的是,通過各種方法(比如剪枝、最大樹深度、最小葉子樣本數量、正則項等),抑制決策樹的複雜性,降低單顆決策樹的擬合能力,再通過梯度提升的方法集成多個決策樹,最終能夠很好的解決過擬合的問題。由此可見,梯度提升方法和決策樹學習算法可以互相取長補短,是一對完美的搭檔。


【還有什麼抑制單棵決策樹的複雜度的方法?換言之,決策樹的避免過擬合的方法?】

  1. 限制樹的最大深度
  2. 限制葉子節點的最少樣本數量
  3. 限制節點分裂時的最少樣本數量
  4. 吸收bagging的思想對訓練樣本採樣(subsample)在學習單顆決策樹時只使用一部分訓練樣本(樣本採樣)
  5. 借鑑隨機森林的思路在學習單顆決策樹時只採樣一部分特徵(特徵採樣,同樣是bagging的思想)
  6. 在目標函數中添加正則項懲罰複雜的樹結構等。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章