table of contents
1 gbdt概述
2 前向分布演算法
2.1 加法模型
2.2 前向分布演算法
2.2.1 思想
2.2.2 策略
2.2.3 加法模型求解
3 損失函式
4 負梯度擬合
5 回歸
6 gbdt分類
6.1 二分類
6.2 多分類
7 正則化
8 優缺點
9 sklearn引數
10 應用場景
gbdt(gradient boosting decision tree )又叫 mart(multiple additive regression tree),是一種迭代的決策樹演算法。其中gb :gradient boosting,dt:(regression) decision tree,gbdt的dt是回歸樹,不是分類樹。但是它既可以用於回歸也可以用於分類。
boosting基於這樣一種思想:對於乙個複雜任務來說,將多個專家的判斷進行適當(按照一定權重)的綜合(例如線性組合加法模型)所得出的判斷,要比其中任何乙個專家單獨的判斷好。
gbdt是boosting的一族的成員,也會進行迭代,使用前向分布演算法。它是通過累加所有樹的結論得出最終結果,gbdt的核心就在於,每一棵樹學的是之前所有樹結論和的殘差,這個殘差就是乙個加**值後能得真實值的累加量。下面舉乙個例子。
有4個人,年齡分別是10,12,16,18
加法模型(aditive model)是一種線性模型
fx= mm
βmbx;
γm其中,b(x;γm
)為基函式,γ
m為基函式的引數,β
m為基函式的係數(權重)。
在給定訓練資料及損失函式 ly,fx的條件下,學習加法模型 fx成為經驗風險極小化(即損失函式極小化)問題:
minβm,γ
mi=1nl(
yi,m
mβmb
xi;γ
m)即同時考慮n個樣本在整個線性模型組中的損失函式的極小值,通常這是乙個十分複雜的優化問題(求極值問題),想要一步到位求出最優解特別困難。
可以利用前向分步演算法(forward stagewise algorithm)求解這一優化問題,其思想是:因為學習的是加法模型(線性模型),如果能夠從前向後,每一步只學習乙個基函式 bx;γ
m及其係數β
m,逐步逼近優化目標函式式
minβm,γ
mi=1nl(
yi,m
mβmb
xi;γ
m),那麼就可以極大簡化優化的複雜度。
具體地,每步只需要優化如下損失函式:
minβ,γ
i=1nly
i,βbxi
;γ,即一次只要考慮乙個基函式及其係數即可.
經驗風險最小化。如果在模型中加入了penalty懲罰項,則可以演進為結構風險最小化。
輸入:訓練資料集t=;損失函式ly,fx ; 基函式集;
輸出:加法模型fx
初始化f0x
=0對m=1,2,……,m
極小化損失函式
βm,γm=argmin
β,γi=1nl(
yi,f
m-1x
i+βb(xi
;γ))
得到引數βm,γm 更新
fmx=fm-1x+
βmb(x;γm
) 得到加法模型
fx=fmx=m=1mβ
mb(x;γm
) 這樣,前向分布演算法將同時求解從m=1到m所有引數的βm,γm優化問題簡化為逐步求解各個βm,γm的優化問題。
因為gbdt既可以用於分類也可以用於回歸,針對這兩種不同的使用,損失函式各有不同。下面列舉常用的幾個常用的損失函式。
對於分類
指數損失函式
對數損失函式
對於回歸
絕對損失
均方差huber損失
分位數損失
參考**:
如何擬合損失函式?leo breiman 提出了用損失函式的負梯度來擬合本次迭代損失的近似值,進而擬合一棵cart回歸樹。
rti=-[∂l(yi,f(xi)))∂fxi]fxi=ft-1(x)
利用(xi,rti)(i=1,2,..m),我們可以擬合一顆cart回歸樹,得到了第 t 顆回歸樹,其對應的葉節點區域rtj,j=1,2,...,j。其中j為葉子節點的個數。
針對每乙個葉子節點裡的樣本,我們求出使損失函式最小,也就是擬合葉子節點最好的的輸出值ctj如下:ctj
=argmincx
i∈rtj
l(yi,
ft-1xi
+c)
這樣我們就得到了本輪的決策樹擬合函式如下:
htx=j=1jc
tji(x∈rtj
) 從而本輪最終得到的強學習器的表示式如下:ft
x=ft-1x+
j=1jctj
i(x∈rtj
) 通過損失函式的負梯度來擬合,我們找到了一種通用的擬合損失誤差的辦法,這樣無輪是分類問題還是回歸問題,我們通過其損失函式的負梯度的擬合,就可以用gbdt來解決我們的分類回歸問題。區別僅僅在於損失函式不同導致的負梯度不同而已。
輸入:訓練資料集t=;損失函式ly,fx ; 最大迭代次數t;
輸出:強學習器fx
初始化f0x
=argmin
ci=1nl(
yi,c)
對迭代次數t=1,2,……,t 有:
對樣本i=1,2,……,m ,計算負梯度
rtj=-[∂l(yi,f(xi)))∂fxi]fxi=ft-1(x)
利用(xi,rti)(i=1,2,..m),我們可以擬合一顆cart回歸樹,得到了第 t 顆回歸樹,其對應的葉節點區域rtj,j=1,2,...,j。其中j為葉子節點的個數。
對葉子區域j =1,2,..j,計算最佳擬合值
ctj=
argmincx
i∈rtj
l(yi,
ft-1xi
+c)
更新學習器ft
x=ft-1x+
j=1jctj
i(x∈rtj
)得到強學習器f(x)的表示式fx
=ftx
=f0(x)+
t=1t
j=1jctj
i(x∈rtj
)因為分類輸出的結果是不連續的值,無法擬合資料結果的誤差。可以使用兩種方法解決這個問題,一是用指數函式,二是用類似於邏輯回歸的對數似然函式的方法。
損失函式
l(y,f(x))=log(1+exp(-yf(x)))
其中y∈,則對葉子區域j =1,2,..j,計算最佳擬合值為
ctj=
argmincx
i∈rtjlog(1+exp-yift-1xi+c))
由於上式較難優化,可以使用近似值代替
ctj=xi
∈rtjrtj/(xi∈
rtj|rtj|(1-|rtj|))
損失函式l(y,f(x))=-k=1ky
klogpk
(x)
推導過程如上,可用近似值代替
ctj=
k-1kxi
∈rtjrtjxi
∈rtj|rtj|(1-|rtj|)
優點可以靈活處理各種型別的資料,包括連續值和離散值。
在相對少的調參時間情況下,**的準確率也可以比較高。這個是相對svm來說的。
使用一些健壯的損失函式,對異常值的魯棒性非常強。比如 huber損失函式和quantile損失函式
缺點由於弱學習器之間存在依賴關係,難以並行訓練資料。不過可以通過自取樣的sgbt來達到部分並行
官方文件
經常會通過以下幾個引數進行調優
n_estimators: 也就是弱學習器的最大迭代次數
learning_rate: 即每個弱學習器的權重縮減係數ν,也稱作步長
loss: 即我們gbdt演算法中的損失函式
主要應用於回歸和分類。
回歸:信用評分等。
分類:職位分類,**疾病的風險等。
GBDT演算法梳理
人工智慧之gbdt演算法 前言 人工智慧之機器學習主要有三大類 1 分類 2 回歸 3 聚類。今天我們重點 一下gbdt演算法。我們知道,gbm 請參見人工智慧 51 是乙個改善弱學習器效果的計算框架。gbm梯度提公升模組可以根據需要任意插入各種各樣的弱分類器。若弱學習器限定了只能使用cart回歸樹...
gbdt演算法 演算法梳理五 GBDT
真正開始動手寫,才發現以前理解的不夠深。弄懂乙個演算法,要想明白哪些問題?集合裡有m個樣本,n個特徵,gbdt每棵回歸樹怎麼構造 選取多少樣本,多少特徵 它的損失函式怎麼擬合,殘差是怎麼回事,梯度在其中的作用。gbdt有很多簡稱,有gbt gradient boosting tree gtb gra...
演算法梳理之GBDT
gbdt是整合學習boosting演算法中的一種,它與adaboost相比,adaboost演算法利用前一輪迭代弱學習器的誤差率來更新訓練集的權重,這樣一輪輪的迭代下去,gbdt也是一輪一輪迭代弱學習器,使用前向分布演算法,但是它限定弱學習器只能是決策樹 cart回歸樹 決策樹分為兩大類,回歸樹和分...