日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【机器学习】梯度提升树(GBDT)的原理小结

發(fā)布時間:2025/3/21 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【机器学习】梯度提升树(GBDT)的原理小结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? ? ? ? 在集成學(xué)習(xí)之Adaboost算法原理小結(jié)中,我們對Boosting家族的Adaboost算法做了總結(jié),本文就對Boosting家族中另一個重要的算法梯度提升樹(Gradient Boosting Decison Tree, 以下簡稱GBDT)做一個總結(jié)。GBDT有很多簡稱,有GBT(Gradient Boosting Tree),?GTB(Gradient Tree Boosting?),?GBRT(Gradient Boosting Regression Tree), MART(Multiple Additive Regression Tree),其實都是指的同一種算法,本文統(tǒng)一簡稱GBDT。GBDT在BAT大廠中也有廣泛的應(yīng)用,假如要選擇3個最重要的機器學(xué)習(xí)算法的話,個人認為GBDT應(yīng)該占一席之地。

1. GBDT概述

    GBDT也是集成學(xué)習(xí)Boosting家族的成員,但是卻和傳統(tǒng)的Adaboost有很大的不同。回顧下Adaboost,我們是利用前一輪迭代弱學(xué)習(xí)器的誤差率來更新訓(xùn)練集的權(quán)重,這樣一輪輪的迭代下去。GBDT也是迭代,使用了前向分布算法,但是弱學(xué)習(xí)器限定了只能使用CART回歸樹模型,同時迭代思路和Adaboost也有所不同。

?

    GBDT的思想可以用一個通俗的例子解釋,假如有個人30歲,我們首先用20歲去擬合,發(fā)現(xiàn)損失有10歲,這時我們用6歲去擬合剩下的損失,發(fā)現(xiàn)差距還有4歲,第三輪我們用3歲擬合剩下的差距,差距就只有一歲了。如果我們的迭代輪數(shù)還沒有完,可以繼續(xù)迭代下面,每一輪迭代,擬合的歲數(shù)誤差都會減小。

    從上面的例子看這個思想還是蠻簡單的,但是有個問題是這個損失的擬合不好度量,損失函數(shù)各種各樣,怎么找到一種通用的擬合方法呢?

2. GBDT的負梯度擬合

    在上一節(jié)中,我們介紹了GBDT的基本思路,但是沒有解決損失函數(shù)擬合方法的問題。針對這個問題,大牛Freidman提出了用損失函數(shù)的負梯度來擬合本輪損失的近似值,進而擬合一個CART回歸樹。第t輪的第i個樣本的損失函數(shù)的負梯度表示為

    通過損失函數(shù)的負梯度來擬合,我們找到了一種通用的擬合損失誤差的辦法,這樣無輪是分類問題還是回歸問題,我們通過其損失函數(shù)的負梯度的擬合,就可以用GBDT來解決我們的分類回歸問題。區(qū)別僅僅在于損失函數(shù)不同導(dǎo)致的負梯度不同而已。

?3.?GBDT回歸算法

    好了,有了上面的思路,下面我們總結(jié)下GBDT的回歸算法。為什么沒有加上分類算法一起?那是因為分類算法的輸出是不連續(xù)的類別值,需要一些處理才能使用負梯度,我們在下一節(jié)講。

4. GBDT分類算法

    這里我們再看看GBDT分類算法,GBDT的分類算法從思想上和GBDT的回歸算法沒有區(qū)別,但是由于樣本輸出不是連續(xù)的值,而是離散的類別,導(dǎo)致我們無法直接從輸出類別去擬合類別輸出的誤差。

    為了解決這個問題,主要有兩個方法,一個是用指數(shù)損失函數(shù),此時GBDT退化為Adaboost算法。另一種方法是用類似于邏輯回歸的對數(shù)似然損失函數(shù)的方法。也就是說,我們用的是類別的預(yù)測概率值和真實概率值的差來擬合損失。本文僅討論用對數(shù)似然損失函數(shù)的GBDT分類。而對于對數(shù)似然損失函數(shù),我們又有二元分類和多元分類的區(qū)別。

