1. 程式人生 > >筆記︱決策樹族——梯度提升樹(GBDT)

筆記︱決策樹族——梯度提升樹(GBDT)

每每以為攀得眾山小,可、每每又切實來到起點,大牛們,緩緩腳步來俺筆記葩分享一下吧,please~

———————————————————————————

本筆記來源於CDA DSC,L2-R語言課程所學進行的總結。

一、介紹:梯度提升樹(Gradient Boost Decision Tree)


Boosting演算法和樹模型的結合。按次序建立多棵樹,每棵樹都是為了減少上一次的殘差(residual),每個新的模型的建立都是為了使之前模型的殘差往梯度方向減少。最後將當前得到的決策樹與之前的那些決策樹合併起來進行預測。


相比隨機森林有更多的引數需要調整。

————————————————————————————————————————————————————————————

二、隨機森林與梯度提升樹(GBDT)區別

隨機森林:決策樹+bagging=隨機森林

梯度提升樹:決策樹Boosting=GBDT

兩者區別在於bagging boosting之間的區別,可見:

bagging

boosting

取樣方式

bagging採用均勻取樣

boosting根據錯誤率來取樣

精度、準確性

相比之,較低

訓練集選擇

隨機的,各輪訓練集之前互相獨立

各輪訓練集的選擇與前面各輪的學習結果相關

預測函式權重

各個預測函式沒有權重

boost有權重

函式生成順序

並行生成

順序生成

應用

象神經網路這樣極為消耗時間的演算法,bagging可通過並行節省大量的時間開銷

baging和boosting都可以有效地提高分類的準確性

baging和boosting都可以有效地提高分類的準確性

一些模型中會造成模型的退化(過擬合)

boosting思想的一種改進型adaboost方法在郵件過濾,文字分類中有很好的效能

隨機森林

梯度提升樹

GDBT為什麼受到比賽圈、工業界的青睞:

GBDT 它的非線性變換比較多,表達能力強,而且不需要做複雜的特徵工程和特徵變換。

GBDT的優勢 首先得益於 Decision Tree 本身的一些良好特性,具體可以列舉如下:

  1. Decision Tree 可以很好的處理 missing feature,這是他的天然特性,因為決策樹的每個節點只依賴一個 feature,如果某個 feature 不存在,這顆樹依然可以拿來做決策,只是少一些路徑。像邏輯迴歸,SVM 就沒這個好處。
  2. Decision Tree 可以很好的處理各種型別的 feature,也是天然特性,很好理解,同樣邏輯迴歸和 SVM 沒這樣的天然特性。

  3. 對特徵空間的 outlier 有魯棒性,因為每個節點都是 x < ? 的形式,至於大多少,小多少沒有區別,outlier 不會有什麼大的影響,同樣邏輯迴歸和 SVM 沒有這樣的天然特性。

  4. 如果有不相關的 feature,沒什麼幹擾,如果資料中有不相關的 feature,頂多這個 feature 不出現在樹的節點裡。邏輯迴歸和 SVM 沒有這樣的天然特性(但是有相應的補救措施,比如邏輯迴歸裡的 L1 正則化)。

  5. 資料規模影響不大,因為我們對弱分類器的要求不高,作為弱分類器的決策樹的深 度一般設的比較小,即使是大資料量,也可以方便處理。像 SVM 這種資料規模大的時候訓練會比較麻煩。 

當然 Decision Tree 也不是毫無缺陷,通常在給定的不帶噪音的問題上,他能達到的最佳分類效果還是不如 SVM,邏輯迴歸之類的。但是,我們實際面對的問題中,往往有很大的噪音,使得 Decision Tree 這個弱勢就不那麼明顯了。而且,GBDT 通過不斷的疊加組合多個小的 Decision Tree,他在不帶噪音的問題上也能達到很好的分類效果。換句話説,通過GBDT訓練組合多個小的 Decision Tree 往往要比一次性訓練一個很大的 Decision Tree 的效果好很多。因此不能把 GBDT 理解為一顆大的決策樹,幾顆小樹經過疊加後就不再是顆大樹了,它比一顆大樹更強。  

—————————————————————————————————————————————————————

三、R中與決策樹有關的Package


單棵決策樹:rpart/tree/C50
隨機森林:randomforest/ranger
梯度提升樹:gbm/xgboost
樹的視覺化:rpart.plot

————————————————————————————————————

延伸:GDBT的區域性+ 全域性解釋性

GDBT模型的解釋一般來說分為全域性解釋性 / 區域性解釋性。其特點為:

第一,GBDT這種樹形模型的權值存在於葉子結點上,一個葉子結點實際上是從根節點開始,由一系列特徵分裂點、特徵分裂值決定的一條路徑,也就是一個葉節點上的分值是多個特徵共同決定的;

第二,由於GBDT模型的特點,它的每一棵樹擬合的都是當前的殘差,同一特徵在不同的樹上貢獻度也是不同的,因為隨著殘差的逐漸減小,後面的樹對最後預測分值的貢獻度也是更小的,因此隨機森林RF(Random Forest)模型那種基於樣本標籤分佈變化的區域性解釋性方案不適用於GBDT模型。

GBDT的模型可以使用PMML (Predictive Model Markup Language)的格式來記錄,如圖:

觀察圖2中的節點6、節點11和節點12,由父節點6向兩個子節點前進的過程中,會對特徵feat5進行判斷,若其小於等於1.5則落向節點11獲得0.085的預測分,否則落向節點12獲得0.069的預測分。也就是在這一步的前進當中,由於特徵feat5的不同,一個樣本可能會獲得的分值差異為Sn11 − Sn12 = 0.085 – 0.069 = 0.016,Snk表示在節點k上的得分。所以,可以通過求兩個葉節點的平均值獲得對節點6的分值估計,再通過自底向上回溯的方式,可以將分數回溯到所有中間節點最後到達根節點。

這樣就實現了局部特徵貢獻度的定義,將分數分攤到各個特徵上,圖2示例的處理結果標識在圖3當中。藍色的分值表示中間節點獲得的分值估計,邊上的橙色部分表示了經過該條邊時的貢獻特徵和貢獻分值。

我們使用阿里內部基於引數伺服器的GBDT分散式版本SMART(Scalable Multiple Additive Regression Tree)進行模型的訓練,並記錄樣本在節點上的分佈情況。

區域性模型解釋方案是對單條樣本進行的,我們對大量樣本輸出的解釋觀察時,對於每一維特徵存在一個貢獻度的分佈,我們取這個分佈的中位數作為其一般衡量,它應該與全域性模型解釋對各個特徵重要性大小的判斷保持一致,分析結果如圖4所示,橙色、灰色分別表示各個特徵的區域性、全域性解釋,具有我們預估的一致性,說明本文GBDT的區域性解釋方案較為可靠。

我們還通過人工進行具體解釋案例檢查,分析支付寶交易測試集,發現本文模型解釋輸出的高風險特徵與人工判斷一致,並且還能抓出一些全域性重要性不高,但在特定樣本中屬於高風險的特徵,驗證了結果的可靠性和實用性。

模型解釋還可以用於模型檢查,通過給資料分析師一個直觀解釋,判斷與人工歸因的一致性來驗證模型的效果,從而使他們相信機器學習模型。另一方面,模型解釋也可以用於模型的提高,通過對漏抓、誤抓樣本的解釋,可以對特徵進行補充、修改,進而實現模型的更新迭代和效果的進一步提升。

每每以為攀得眾山小,可、每每又切實來到起點,大牛們,緩緩腳步來俺筆記葩分享一下吧,please~

———————————————————————————