GBDT 算法

GBDT (Gradient Boosting Decision Tree) 梯度提高迭代決策樹。GBDT 也是 Boosting 算法的一種,可是和 AdaBoost 算法不一樣(AdaBoost 算法上一篇文章已經介紹);區別以下:AdaBoost 算法是利用前一輪的弱學習器的偏差來更新樣本權重值,而後一輪一輪的迭代;GBDT 也是迭代,可是 GBDT 要求弱學習器必須是 CART 模型,並且 GBDT 在模型訓練的時候,是要求模型預測的樣本損失儘量的小。算法

GBDT 直觀理解:每一輪預測和實際值有殘差,下一輪根據殘差再進行預測,最後將全部預測相加,就是結果。函數

 
 

GBDT 模型能夠表示爲決策樹的加法模型:學習

 

 
 

其中,T(x;θm)表示決策樹;θm 爲決策樹的參數; M爲樹的個數。ci

採用前向分佈算法, 首先肯定初始提高樹 fo(x) = 0, 第 m 步的模型是:io

 
 

經過經驗風險極小化肯定下一棵樹的參數:(其實就是讓殘差儘量的小找到最優劃分點)class

 
 

這裏的 L() 是損失函數,迴歸算法選擇的損失函數通常是均方差(最小二乘)或者絕對值偏差;而在分類算法中通常的損失函數選擇對數函數來表示方法

 

GBDT 既能夠作迴歸也能夠作分類,下面先描述一下作迴歸的算法流程:im

已知一個訓練數據集 T = {(x1,y1),(x2,y2),...,(xn,yn)}, 若是將訓練集分爲不一樣的區域 R1,R2,...,Rn,而後能夠肯定每一個區域輸出的常識 c,c 的計算是將每一個區域的 y 值相加再除以 y 的個數,其實就是求一個平均值。樹能夠表示爲:技術

 
 

而後經過下圖方式來肯定具體分割點:統計

 
 

我將李航的統計學方法裏面的例子粘出來,就知道提高樹是如何計算的了:

 
 
 
 
 
 

以上就是 GBDT 選擇分割點的過程, 若是特徵有多個的話也是同樣的道理,選擇特徵和特徵值使得偏差最小的點,做爲分割點。因此其實 GBDT 也能夠用做特徵選擇,經過GBDT 能夠將重要的特徵選擇出來,當特徵很是多的時候能夠用來作降維。而後再融合相似邏輯迴歸這樣的模型再進行訓練。

做者:theodore的技術提高之路連接:https://www.jianshu.com/p/405f233ed04b

相關文章
相關標籤/搜索