4.1 二元GBDT分類算法

    對于二元GBDT,如果用類似于邏輯回歸的對數(shù)似然損失函數(shù),則損失函數(shù)為:

    除了負梯度計算和葉子節(jié)點的最佳負梯度擬合的線性搜索,二元GBDT分類和GBDT回歸算法過程相同。

4.2 多元GBDT分類算法

    多元GBDT要比二元GBDT復(fù)雜一些,對應(yīng)的是多元邏輯回歸和二元邏輯回歸的復(fù)雜度差別。假設(shè)類別數(shù)為K,則此時我們的對數(shù)似然損失函數(shù)為:

    除了負梯度計算和葉子節(jié)點的最佳負梯度擬合的線性搜索,多元GBDT分類和二元GBDT分類以及GBDT回歸算法過程相同。

5. GBDT常用損失函數(shù)

    這里我們再對常用的GBDT損失函數(shù)做一個總結(jié)。

    對于分類算法,其損失函數(shù)一般有對數(shù)損失函數(shù)和指數(shù)損失函數(shù)兩種:

 

    對于Huber損失和分位數(shù)損失,主要用于健壯回歸,也就是減少異常點對損失函數(shù)的影響。

6. GBDT的正則化

    和Adaboost一樣,我們也需要對GBDT進行正則化,防止過擬合。GBDT的正則化主要有三種方式。

 

    第二種正則化的方式是通過子采樣比例(subsample)。取值為(0,1]。注意這里的子采樣和隨機森林不一樣,隨機森林使用的是放回抽樣,而這里是不放回抽樣。如果取值為1,則全部樣本都使用,等于沒有使用子采樣。如果取值小于1,則只有一部分樣本會去做GBDT的決策樹擬合。選擇小于1的比例可以減少方差,即防止過擬合,但是會增加樣本擬合的偏差,因此取值不能太低。推薦在[0.5, 0.8]之間。

    使用了子采樣的GBDT有時也稱作隨機梯度提升樹(Stochastic Gradient Boosting Tree, SGBT)。由于使用了子采樣,程序可以通過采樣分發(fā)到不同的任務(wù)去做boosting的迭代過程,最后形成新樹,從而減少弱學(xué)習(xí)器難以并行學(xué)習(xí)的弱點。

    第三種是對于弱學(xué)習(xí)器即CART回歸樹進行正則化剪枝。在決策樹原理篇里我們已經(jīng)講過,這里就不重復(fù)了。

7. GBDT小結(jié) 

    GBDT終于講完了,GDBT本身并不復(fù)雜,不過要吃透的話需要對集成學(xué)習(xí)的原理,決策樹原理和各種損失函樹有一定的了解。由于GBDT的卓越性能,只要是研究機器學(xué)習(xí)都應(yīng)該掌握這個算法,包括背后的原理和應(yīng)用調(diào)參方法。目前GBDT的算法比較好的庫是xgboost。當(dāng)然scikit-learn也可以。

    最后總結(jié)下GBDT的優(yōu)缺點。

    GBDT主要的優(yōu)點有:

    1) 可以靈活處理各種類型的數(shù)據(jù),包括連續(xù)值和離散值。

    2) 在相對少的調(diào)參時間情況下,預(yù)測的準確率也可以比較高。這個是相對SVM來說的。

    3)使用一些健壯的損失函數(shù),對異常值的魯棒性非常強。比如 Huber損失函數(shù)和Quantile損失函數(shù)。

    GBDT的主要缺點有:

    1)由于弱學(xué)習(xí)器之間存在依賴關(guān)系,難以并行訓(xùn)練數(shù)據(jù)。不過可以通過自采樣的SGBT來達到部分并行。

?

轉(zhuǎn)自:https://www.cnblogs.com/pinard/p/6117515.html

總結(jié)

以上是生活随笔為你收集整理的【机器学习】梯度提升树(GBDT)的原理小结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。