GBDT梯度提公升之回歸演算法個人理解

2021-10-17 09:25:38 字數 1557 閱讀 6174

前面的文章中介紹了梯度提公升方法,將梯度提公升方法中的基學習器替換成cart回歸樹模型,梯度提公升方法就變成了梯度提公升回歸樹gbdt方法。

gbdt演算法的思想與提公升樹演算法類似,不同點在於殘差的計算:

1、首先對於資料集初始化乙個簡單模型

2、計算損失函式對於函式

為例,損失函式關於

3、計算第二步得到的偏導數在當前函式模型的值,並將值乘以-1(也就是損失函式的負梯度)來近似模型的**殘差

4、然後使用殘差

,每個葉子節點計算乙個輸出值c(對於mse損失函式的最佳輸出值就是葉子節點上樣本的均值,並且是殘差的均值),輸出值c使得每個葉子節點的損失值最小

5、更新學習到的整體模型

,其中表示新得到的回歸樹的葉子節點,是符號函式,當取值為1,否則為0,

6、回到步驟2再次計算損失函式的負梯度在當前的值作為殘差,步驟3再次學習得到乙個新的

gbdt關鍵引數:

1、n_estimators:基學習器的數量,也就是學習多少個弱學習器進行組合

2、learning_rate(也就是有些地方說的shrinkage):用於控制每個模型對最終模型的貢獻度,起到正則化的作用,防止過擬合,lr越小,對應的迭代次數 n_estimator 就要大一些,學習率的使用如下:

3、subsample:控制每次訓練時使用的訓練樣本比例,如果取值小於1.0,表示每次只使用部分訓練集訓練弱學習器,這樣得到的弱學習器過擬合的可能性就小,同樣起到正則化的作用。通過偏差和方差解釋就是,降低了方差(整體上打的離目標更準了),增大了偏差(具體到每個具體的目標,可能每個具體的目標打的都不如之前準了,比之前單個目標的準度稍微差了一丟丟)

4、還有一堆控制樹的深度,葉子節點個數的引數,也就是控制樹的複雜度,樹越複雜,模型擬合越好,也約有可能過擬合,方差就可能越大,偏差就可能越小。

5、gbdt引數較多,最佳超引數可以使用gridsearch網格搜尋來進行,網格搜尋說白了就是排列組合的方式,通過交叉驗證把所有的引數組合都試一遍,找到交叉驗證結果最好的一組引數,可想而知學習過程的計算量那是相當的大,超級慢。

scikit-learn官網:

GBDT 梯度提公升樹演算法

歡迎關注 生信修煉手冊 gbdt全稱為gradient boosting decision tree,是一種基於決策樹的整合學習演算法。在adaboost演算法中,弱分類器的模型可以根據需要靈活選擇,而gbdt則強制限定為決策樹演算法。基於cart決策樹演算法,gbdt可以用於處理分類和回歸兩項任務...

4 提公升之梯度提公升樹(GBDT)

提公升方法採用加法模型與前向分步演算法,是以決策樹為基分類器。ps 這裡的決策樹指cart樹。主要思想 對於提公升樹演算法,簡單來說就是每一步會擬合前一步的殘差。ps 只有當損失函式是均方誤差的時候,每一步是擬合的殘差,對於其他損失函式卻不是。提公升樹模型 計算每個資料的殘差 通過殘差學習一顆回歸樹...

梯度提公升樹GBDT

上一節我們講了adaboost,而提公升樹也是提公升方法的一種,它的基分類器為分類樹或者回歸樹。ps 首先我們講一下殘差的概念 殘差是指實際值和估計值之間的差,就是相減。一般提公升樹的模型的損失函式是平方損失和對數損失,所以優化很簡單。但是對一般損失函式而言就有困難,所以又有了梯度提公升演算法,然後...