0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

為什么GBDT用回歸樹不用分類樹?CART決策樹是怎么計算基尼值呢?

冬至子 ? 來源:宅碼 ? 作者:Ai ? 2023-07-28 15:00 ? 次閱讀

一、背景

集成學習Boosting一族將多個弱學習器(或稱基學習器)提升為強學習器,像AdaBoost, GBDT等都屬于“加性模型”(Additive Model),即基學習器的線性組合。1997年Freund和Schapire提出的AdaBoost,它是先從初始訓練集訓練出一個基學習器,然后基于基學習器的在這一輪的表現(xiàn),在下一輪訓練中給預測錯的訓練樣本更大權(quán)重值,以達到逐步減少在訓練集的預測錯誤率。這種訓練機制像不像做一套卷子,有些重難點題做不出來,那下次又給你做同樣的卷子,但不同的是:之前你做錯的重難點題占有很大的分值比重,這樣你會將更多重心放在了這些難題上,從而提高你的學習表現(xiàn)。那除了這種方式,還有沒有其他方法攻克考題上的重難點?有,就是死磕到底,找到這題錯在哪?基于此錯誤繼續(xù)去做這道題,直到做對為止。這跟GBDT [1] 的工作機制就很像了,它是先產(chǎn)生一個弱學習器(CART回歸樹模型),訓練后得到輸入樣本的殘差,然后再產(chǎn)生一個弱學習器,基于上一輪殘差進行訓練。不斷迭代,最后加權(quán)結(jié)合所有弱學習器得到強學習器。GBDT的一個應用示意圖如下(某樣本預測值 = 它在不同弱學習器所在葉子節(jié)點輸出值的累加值):

圖片

圖1:GBDT應用示意圖

二、GBDT

第二部分目錄如下:

1.背景知識

  • GBDT弱學習器
  • GBDT模型框架

2.GBDT回歸

3.GBDT分類

  • GBDT二分類
  • GBDT多分類

1. 背景知識

GBDT可用于回歸和分類任務。在深入了解它在回歸或分類任務上的訓練細節(jié)之前,我們先了解一些相關(guān)的背景知識。

(1)GBDT弱學習器

決策樹是IF-THEN結(jié)構(gòu),它學習的關(guān)鍵在于如何選擇最優(yōu)劃分屬性。西瓜書 [2] 提到:“隨著劃分過程不斷進行,我們希望決策樹的分支結(jié)點所包含的樣本盡可能屬于同一類別,即結(jié)點的“純度”(Purity)越來越高”。衡量純度的指標有多種,因此對應有不同類型的決策樹算法,例如ID3決策樹 (以信息增益Information Gain作為屬性劃分標準),C4.5決策樹 (以增益率Gain Ratio選擇最優(yōu)劃分屬性),CART決策樹 (使用基尼指數(shù)Gini Index)來選擇劃分屬性。

決策樹那么多種,為什么GBDT的弱學習器就限定使用CART決策樹?

A: 原因如下所示 (具體細節(jié)不展開):

  • ID3決策樹只支持類別型變量,而C4.5和CART支持連續(xù)型和類別型變量。
  • C4.5適用于小樣本,CART適用于大樣本。

CART決策樹是怎么計算基尼值呢?

A: 假設當前數(shù)據(jù)集D中第k類樣本所占比例為圖片 (k=1,2,…,圖片),則基尼值為:

圖片

圖片反映了從數(shù)據(jù)集D隨機抽取兩個樣本,其類別標記不一致的概念,因此越小,數(shù)據(jù)集D的純度越高?;诖耍瑢傩詀的基尼指數(shù)定義為:

圖片

假設屬性a有V個可能的取值{圖片},則圖片是指第v個分支結(jié)點包含D中所有在屬性a上取值為圖片的樣本。圖片是給分支結(jié)點賦予權(quán)重,獲得樣本數(shù)更多的結(jié)點,影響更大。

舉個具體計算基尼指數(shù)的例子,假如按照“芯片高通驍龍865和非高通驍龍865進行機型檔位劃分”:

圖片

表1:基尼指數(shù)計算樣例集

當芯片為高通驍龍865時,有旗艦機2個,中端機1個:

圖片

當芯片非高通驍龍865時,有中端機1個,低端機1個:

圖片

最后,特征”芯片”下數(shù)據(jù)集的基尼指數(shù)是:

圖片

為什么GBDT用回歸樹,不用分類樹?

A: 因為GBDT要計算殘差,且預測結(jié)果是通過累加所有樹結(jié)果得到的。因此分類樹沒法產(chǎn)生連續(xù)型結(jié)果滿足GBDT的需求。

(2)GBDT模型框架

圖片

圖2:GBDT算法實現(xiàn)流程圖及偽代碼 [3]

