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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Gradient Boosted Decision Trees详解

發布時間:2024/1/17 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Gradient Boosted Decision Trees详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

感受

GBDT集成方法的一種,就是根據每次剩余的殘差,即損失函數的值。在殘差減少的方向上建立一個新的模型的方法,直到達到一定擬合精度后停止。我找了一個相關的例子來幫助理解。本文結合了多篇博客和書,試圖完整介紹GBDT的內容,歡迎大家來指正。

介紹

GBDT是一個應用很廣泛的算法,可以用來做分類、回歸。GBDT這個算法還有其它名字,如MART(Multiple AdditiveRegression Tree),GBRT(Gradient Boost Regression Tree),TreeNet等等。Gradient Boost其實是一個框架,里面可以套入很多不同的算法。

原始的Boost算法是在算法開始的時候,為每一個樣本賦上一個權重值,初始的時候,大家都是一樣重要的。在每一步訓練中得到的模型,會使得數據點的估計有對有錯,我們就在每一步結束后,增加分錯的點的權重,減少分對點的權重,這樣使得某些點如果老師被分錯,那么就會被“嚴重關注”,也就被賦上一個很高的權重。然后等進行了N次迭代(由用戶指定),將得到N個簡單的分類器(basic learner),然后我們將它們組合起來(比如說可以對它們進行加權、或者讓它們進行投票等),得到一個最終的模型。

Gradient Boost與傳統的Boost的區別是,每一次的計算是為了減少上一次的殘差(residual),而為了消除殘差,我們可以在殘差減少的梯度方向上建立一個新的模型。所以說,在Gradient Boost中,每個新模型的建立是為了使得之前模型的殘差梯度方向減少,對傳統Boost對正確,錯誤的樣本進行加權有很大的區別。

在GBDT的迭代中,假設我們前一輪迭代得到的強學習器是ft-1(x),損失函數是L(yi,ft-1(x)),我們本輪迭代的目標是找到一個CART回歸樹模型的弱學習器ht(x),讓本輪的損失L(yi,ft(x)=L(yi,ft-1(x))+ht(x)最小。也就是說,本輪迭代找到決策樹,要讓樣本的損失盡量變得更小。

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

上圖為一個GBDT的例子,表示預測一個人是否喜歡電腦游戲。

GBDT梯度提升決策樹算法是在決策樹的基礎上引入GB(逐步提升)和shrinkage(小幅縮進)兩種思想,從而提升普通決策樹的泛化能力。核心點在于GBDT的結果是多顆決策樹預測值的累加,而殘差則是每棵決策樹的學習目標。GBDT是回歸樹而不是分類樹,調整后可用于分類。

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


概念

GBDT的負梯度擬合

針對損失函數擬合方法的問題,大牛Fredman提出了用損失函數的負梯度來擬合本輪損失的近似值,進而擬合一個CART回歸樹。第t輪的第i個樣本的損失函數的負梯度表示為:

利用(xi,rti)(i=1,2,…,m),我們可以擬合一個CART回歸樹,得到了第t個回歸樹,其對應的葉結點區域Rtj,j=1,2,…,J.其中J為葉子結點的個數。
針對每一個葉子結點里的樣本,我們求出使損失函數最小,也就是擬合葉子結點最好的輸出值cij如下:

這樣我們就得到了本輪的決策樹擬合函數如下:


從而本輪最終得到的強學習器的表達式如下:


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


決策樹

決策樹時一個類似于流程圖的結構,每個內部結點代表一個屬性的測試,每個分支代表測試的結果,每個葉子結點代表分類的結果。從根結點到葉子結點代表分類的規則。

詳細了解的話可以參考我的博客http://blog.csdn.net/w5688414/article/details/77920930

上圖是一個決策樹的例子。

信息熵:


樣本集為D,Pk(k=1,2,…,Y)代表樣本集D中第k個樣本的比例。決策樹就是每次選擇一個屬性劃分使得Ent(D)最小。

決策樹有很多算法,ID3,CART的區別是所選擇的劃分標準不一樣,ID3選擇的是信息增益,當CART是分類樹時,采用GINI值作為節點分裂的依據;當CART是回歸樹時,采用樣本的最小方差作為節點分裂的依據;。


分裂特征為a’,值為v’.DL是樣本val(x,a’)<=v’ 的集合.DR是樣本val(x,a’)>v’的集合.D=DL∪DR。
選擇分裂點的依據:

對于決策樹模型,分類和回歸的損失函數可以用戶自定義,通常,掃描所有分裂點的代價很大,所以有一些近似算法(這個自行百度了),為了避免過擬合,常用的方法是后剪枝。

集成學習

集成方法就是使用多種學習算法去獲得更好的預測性能的方法,典型的集成方法有很多,如AdaBoost,隨機森林(Random Forest),GBDT。前面的兩種算法不是本文講的內容,本文主要解析一下GBDT算法。
損失函數

算法

回歸算法

當GBDT用于回歸時,常用的損失函數包括平方損失函數、絕對值損失函數、Huber損失函數。每次朝著損失函數的負梯度方向移動即可取得損失函數的最小值。

輸入:訓練樣本T={(x1,y1),(x2,y2),…,(xm,ym) },最大迭代次數是T,損失函樹為L.

輸出:強學習器f(x)

1)?????初始化弱分類器


