對GBDT的一點理解

GBDT由一系列的迴歸樹組成,如下圖所示(樹的深度未必都要一樣,下圖僅爲示意圖)。

這裏寫圖片描述

GBDT原理

針對每一個類別訓練一系列的迴歸樹,再累加每個類別迴歸樹的預測值得到針對每個類別的最終的預測值。單獨拿一個類別來說,訓練的過程中假設需要預測的值爲f(xi) ,實際的值爲yi ,有Loss Function L(yi,f(xi))f(xi) 爲參數。訓練的過程就是讓Loss Function最小化的過程。最小化可以通過梯度下降完成,令Loss Function對參數f(xi) 求梯度有

gf(x)=L(yi,f(xi))f(xi)

那麼,只要參數f(xi) 不斷往梯度方向變化,Loss Function就會減小直至收斂。即每一次迭代爲

f(xi)t+1=f(xi)tηgf(x)(1)

其中η 爲學習率。

假設第一棵迴歸樹T1 的預測值爲f(xi)0 ,對這一時刻的參數f(xi)0 求梯度,得到gf(x)0 ,因爲梯度是根據訓練樣本中的實際值yi 得到的,預測未知樣本時,並沒有實際的yi ,因此需要估計這一時刻的梯度gf(x)0 ,這就需要通過第二棵迴歸樹來擬合。故利用根據訓練樣本求得的梯度值gf(x)0 作爲目標值,利用訓練樣本再訓練一棵迴歸樹T2 ,並用T2 再求一遍梯度g ,之後更新參數得到f(xi)1 。以此類推,迭代直到得到給定數目的迴歸樹。

此時這一系列的迴歸樹T1,T2,...,Tn 的預測值累加後得到f(xi)n ,可以令Loss Function足夠小,也就得到了一個訓練好的gbdt模型。

選取不同的Loss Function可以達到不同的目的,比如對於信用模型需要分類的情形,Loss Function爲Deviance,對應的梯度爲

I(yi=Gk)pk(xi)

pk 表示樣本xi 屬於第k 個類別的概率,通過Softmax方法求得。因爲有K 個類別,所以得到K 個系列的迴歸樹,每個系列最終的預測值分別爲f1(x),f2(x),...,fK(X) ,具體計算公式如下所示

pk(x)=efk(x)Kl=1efl(x)

I(·) 爲指示函數。也就是當預測第k個類別概率時,如果真實類別恰好爲該類別,梯度爲1pk(xi) ,否則爲pk(xi) 。所以後一棵樹擬合的也就是之前預測值的殘差。

GBDT的正則化

訓練的過程可以指定需要M 棵迴歸樹,新的迴歸樹不斷擬合之前的殘差,在訓練集上的誤差可能逐漸變爲0,導致過擬合。GBDT也有相應避免過擬合的方法。如
1. early stopping策略,保留一個驗證集,每增添一棵樹通過驗證集測試誤差是否下降,當增添一定數目的樹時驗證誤差不再下降的時候,就可以終止迭代了,得到M 棵迴歸樹。
2. Shrinkage,也就是減小每一棵迴歸樹對預測值得貢獻。這就對應上了公式(1) 中的學習率η0<η<1 ,比較小的學習率會導致需要更多的迴歸樹,也就是更大的M ,根據經驗,最好的策略是選取較小的η(η<0.1) ,然後通過early stopping選取M
3. 二次抽樣,即在擬合一棵新的迴歸樹時,不用完全的樣本集,而僅是無放回的抽樣其中的部分,通常爲12 ,對於大的數據集,抽樣的比例可以小於12 。subsampling的方式可以避免過擬合,同樣地,更小的訓練集也可以更快的完成訓練。

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