GBDT的偽代碼如圖2所示,假設我們有個樣本集圖片,想用M個弱學習器加性組合成GBDT強學習器,我們得按以下步驟進行實現(xiàn) (詳情參考 [4]):

1)初始化一個弱學習器圖片。它使損失函數(shù)圖片最小化,具體如下:

圖片

這里圖片是什么呢?請接著看下去,假設這里損失函數(shù)為平方損失,則對圖片求導:

圖片

由于這里的損失函數(shù)為凸函數(shù),所以只要令上面這個導數(shù)為0即可,那么可以求得:

圖片

因此,圖片是所有訓練樣本標簽值的均值,它是一個常數(shù),所以弱學習器圖片就只有一個根節(jié)點。

圖片

注意:圖片因損失函數(shù)不同而不同。

2)迭代訓練m = 1, 2, … , M棵樹。

(a)對每個樣本i = 1, 2, …, N,計算負梯度:

圖片

(b)將上步(a)得到的負梯度圖片作為新樣本值,將新數(shù)據(jù)圖片, I = 1, 2, …, N作為下顆樹的訓練數(shù)據(jù),擬合得到新樹,新樹上的葉子節(jié)點區(qū)域為圖片(j = 1, 2, …,圖片,其中圖片為葉子結(jié)點的個數(shù))。

(c)對每個葉子節(jié)點j = 1, 2, …,圖片 ,計算最佳擬合(即使損失函數(shù)最小,擬合葉子節(jié)點最好的輸出值):

圖片

(d)更新強學習器:

圖片

圖片是CART回歸樹模型的表達式,其中J是指數(shù)據(jù)集被劃分為J個單元(即葉子節(jié)點),圖片是第m輪迭代訓練下,CART樹第j個單元的輸出值。而圖片是指示函數(shù),若圖片,則I=1,否則I=0。這里第m輪下的強學習器 = 第m-1輪下的強學習器 + 第m輪的弱學習器。

3)輸出最終學習器GBDT:

圖片

上述公式展示的就是一系列弱學習器累加后得到強學習器的結(jié)果。

負梯度和殘差的關(guān)系是什么?

A: 負梯度是函數(shù)下降最快的方向,也是GBDT目標函數(shù)下降最快的方向,所以,我們用負梯度去擬合模型。而殘差只是一個負梯度的特例,當損失函數(shù)為均方損失時,負梯度剛好是殘差(這點在上面 "對圖片求導" 處有做假設展示)。

2. GBDT回歸

上面”GBDT通用框架”就是以平方損失為損失函數(shù)的一種GBDT回歸模型學習過程,不同損失函數(shù)導致使用的負梯度不同,因此也就產(chǎn)生了不同的GBDT回歸算法,總結(jié)了下GBDT回歸模型所用的損失和負梯度如下:

圖片

表2:GBDT回歸樹常用損失函數(shù)及負梯度 [5]

這里特別說下Huber損失,它對于中間附近的點 (圖片)采用均方誤差,對遠離中心的異常點 (圖片),采用絕對損失。邊界點δ的值受絕對損失函數(shù)而不是平方誤差損失控制,定義了這些被認為是“離群點”的殘差值??偟膩碚f,Huber結(jié)合了均方差和絕對損失,在抵抗長尾誤差分布和異常值的同時,還保持了對正態(tài)分布誤差的高效率。它和分位數(shù)損失一樣,適用于穩(wěn)健回歸,用于減少異常點對損失函數(shù)的影響。

3. GBDT分類

由于分類有二分類和多分類任務,所以GBDT分類有所區(qū)別,這里分開對它們進行展開解釋:

** (1) GBDT二分類**

我們上面也講到了,GBDT本質(zhì)上就是一系列弱學習器之和:

圖片

而GBDT分類跟邏輯回歸的思路是類似的,將圖片的作為下列函數(shù)的輸入,便可以得到類別概率值:

圖片

假設樣本獨立且同分布,極大似然估計(即選取合適的參數(shù)使被選取的樣本在總體中出現(xiàn)的可能性最大)的損失函數(shù)為:

圖片

為了方便對損失函數(shù)求導,會加入對數(shù),求最大對數(shù)似然估計:

圖片

上面的損失函數(shù)并非最終的函數(shù),而是最大似然估計函數(shù)(數(shù)值越大越好),由于損失函數(shù)應該使越小越好,所以要對上面的L取相反數(shù),同時為了得到平均到每個樣本的損失值,要除以樣本數(shù)N,這樣得到了最終的損失函數(shù):

圖片

對損失函數(shù)計算負梯度:

圖片

由此看來,GBDT負梯度即為殘差,表示真實概率和預測概率的差值。接下來計算過程跟著GBDT通用框架進行就好了。

** (2) GBDT多分類**

