gbdt

參考:https://www.cnblogs.com/pinard/p/6140514.html

前向分佈算法

就是一步一步計算每個弱學習器的參數的思想,和boosting相同。

負梯度擬合

負梯度擬合就是在某個弱學習器得到的結果和真實值之間的誤差的基礎上,在減少這個誤差的方向上構建新的CART迴歸樹做一個擬合。由於負梯度是函數對變量進行求導,所以對原生的分類問題沒辦法做處理,需要對分類問題轉換爲連續的迴歸問題進行處理。
在這裏插入圖片描述
使得c(tj)最小的節點下的一個樣本c,這裏也是t-1輪的時候選擇到的這個特徵下的其中一個樣本,將來要當作分類的節點,這個節點使得在這一層loss函數最小,即這一層擬合後,結果最接近真實值的一個節點,在這個節點左邊是一個類別,右邊是一個類別,這樣一個二叉樹即爲本輪構建的ht(x),然後和之前的t-1個弱學習器組合成一個強學習器。

損失函數

前一輪的損失函數是:在這裏插入圖片描述
本輪的目的是找到一個弱學習器ht(x),使得在這裏插入圖片描述 最小。
常用的損失函數包括:1. 指數損失函數 2. 對數損失函數(分二元分類和多元分類)3. 均方差 4.絕對損失 5. huber損失(均方差和絕對損失的折中) 6.quantile分位數損失

迴歸

就是在上一輪的擬合函數基礎上,尋找一個樣本當作弱分類器的劃分節點。這個節點需要滿足負梯度,這樣才能最大可能地最小化loss。
更新當前輪弱學習器 在這裏插入圖片描述
整個強學習器: 在這裏插入圖片描述

分類算法

對於分類無法使用負梯度來較小損失的方法來擬合弱學習器,所以需要對損失函數做一點的修改。

  1. 將損失函數替換爲指數損失函數,此時GBDT退化爲了adaboost.
  2. 類似於邏輯迴歸的對數 似然 損失函數的方法(似然…這裏意思應該是 充當 的意思吧)

二分類

與gbdt迴歸的區別在於負梯度計算和葉子節點的最佳負梯度擬合函數

多分類

與gbdt迴歸的區別在於負梯度計算和葉子節點的最佳負梯度擬合函數

正則化

爲了防止過擬合,主要有三種處理方式:

  1. 步長
  2. 自採樣(subsample)
  3. 對使用到的CART迴歸樹做正則化剪枝。

優缺點

優點:

  1. 可以靈活處理各類數據,包括連續值和離散值。
  2. 對相對少的調參時間情況下,預測準確率優於SVM。
  3. 可以選擇損失函數,包括huber(均方差和絕對損失的折中)
    缺點:
  4. 弱學習器之間存在以來,難以並行。

sklearn參數

參考: https://www.cnblogs.com/pinard/p/6143927.html
n_estimators 弱學習器的zui’da’die最大迭代次數
learning_rate 不擦汗給你
subsample 取值爲(0,1],但推薦[0.5,0,8],默認爲1,即不採用自採樣
init 初始的弱學習器。
loss gdbt中提到的損失函數(http://www.cnblogs.com/pinard/p/6140514.html),具體區別看當前博客
alpha

應用場景

gbdt可以用於所有的迴歸問題(線性和非線性),而logistic regression只能用於線性迴歸,bgdt也可以用於二分類,多分類問題。

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