決策樹、CART、GBDT、Xgboost學習筆記

一、決策樹

決策樹由結點和有向邊組成,結點又分爲內部結點和葉結點。從本質上來看,決策樹的學習過程包括特徵選擇,決策樹生成和決策樹剪枝3個部分。

1.1決策樹特徵選擇

所謂決策樹特徵選擇即選擇合適的特徵作爲結點對訓練樣本進行劃分,通常使用信息增益或者信息增益比作爲特徵選擇的標準。

  • 信息增益

    g(D,A)=H(D)H(D|A)=k=1K|Ck||D|log2|Ck||D|+i=1n|Di||D|H(Di)=k=1K|Ck||D|log2|Ck||D|+i=1n|Di||D|k=1KDikDilog2|Dik||Di|

    其中, D爲訓練集樣本, Ck 表示第k類樣本的集合, Ci 表示特徵A的屬性爲第i個值的樣本集合
  • 信息增益比

    gR(D,A)=g(D,A)HA(D)=g(D,Ani=1|Di|Dlog2|Di||D|

總結:
以信息增益作爲劃分訓練數據集的特徵,存在偏向於選擇取值較多的特徵的問題,使用信息增益比可以對這一問題進行校正。其對應的應用爲,信息增益對應ID3算法,信息增益比對應C4.5算法。

1.2決策樹生成算法

輸入:訓練數據D,特徵集A,閾值 ϵ
輸出:決策樹T
(1)若D中所有實例屬於同一類Ck , 則T爲單結點樹,並將類Ck 作爲該結點的類標記,返回T
(2)若A= ,則T爲單結點樹,並將D中實例最大的類Ck 作爲該結點的類標記,返回T
(3)否則,按1.1中的方法計算A中各特徵對D的信息增益或者信息增益比,選擇我信息增益或者信息增益比最大的特徵Ag
(4)如果Ag 的信息增益小於閾值 ϵ 則置T爲單結點樹,並將D中實例數最大的類Ck 作爲該結點的類標記,返回T
(5)否則對Ag 的每一可能值ai ,依 Ag =ai 將D分割爲若干非空子集Di , 將Di 中實例數最大的類作爲標記,構建子結點,由結點及其子結點構成樹T,返回T
(6)對第i個子結點,以 Di 爲訓練集,AAg 爲特徵集,遞歸調用(1)~(5),得到子樹Ti ,返回Ti

1.3決策樹剪枝

方法:極小化決策樹整體的損失函數
損失函數定義:

Cα(T)=t=1|T|NtHt(T)+α|T|

在上式中,經驗熵
Ht(T)=kNtkNtlogNtkNt

其中,設樹T的葉節點個數爲|T|,t是樹T的葉結點,該葉結點有Nt 個樣本點,其中k類樣本點有Ntk 個,則Ht(T) 爲葉結點t上的經驗熵
在損失函數中,Cα(T) 等式右端的第一項記作
C(T)=t=1|T|NtHt(T)=t=1|T|k=1KNtklogNtkNt

稱這一項爲預測誤差,用來描述模型與訓練數據的擬合程度。用|T|來表示模型的複雜度,使用參數α 來控制兩者之間的影響。

決策樹剪枝算法:
輸入:生成算法生成的整個樹T, 參數α
輸出:修剪後的子樹 Tα
(1)計算每個結點的經驗熵
(2)遞歸的從樹的葉結點向上回縮,如下圖所示:
這裏寫圖片描述
如果剪枝之後的損失函數比剪枝之前的損失函數小,則進行剪枝,其父結點變爲新的葉結點
(3)返回(2),直至不能繼續爲止

二、CART

CART(classification and regression tree)分類迴歸樹,其與一般決策樹最大的變化是假設決策樹是二叉樹,內部結點特徵的取值爲‘是’和‘否’

2.1會歸樹的生成

一個迴歸樹對應着輸入空間(特徵空間)的一個劃分以及在劃分單元的輸出值。
假設已將一個輸入空間劃分爲M個單元 R1R2...Rm , 在每個單元Rm 上有一個固定的輸出值cm ,於是迴歸樹的模型可以表示爲

f(x)=cm(xRm)

2.1.1確立輸出空間的值

當輸入空間的劃分確定時,使用平方誤差來表示迴歸樹對訓練數據的預測誤差

L=xiRm(yif(xi))2=xiRm(yicm)2

使用平方誤差最小的準則求解每個單元上的最優輸出值,對損失函數求偏導
Lcm=2xiRm(yicm)

令上式爲0, 可求得最優解
c^m=average(yi|xiRm)

2.1.2如何對輸入空間進行劃分

使用啓發式的方法,選擇第j個特徵 x(j) 及其取值 s 作爲切分變量和且分點,由此可以可以得到兩個區域R1R2 :

R1(j,s)=x|x(j)s
R1(j,s)=x|x(j)>s

想要尋找最優切分變量和最優且分點,即要使得對當前結點所有的特徵和其取值,總的損失函數最小,可表示爲
minj,s[minc1xiR1(j,s)(yiC1)2+minc2xiR2(j,s)(yiC2)2]

由此,可根據上面求得的最優c^1c^2 可以求得最優切分變量j和最優且分點s

2.2分類樹的生成

2.2.1 分裂準則-基尼指數

定義:

Gini(p)=k=1Kpk(1pk)

2.2.2 生成算法

對於給定的樣本集D,其基尼指數爲

Gini(D)=1k=1K(|Ck||D|)2

這裏,Ck 是屬於第k類的樣本自己,K是類的個數
樣本集合D根據特徵A是否取某一可能值a被分割成D1D2 兩部分,則在特徵A的條件下,集合D的基尼指數定義爲
Gini(D,A)=|D1||D|Gini(D1)+|D2||D|Gini(D2)

在每一個結點,遍歷多有的特徵及其可能的取值,選取基尼指數最小的特徵及其對應的且分點作爲最優特徵和最優切分點。遞歸調用直至滿足停止條件。
算法停止的條件是結點中的樣本個數小於預定閾值或樣本集的基尼指數小於預定閾值或者沒有更多特徵。

2.2.3剪枝算法

輸入:CART算法生成的決策樹T0
輸出:最優決策樹Tα
(1)設k=0,T=T0
(2)設α=+
(3)自上而下地對各個內部結點t計算C(Tt) ,|Tt| 以及

g(t)=C(t)C(Tt)|Tt|1

α=min(α,g(t))

(4)對g(t)=α 的內部結點t進行剪枝,並對葉結點t以多數表決法決定其類,得到樹T
(5)設k=k+1,αk=α,Tk=T
(6)如果Tk 不是由根節點及兩個葉結點構成的樹,則回到步驟(3);否則令Tk=Tn
(7)採用交叉驗證法在子樹序列T0,T1,...,Tn 中選取最優子樹

三、GBDT(Gradient boosting decision tree)

3.1 GBDT 迴歸樹算法

提升樹模型可以表示爲決策樹的加法模型:

fM(x)=m=1MT(x;θm)

在上式中,T(x;θm) 表示第m棵決策樹,θm 爲第m棵決策樹的參數,M爲決策樹的個數
提升樹算法使用前向分步算法:
(1) 確定初始提升樹
f0(x)=0

(2)第m步的模型:
fm(x)=fm1(x)+T(x;θm)

在上式中,fm1(x) 是當前模型,通過經驗風險最小化確定下一棵決策樹的參數θm
θ^m=arg minθmi=1NL(yi,fm1(x)+T(x;θm))

在二中,CART迴歸樹的輸出結果是
f(x)=cm(xRm)

當採用平方誤差作爲損失函數時,
L(y,f(x))=(yf(x))2

則其算是函數爲
L(y,fm1+T(x;θm)=[yfm1(x)T(x;θm)]2=[rT(x;θm)]2

說明:令r=yfm1(x) 是當前模型的殘差,所以提升樹算法相當於對當前模型殘差的擬合。
(3)梯度提升算法:

利用損失函數的負梯度在當前模型的值作爲迴歸問題提升樹算法中的殘差的近似值,擬合一個迴歸樹

rmi=[L(y,f(xi))f(xi)]f(x)=fm1(x)

其算法基本步驟:
(1)初始化
f0(x)=arg minci=1NL(yi,c)

(2)對m=1,2,3,…,M
(a)對=1,2,…, N,計算殘差
rmi=[L(yi,f(xi))f(xi)]f(x)=fm1(x)

(b)對rmi 擬合一個迴歸樹,得到第m棵樹的葉結點區域Rmj
(c)對j=1,2,3,…J,計算
cmj=argmincxiRmjL(yi,fm1(xi)+c)

(d)更新fm(x)=fm1(x)+Jj=1cmj(xRmj)
(3)得到迴歸樹
f^(x)=fM(x)=m=1Mj=1Jcmj(xRmj)

3.2GBDT分類樹算法

未完待續….

參考文獻:李航《統計學習方法》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章