GBDT多分類原理跟Softmax一樣的,假設我們有k個類別,將圖片作為以下函數(shù)的輸入,便可以類別q對應的概率值:

圖片

其損失函數(shù)為:

圖片

多類別任務下,只有一個類別是1,其余為0,假設這不為0的一類為q,我們對它Softmax的損失函數(shù)求負梯度得:

圖片

跟二分類一樣,本質(zhì)上負梯度就是真實概率和預測概率的插值。

三、其它

第三部分講下GBDT的其它內(nèi)容:

1. 正則化

2. 優(yōu)缺點

3. 與RF的對比

1. 正則化

GBDT采用了三種正則化手段:

(1)學習率v和樹數(shù)量M的平衡

我們前面得到,第m輪下的強學習器 = 第m-1輪下的強學習器 + 第m輪的弱學習器,如下:

圖片

GBDT原論文提到,樹數(shù)量越多,越容易過擬合,所以限制樹數(shù)量可以避免過擬合,但歷史研究又給出:通過收縮 (即學習率v減少) 實現(xiàn)的正則化比通過限制項 (即樹數(shù)量M減少) 實現(xiàn)的正則化效果更好。這是什么意思呢?請先看下面的公式:

圖片

該公式加入了學習率v,這里跟神經(jīng)網(wǎng)絡的學習率相反,如果我們學習率下降,每個樹的貢獻就會減低,反而還實現(xiàn)了正則化,但如果我們放開訓練(即不固定樹數(shù)量),只減低學習率的話,GBDT還是會過擬合,因為產(chǎn)生了更多的樹。因此,GBDT作者建議,我們要實現(xiàn)v-M之間的權(quán)衡,理想的應該是在正則效果合適下,學習率降低的同時,也能盡可能保證樹數(shù)量少些。這里當然也有出于對計算資源的考慮,增加M會帶來計算開銷。

(2)子采樣比例

子采樣是將原數(shù)據(jù)集中抽樣一定的樣本去擬合GBDT。與隨機森林不同的是,GBDT采樣不放回抽樣,因為GBDT串行訓練要求所有弱學習器使用同一套樣本集,不然在不同抽樣樣本空間計算的殘差,缺乏一致性。

(3)決策樹常用正則化手段

這塊的參數(shù)都涉及到弱學習器樹本身的正則化,例如:決策樹最大深度、劃分所需最少樣本數(shù)、葉子節(jié)點最少樣本數(shù)、葉子節(jié)點最小樣本權(quán)重、最大葉子節(jié)點數(shù)、節(jié)點劃分最小不純度等。

2. 優(yōu)缺點

優(yōu)點:

  • 采用基于“殘差”(嚴格來說是負梯度)的Boosting集成手段。
  • 適用于回歸、二分類和多分類任務。
  • 預測精度比RF高。
  • 對異常值的魯棒性強(采用了Huber損失和分位數(shù)損失)。

缺點:

  • 串行方式的模型訓練,難并行,造成計算開銷。
  • 不適合高維稀疏離散特征。這是決策樹的痛點,比如動物類別采用one-hot編碼后,會產(chǎn)生是否為狗,是否為貓一系列特征,而若這一系列特征中大量樣本為狗,其它動物很少,那么樹在劃分屬性時,很容易就劃分為“是否為狗”,從而產(chǎn)生過擬合,它不像LR等線性模型f(w,x)的正則化權(quán)重是對樣本懲罰(可以實現(xiàn)對狗樣本給與更大的懲罰項),而樹的懲罰項往往是樹結(jié)構(gòu)相關(guān)的,因此樣本層面的懲罰較小,使得在高維稀疏特征時,GBDT表現(xiàn)不好。

3. 與RF的對比

[4] 總結(jié)的很好,我就不重復造輪子了:

圖片

圖3:GBDT與RF的區(qū)別 [4]

四、代碼參考

scikit-learn已提供封裝好的庫直接調(diào)用就好了,受限于篇幅,這里不詳細展開,詳見官方文檔 [6]。

from sklearn.datasets import make_regression
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.model_selection import train_test_split


