GBDT演算法梳理

2021-09-16 19:06:01 字數 4152 閱讀 8432

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回歸樹 決策樹分為兩大類,回歸樹和分...