筆記︱決策樹族——梯度提升樹(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 本身的一些良好特性,具體可以列舉如下:
- Decision Tree 可以很好的處理 missing feature,這是他的天然特性,因為決策樹的每個節點只依賴一個 feature,如果某個 feature 不存在,這顆樹依然可以拿來做決策,只是少一些路徑。像邏輯迴歸,SVM 就沒這個好處。
-
Decision Tree 可以很好的處理各種型別的 feature,也是天然特性,很好理解,同樣邏輯迴歸和 SVM 沒這樣的天然特性。
-
對特徵空間的 outlier 有魯棒性,因為每個節點都是 x < ? 的形式,至於大多少,小多少沒有區別,outlier 不會有什麼大的影響,同樣邏輯迴歸和 SVM 沒有這樣的天然特性。
-
如果有不相關的 feature,沒什麼幹擾,如果資料中有不相關的 feature,頂多這個 feature 不出現在樹的節點裡。邏輯迴歸和 SVM 沒有這樣的天然特性(但是有相應的補救措施,比如邏輯迴歸裡的 L1 正則化)。
-
資料規模影響不大,因為我們對弱分類器的要求不高,作為弱分類器的決策樹的深 度一般設的比較小,即使是大資料量,也可以方便處理。像 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~
———————————————————————————