1. GBDT思想
GBDT也是集成學習Boosting的其中一種,Boosting是由多個弱學習器組成,與bagging不同,Boosting學習器之間有關聯的關係。AdaBoost是通過前面的學習器模型來決定當前的學習器模型的每個樣本的權重,然後計算出當前學習器組合權重,最後將學習器線性組合起來。而GBDT則是通過不斷的最小化樣本的殘差來達到集成學習的目的,每個弱學習器,都是用於擬合之前學習器中的殘差值,所以GBDT是一個串行的模型,並行運算能力比較差。因爲是要擬合殘差,所以GBDT弱學習器模型是要滿足高偏差,低方差的條件,一般都是選擇CART(也就是分類迴歸決策樹)作爲弱學習器模型。
2. 算法流程
1、構建第一棵樹
用樣本特徵去構建一個CART決策樹,葉子節點的取值用貪心的思想,選擇使偏差最小的常數。
其中
2、用負梯度下降的方法計算殘差並構建後面的樹
用
3、把所有的學習器疊加起來
重複過程直到損失少於一定的值或者迭代次數到一定值。
3. GBDT解決分類問題
爲了讓GBDT能解決分類問題主要有兩種方法:
- 指數損失函數
- 類似於邏輯迴歸的對數似然損失函數
這裏討論第二種,用對數思然函數。
二分類問題
對於二分類的問題,損失函數是:
各個葉子節點的最佳殘差擬合值爲:
多分類問題
對於二分類的問題,損失函數是:
如果類別是k,則
結合上面兩式,求
4. GBDT的正則化
正則化的手段有三種:控制迭代器步長、加入子採樣比例、剪枝
控制迭代器步長
對於每個弱學習器,是爲了擬合前面的殘差,爲了不然擬合程度太大,加入一個擬合步長
變爲:
加入子採樣比例
第二種正則化的方式是通過子採樣比例(subsample)。取值爲(0,1]。注意這裏的子採樣和隨機森林不一樣,隨機森林使用的是放回抽樣,而這裏是不放回抽樣。如果取值爲1,則全部樣本都使用,等於沒有使用子採樣。如果取值小於1,則只有一部分樣本會去做GBDT的決策樹擬合。選擇小於1的比例可以減少方差,即防止過擬合,但是會增加樣本擬合的偏差,因此取值不能太低。推薦在[0.5, 0.8]之間。使用了子採樣的GBDT有時也稱作隨機梯度提升樹(Stochastic Gradient Boosting Tree, SGBT)。由於使用了子採樣,程序可以通過採樣分發到不同的任務去做boosting的迭代過程,最後形成新樹,從而減少弱學習器難以並行學習的弱點。
剪枝
第三種是對於弱學習器即CART迴歸樹進行正則化剪枝。