用gbm包來提公升決策樹能力

2021-07-05 09:21:46 字數 2211 閱讀 2140

中國有句老話:三個臭皮匠,頂個諸葛亮。這個說法至少在變形金剛中得到了體現,沒有組合之前的大力神只是五個可以被柱子哥隨手秒掉工地苦力。但組合之後卻 是威力大增。在機器學習領域也是如此,一堆能力一般的「弱學習器」也能組合成乙個「強學習器」。前篇文章提到的隨機森林就是一種組合學習的方法,本文要說 的是另一類組合金剛:提公升方法(boosting)。提公升方法是一大類整合分類學習的統稱。它用不同的權重將基學習器進行線性組合,使表現優秀的學習器得到重用。在r語言中gbm包就是用來實現一般提公升方法的擴充套件包。根據基學習器、損失函式和優化方法的不同,提公升方法也有各種不同的形式。

自適應提公升方法adaboost

它是一種傳統而重要的boost演算法,在學習時為每乙個樣本賦上乙個權重,初始時各樣本權重一樣。在每一步訓練後,增加錯誤學習樣本的權重,這使得某些樣本的重要性凸顯出來,在進行了n次迭代後,將會得到n個簡單的學習器。最後將它們組合起來得到乙個最終的模型。

梯度提公升方法gradient boosting

梯度提公升演算法初看起來不是很好理解,但我們和線性回歸加以模擬就容易了。回憶一下線性回歸是希望找到一組引數使得殘差最小化。如果只用一次項來解釋二次曲線一定會有大量殘差留下來,此時就可以用二次項來繼續解釋殘差,所以可在模型中加入這個二次項。

同樣的,梯度提公升是先根據初始模型計算偽殘差,之後建立乙個基學習器來解釋偽殘差,該基學習器是在梯度方向上減少殘差。再將基學習器乘上權重係數(學習速 率)和原來的模型進行線性組合形成新的模型。這樣反覆迭代就可以找到乙個使損失函式的期望達到最小的模型。在訓練基學習器時可以使用再抽樣方法,此時就稱 之為隨機梯度提公升演算法stochastic gradient boosting

在gbm包中,採用的是決策樹作為基學習器,重要的引數設定如下:

損失函式的形式容易設定,分類問題一般選擇 bernoulli分布,而回歸問題可以選擇gaussian分布。學習速率方面,我們都知道步子邁得太大容易扯著,所以學習速率是越小越好,但是步子太 小的話,步數就得增加,也就是訓練的迭代次數需要加大才能使模型達到最優,這樣訓練所需時間和計算資源也相應加大了。gbm作者的經驗法則是設定 shrinkage引數在0.01-0.001之間,而n.trees引數在3000-10000之間。

下面我們用mlbench包中的資料集來看一下gbm包的使用。其中響應變數為diabetes,即病人的糖尿病診斷是陽性還是陰性。

# 載入包和資料

library

(gbm

)data

(pimaindiansdiabetes2,package='mlbench'

)# 將響應變數轉為0-1格式

data

$diabetes

(data

$diabetes)

data

(data

,diabetes=diabetes-1

)# 使用gbm函式建模model

(diabetes~.,

data

=data

,shrinkage=0.01

, distribution='bernoulli'

,cv.folds=5

, n.trees=3000

,verbose=f)

# 用交叉檢驗確定最佳迭代次數best.iter

)

# 觀察各解釋變數的重要程度

summary

(model,best.iter)

# 變數的邊際效應plot.gbm(model,

1,best.iter)

# 用caret包觀察**精度

library

(caret

)data

, number = 5

,returnresamp = "all"

)model2

data

=data

,method='gbm'

,distribution='bernoulli'

,trcontrol = fitcontrol,verbose=f,tunegrid = data.frame

(.n.trees=best.iter,.shrinkage=0.01

,.interaction.depth=1

))model2

0.504  0.0357  

GBDT 梯度提公升決策樹

gbdt gradient boosting decision tree 又叫 mart multiple additive regression tree 是一種迭代的決策樹演算法,該演算法由多棵決策樹組成,所有樹的結論累加起來做最終答案。它在被提出之初就和svm一起被認為是泛化能力較強的演算法。...

梯度提公升決策樹 GBDT

整合學習經典一類演算法,屬於個體學習器間存在較強依賴關係的一類,需以序列的序列化生成方法構建。原理 所有弱分類器結果相加等於 值,下乙個弱分類器去擬合誤差函式對 值的殘差 值與真實值的誤差 這裡的弱分類器是決策樹。舉例 用gbdt的方法 年齡 step1 在第乙個弱分類器中隨機選擇乙個數字擬合,發現...

梯度提公升決策樹 GBDT)

以決策樹為基函式的提公升方法稱為提公升樹。決策樹可以分為分類樹和回歸樹。提公升樹模型可以表示為決策樹的加法模型。針對不同的問題的提公升術演算法的主要區別就是損失函式的不同,對於回歸問題我們選用平方損失函式,對於分類問題,我們使用指數損失函式。特別的,對於二分類問題,我們提公升樹就是把adaboost...