X, y = make_regression(random_state=0)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
reg = GradientBoostingRegressor(random_state=0)
reg.fit(X_train, y_train)
reg.predict(X_test[1:2])
reg.score(X_test, y_test)
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 決策樹
    +關(guān)注

    關(guān)注

    2

    文章

    96

    瀏覽量

    13526
  • 累加器
    +關(guān)注

    關(guān)注

    0

    文章

    50

    瀏覽量

    9434
  • GBDT
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    3876
收藏 人收藏

    評論

    相關(guān)推薦

    關(guān)于決策樹,這些知識點不可錯過

    的一種算法。它既是分類算法,也是回歸算法,還可以用在隨機森林中。咱們學計算機的同學經(jīng)常敲if 、else if、else其實就已經(jīng)在用到決策樹的思想了。
    發(fā)表于 05-23 09:38

    基于決策樹CART算法識別印第安人糖尿病患者

    利用決策樹CART算法識別印第安人糖尿病患者
    發(fā)表于 05-06 12:16

    分類回歸方法之決策樹

    統(tǒng)計學習方法決策樹
    發(fā)表于 11-05 13:40

    決策樹的生成資料

    在本文中,我們將討論一種監(jiān)督式學習算法。最新一代意法半導體 MEMS 傳感器內(nèi)置一個基于決策樹分類器的機器學習核心(MLC)。這些產(chǎn)品很容易通過后綴中的 X 來識別(例如,LSM6DSOX)。這種
    發(fā)表于 09-08 06:50

    一個基于粗集的決策樹規(guī)則提取算法

    一個基于粗集的決策樹規(guī)則提取算法:摘要:決策樹是數(shù)據(jù)挖掘任務中分類的常用方法。在構(gòu)造決策樹的過程中,分離屬性的選擇標準直接影響到分類的效果,
    發(fā)表于 10-10 15:13 ?12次下載

    改進決策樹算法的應用研究

    該方法利用決策樹算法構(gòu)造決策樹,通過對分類結(jié)果中主客觀屬性進行標記并邏輯運算,最終得到較客觀的決策信息,并進行實驗驗證。
    發(fā)表于 02-07 11:38 ?27次下載
    改進<b class='flag-5'>決策樹</b>算法的應用研究

    決策樹的介紹

    關(guān)于決策樹的介紹,是一些很基礎(chǔ)的介紹,不過是英文介紹。
    發(fā)表于 09-18 14:55 ?0次下載

    數(shù)據(jù)挖掘算法:決策樹算法如何學習及分裂剪枝

    決策樹(decision tree)算法基于特征屬性進行分類,其主要的優(yōu)點:模型具有可讀性,計算量小,分類速度快。決策樹算法包括了由Quin
    的頭像 發(fā)表于 07-21 10:13 ?5692次閱讀
    數(shù)據(jù)挖掘算法:<b class='flag-5'>決策樹</b>算法如何學習及分裂剪枝

    決策樹的原理和決策樹構(gòu)建的準備工作,機器學習決策樹的原理

    希望通過所給的訓練數(shù)據(jù)學習一個貸款申請的決策樹,用于對未來的貸款申請進行分類,即當新的客戶提出貸款申請時,根據(jù)申請人的特征利用決策樹決定是否批準貸款申請。
    的頭像 發(fā)表于 10-08 14:26 ?5913次閱讀

    決策樹的構(gòu)成要素及算法

    決策樹是一種解決分類問題的算法,決策樹算法采用樹形結(jié)構(gòu),使用層層推理來實現(xiàn)最終的分類
    發(fā)表于 08-27 09:52 ?4186次閱讀

    使用不純度拆分決策樹的步驟

    決策樹是機器學習中使用的最流行和功能最強大的分類算法之一。顧名思義,決策樹用于根據(jù)給定的數(shù)據(jù)集做出決策。也就是說,它有助于選擇適當?shù)奶卣饕詫?b class='flag-5'>樹
    發(fā)表于 01-13 09:37 ?1445次閱讀
    使用<b class='flag-5'>基</b><b class='flag-5'>尼</b>不純度拆分<b class='flag-5'>決策樹</b>的步驟

    決策樹的基本概念/學習步驟/算法/優(yōu)缺點

    本文將介紹決策樹的基本概念、決策樹學習的3個步驟、3種典型的決策樹算法、決策樹的10個優(yōu)缺點。
    發(fā)表于 01-27 10:03 ?2472次閱讀
    <b class='flag-5'>決策樹</b>的基本概念/學習步驟/算法/優(yōu)缺點

    什么是決策樹模型,決策樹模型的繪制方法

    決策樹是一種解決分類問題的算法,本文將介紹什么是決策樹模型,常見的用途,以及如何使用“億圖圖示”軟件繪制決策樹模型。
    發(fā)表于 02-18 10:12 ?1.3w次閱讀
    什么是<b class='flag-5'>決策樹</b>模型,<b class='flag-5'>決策樹</b>模型的繪制方法

    決策樹的結(jié)構(gòu)/優(yōu)缺點/生成

    決策樹(DecisionTree)是機器學習中一種常見的算法,它的思想非常樸素,就像我們平時利用選擇做決策的過程。決策樹是一種基本的分類回歸
    發(fā)表于 03-04 10:11 ?8193次閱讀

    大數(shù)據(jù)—決策樹

    大數(shù)據(jù)————決策樹(decision tree) 決策樹(decision tree):是一種基本的分類回歸方法,主要討論分類
    的頭像 發(fā)表于 10-20 10:01 ?1130次閱讀