gbdt是整合學習boosting演算法中的一種,它與adaboost相比,adaboost演算法利用前一輪迭代弱學習器的誤差率來更新訓練集的權重,這樣一輪輪的迭代下去,gbdt也是一輪一輪迭代弱學習器,使用前向分布演算法,但是它限定弱學習器只能是決策樹(cart回歸樹)。決策樹分為兩大類,回歸樹和分類樹。
cart決策樹既可以用於分類也可以用於回歸,決策樹分為分類樹和回歸樹,分類樹的衡量標準是最大熵,回歸樹的衡量標準是最小化均方差,所以gbdt中的樹都是回歸樹,不是分類樹,這點對理解gbdt相當重要。
通俗的例子解釋:
假如有個人30歲,我們首先用20歲去擬合,發現損失有10歲,這時我們用6歲去擬合剩下的損失,發現差距還有4歲,第三輪我們用3歲擬合剩下的差距,差距就只有一歲了。如果我們的迭代輪數還沒有完,可以繼續迭代下面,每一輪迭代,擬合的歲數誤差都會減小。
對於乙個加法模型
其中b(x ; γm)為基函式,γm為基函式的引數,βm為基函式的係數。
在給定訓練資料及損失函式l( y, f(x) )的條件下,學習加法模型 f(x)成為經驗風險極小化即損失函式極小化問題:
前向分布演算法:就是對於加法模型,從前向後,每一步只學習乙個基函式及其係數,逐步逼近優化目標函式式,就可以簡化優化的複雜度,也就是每步只需優化如下損失函式:
前向分布演算法的具體演算法流程如下:
提公升樹利用加法模型與前向分步演算法實現學習的優化過程,當損失函式是平方損失和指數損失函式時,每一步優化很簡單,但對一般損失函式而言,每一步的優化並不容易。大牛freidman提出了梯度提公升演算法(gradient boosting),其關鍵是利用損失函式的負梯度在當前模型的值作為回歸問題提公升樹演算法中的殘差的近似值,擬合乙個回歸樹(用損失函式的負梯度來擬合本輪損失的近似值,進而擬合乙個cart回歸樹)。第t輪的第i個樣本的損失函式的負梯度表示為:
(1)gbdt分類演算法的損失函式
(a)指數損失函式(adaboost演算法),表示式如下:
(b)對數損失函式:分為二元分類和多元分類,具體損失函式見下一節
(2)gbdt回歸演算法的損失函式
(a)均方差,最常用,損失函式表示式為:
(b)絕對損失,損失函式表示式為:
對應負梯度誤差為:
(c)huber損失,它是均方差和絕對損失的折衷產物,對於遠離中心的異常點,採用絕對損失,而中心附近的點採用均方差。這個界限一般用分位數點度量。損失函式如下:
對應的負梯度誤差為:
(d)分位數損失,它對應的是分位數回歸的損失函式,表示式為:
其中θ為分位數,需要我們在回歸前指定。對應的負梯度誤差為:
對於huber損失和分位數損失,主要用於健壯回歸,也就是減少異常點對損失函式的影響。
gbdt的分類演算法從思想上和gbdt的回歸演算法沒有區別,但是由於樣本輸出不是連續的值,而是離散的類別,導致我們無法直接從輸出類別去擬合類別輸出的誤差。為了解決這個問題,主要有兩個方法,乙個是用指數損失函式,此時gbdt退化為adaboost演算法。另一種方法是用類似於邏輯回歸的對數似然損失函式的方法。也就是說,我們用的是類別的**概率值和真實概率值的差來擬合損失。
(1)二元gbdt分類演算法:
(2)多元gbdt分類演算法:
第一種,步長(learning rate),對於弱學習器的迭代加上正則化項 v 。0< v <=1。對於同樣的訓練集學習效果,較小的ν意味著我們需要更多的弱學習器的迭代次數。通常我們用步長和迭代最大次數一起來決定演算法的擬合效果。
第二種,通過子取樣比例(subsample),取值為(0,1]。注意這裡的子取樣和隨機森林不一樣,隨機森林使用的是放回抽樣,而這裡是不放回抽樣。如果取值為1,則全部樣本都使用,等於沒有使用子取樣。如果取值小於1,則只有一部分樣本會去做gbdt的決策樹擬合。選擇小於1的比例可以減少方差,即防止過擬合,但是會增加樣本擬合的偏差,因此取值不能太低。推薦在 [0.5, 0.8] 之間。
第三種對於弱學習器即cart回歸樹進行正則化剪枝。
gbdt主要優點:
(1) 可以靈活處理各種型別的資料,包括連續值和離散值。
(2) 在相對少的調參時間情況下,**的準確率也可以比較高。這個是相對svm來說的。
(3)使用一些健壯的損失函式,對異常值的魯棒性非常強。比如 huber損失函式和quantile損失函式。
GBDT演算法梳理
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 sk...
GBDT演算法梳理
人工智慧之gbdt演算法 前言 人工智慧之機器學習主要有三大類 1 分類 2 回歸 3 聚類。今天我們重點 一下gbdt演算法。我們知道,gbm 請參見人工智慧 51 是乙個改善弱學習器效果的計算框架。gbm梯度提公升模組可以根據需要任意插入各種各樣的弱分類器。若弱學習器限定了只能使用cart回歸樹...
gbdt演算法 演算法梳理五 GBDT
真正開始動手寫,才發現以前理解的不夠深。弄懂乙個演算法,要想明白哪些問題?集合裡有m個樣本,n個特徵,gbdt每棵回歸樹怎麼構造 選取多少樣本,多少特徵 它的損失函式怎麼擬合,殘差是怎麼回事,梯度在其中的作用。gbdt有很多簡稱,有gbt gradient boosting tree gtb gra...