2)?????對迭代輪數t=1,2,…,T有:

a)?????對樣本i=1,2,…,m,計算負梯度:

??????

b)?????利用(xi,rti)(i=1,2,…,m),擬合一個CART回歸樹,得到第t顆回歸樹,其對應的葉子結點區域為Rtj,j=1,2,…,J. 其中J為回歸樹t的葉子結點的個數。

c)?????對葉子區域j=1,2,…,J.計算最佳擬合值


????????d)?????更新強學習器

???????
3)得到強學習器f(x)的表達式


分類算法

當GBDT用于分類時,常用的損失函數有對數損失函數、指數損失函數等。這種損失函數的目的是求預測值為真實值的概率。

二元分類

對于二元GBDT,如果用類似于邏輯回歸的對數似然損失函數,其損失函數為:


其中y∈{-1,+1},則此時的負梯度誤差為


對于生成的決策樹,我們各個葉子結點的最佳殘差擬合值為

由于上式比較難優化,我們一般使用近似值代替:

除了負梯度計算和葉子結點的最佳殘差擬合的線性搜索,二元GBDT回歸算法和GBDT回歸算法過程相同。

多元分類

多元GBDT比二元GBDT復雜一些,對應的是多元邏輯回歸和二元邏輯回歸。假設類別為K,則此時我們的對數似然損失函數為:


其中如果樣本輸出類別為K,則yk=1。第k類的概率pk(x)的表達式為:


集合兩式,我們可以計算出第i個樣本對應類別l的負梯度誤差為


(分母多了個括號)

觀察上式可以看出,其實這里的誤差就是樣本i對應的類別l的真實概率和t-1輪預測概率的差值。

對于生成的決策樹,我們各個葉子結點的最佳殘差擬合值為


由于上式比較難優化,我們一般使用近似值代替


除了負梯度計算和葉子結點的最佳殘差擬合的線性搜索,多元GBDT分類和二元GBDT分類以及回歸算法過程相似。


GBDT優缺點

優點

1) 可以靈活處理各種類型的數據,包括連續值和離散值。
2) 在相對少的調參時間情況下,預測的準確率也可以比較高。這個是相對SVM來說的。
3)使用一些健壯的損失函數,對異常值的魯棒性非常強。比如 Huber損失函數(huber詳細見本文的損失函數模塊)和Quantile損失函數。
缺點

1) 由于弱學習器之間存在依賴關系,難以并行訓練數據。不過可以通過自采樣的SGBT(Stochastic Gradient Boosting Tree)來達到部分并行。

例子

這個例子不是一個典型的GBDT的例子,沒有用到負梯度求解,但是過程和GBDT一樣,并且有明確的計算過程,可以幫助理解GBDT的過程,值得借鑒。實際問題比這個簡單的例子復雜得多。

已知如表8.2所示的訓練數據,x的取值范圍為區間[0.5,10.5],y的取值范圍為區間[5.0,10.0],學習這個回歸問題的boosted tree模型,考慮只用樹樁作為基本函數。損失函數是誤差的平方和。


按照算法,第1步求f1(x)即回歸樹T1(x)。
首先通過以下優化問題:


求解訓練數據的切分點s:

容易求得在R1,R2內部使平方損失誤差達到最小值的c1,c2為

這里N1,N2是R1,R2的樣本點數。


現將s及m(x)的計算結果列表如下:


用f1(x)擬合訓練數據的殘差見表8.4,表中r2i=yi-f1(xi),i=1,2,…,10

用f1(x)擬合訓練數據的平方損失誤差:

第2步求T2(x)。方法與求T1(x)一樣,只是擬合的數據表8.4的殘差??梢缘玫?#xff1a;

用f2(x)擬合訓練數據的平方損失誤差是


繼續求得

用f6(x)擬合訓練數據的平方損失誤差是

假設此時已滿足誤差要求,那么f(x)=f6(x)即為所求提升樹。讀者可以手算一下,計算量還是有點大,畢竟有那么多求和和求均值,還有平方和。

參考文獻
[1]. Gradient boosting. https://en.wikipedia.org/wiki/Gradient_boosting

[2]. 梯度提升樹(GBDT)原理小結

[3]. 決策樹系列(五)——CART

[4] GBDT(Gradient Boosting Decision Tree) 沒有實現只有原理

[5].李航.《統計機器學習》?
?

總結

以上是生活随笔為你收集整理的Gradient Boosted Decision Trees详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。