色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

GBDT算法原理以及實例理解

lviY_AI_shequ ? 來源:fqj ? 2019-04-28 16:47 ? 次閱讀

寫在前面:去年學(xué)習(xí)GBDT之初,為了加強(qiáng)對算法的理解,整理了一篇筆記形式的文章,發(fā)出去之后發(fā)現(xiàn)閱讀量越來越多,漸漸也有了評論,評論中大多指出來了筆者理解或者編輯的錯誤,故重新編輯一版文章,內(nèi)容更加翔實,并且在GitHub上實現(xiàn)了和本文一致的GBDT簡易版(包括回歸、二分類、多分類以及可視化),供大家交流探討。感謝各位的點(diǎn)贊和評論,希望繼續(xù)指出錯誤~Github:

簡介:

GBDT 的全稱是 Gradient Boosting Decision Tree,梯度提升樹,在傳統(tǒng)機(jī)器學(xué)習(xí)算法中,GBDT算的上TOP3的算法。想要理解GBDT的真正意義,那就必須理解GBDT中的Gradient Boosting 和Decision Tree分別是什么?

1. Decision Tree:CART回歸樹

首先,GBDT使用的決策樹是CART回歸樹,無論是處理回歸問題還是二分類以及多分類,GBDT使用的決策樹通通都是都是CART回歸樹。為什么不用CART分類樹呢?因為GBDT每次迭代要擬合的是梯度值,是連續(xù)值所以要用回歸樹。

對于回歸樹算法來說最重要的是尋找最佳的劃分點(diǎn),那么回歸樹中的可劃分點(diǎn)包含了所有特征的所有可取的值。在分類樹中最佳劃分點(diǎn)的判別標(biāo)準(zhǔn)是熵或者基尼系數(shù),都是用純度來衡量的,但是在回歸樹中的樣本標(biāo)簽是連續(xù)數(shù)值,所以再使用熵之類的指標(biāo)不再合適,取而代之的是平方誤差,它能很好的評判擬合程度。

回歸樹生成算法:

輸入:訓(xùn)練數(shù)據(jù)集D:輸出:回歸樹f(x).在訓(xùn)練數(shù)據(jù)集所在的輸入空間中,遞歸的將每個區(qū)域劃分為兩個子區(qū)域并決定每個子區(qū)域上的輸出值,構(gòu)建二叉決策樹:(1)選擇最優(yōu)切分變量jj與切分點(diǎn)s,求解

GBDT算法原理以及實例理解

遍歷變量j,對固定的切分變量j掃描切分點(diǎn)s,選擇使得上式達(dá)到最小值的對(j,s).

(2)用選定的對(j,s)劃分區(qū)域并決定相應(yīng)的輸出值:

GBDT算法原理以及實例理解

(3)繼續(xù)對兩個子區(qū)域調(diào)用步驟(1)和(2),直至滿足停止條件。

(4)將輸入空間劃分為M個區(qū)域,生成決策樹:

GBDT算法原理以及實例理解

2. Gradient Boosting:擬合負(fù)梯度

梯度提升樹(Grandient Boosting)是提升樹(Boosting Tree)的一種改進(jìn)算法,所以在講梯度提升樹之前先來說一下提升樹。

先來個通俗理解:假如有個人30歲,我們首先用20歲去擬合,發(fā)現(xiàn)損失有10歲,這時我們用6歲去擬合剩下的損失,發(fā)現(xiàn)差距還有4歲,第三輪我們用3歲擬合剩下的差距,差距就只有一歲了。如果我們的迭代輪數(shù)還沒有完,可以繼續(xù)迭代下面,每一輪迭代,擬合的歲數(shù)誤差都會減小。最后將每次擬合的歲數(shù)加起來便是模型輸出的結(jié)果。

提升樹算法:

(1)初始化

(2)對m=1,2,…,M?(a)計算殘差

(b)擬合殘差學(xué)習(xí)一個回歸樹,得到

(c) 更新

(3)得到回歸問題提升樹

GBDT算法原理以及實例理解

上面?zhèn)未a中的殘差是什么?在提升樹算法中,假設(shè)我們前一輪迭代得到的強(qiáng)學(xué)習(xí)器是

GBDT算法原理以及實例理解

損失函數(shù)是

GBDT算法原理以及實例理解

我們本輪迭代的目標(biāo)是找到一個弱學(xué)習(xí)器

GBDT算法原理以及實例理解

最小化本輪的損失

GBDT算法原理以及實例理解

當(dāng)采用平方損失函數(shù)時

GBDT算法原理以及實例理解

這里,

GBDT算法原理以及實例理解

是當(dāng)前模型擬合數(shù)據(jù)的殘差(residual)。所以,對于提升樹來說只需要簡單地擬合當(dāng)前模型的殘差。??回到我們上面講的那個通俗易懂的例子中,第一次迭代的殘差是10歲,第二次殘差4歲...

當(dāng)損失函數(shù)是平方損失和指數(shù)損失函數(shù)時,梯度提升樹每一步優(yōu)化是很簡單的,但是對于一般損失函數(shù)而言,往往每一步優(yōu)化起來不那么容易,針對這一問題,F(xiàn)reidman提出了梯度提升樹算法,這是利用最速下降的近似方法,其關(guān)鍵是利用損失函數(shù)的負(fù)梯度作為提升樹算法中的殘差的近似值。那么負(fù)梯度長什么樣呢?第t輪的第i個樣本的損失函數(shù)的負(fù)梯度為:

GBDT算法原理以及實例理解

此時不同的損失函數(shù)將會得到不同的負(fù)梯度,如果選擇平方損失

GBDT算法原理以及實例理解

負(fù)梯度為

GBDT算法原理以及實例理解

此時我們發(fā)現(xiàn)GBDT的負(fù)梯度就是殘差,所以說對于回歸問題,我們要擬合的就是殘差。??那么對于分類問題呢?二分類和多分類的損失函數(shù)都是log loss,本文以回歸問題為例進(jìn)行講解。

3. GBDT算法原理

上面兩節(jié)分別將Decision Tree和Gradient Boosting介紹完了,下面將這兩部分組合在一起就是我們的GBDT了。

GBDT算法:(1)初始化弱學(xué)習(xí)器

GBDT算法原理以及實例理解

(2)對m=1,2,…,M有:

(a)對每個樣本i=1,2,…,N,計算負(fù)梯度,即殘差

GBDT算法原理以及實例理解

(b)將上步得到的殘差作為樣本新的真實值,并將數(shù)據(jù)作為下棵樹的訓(xùn)練數(shù)據(jù),得到一顆新的回歸樹,其對應(yīng)的葉子節(jié)點(diǎn)區(qū)域為。其中J為回歸樹t的葉子節(jié)點(diǎn)的個數(shù)。

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

GBDT算法原理以及實例理解

(d)更新強(qiáng)學(xué)習(xí)器

GBDT算法原理以及實例理解

(3)得到最終學(xué)習(xí)器

GBDT算法原理以及實例理解

4. 實例詳解

==本人用python以及pandas庫實現(xiàn)GBDT的簡易版本,在下面的例子中用到的數(shù)據(jù)都在github可以找到,大家可以結(jié)合代碼和下面的例子進(jìn)行理解,歡迎star~==??Github:https://github.com/Freemanzxp/GBDT_Simple_Tutorial

數(shù)據(jù)介紹:

如下表所示:一組數(shù)據(jù),特征為年齡、體重,身高為標(biāo)簽值。共有5條數(shù)據(jù),前四條為訓(xùn)練樣本,最后一條為要預(yù)測的樣本。

GBDT算法原理以及實例理解

訓(xùn)練階段:

參數(shù)設(shè)置:

學(xué)習(xí)率:learning_rate=0.1

迭代次數(shù):n_trees=5

樹的深度:max_depth=3

1.初始化弱學(xué)習(xí)器:

GBDT算法原理以及實例理解

損失函數(shù)為平方損失,因為平方損失函數(shù)是一個凸函數(shù),直接求導(dǎo),倒數(shù)等于零,得到c。

GBDT算法原理以及實例理解

令導(dǎo)數(shù)等于0

GBDT算法原理以及實例理解

所以初始化時,c取值為所有訓(xùn)練樣本標(biāo)簽值的均值。c=(1.1+1.3+1.7+1.8)/4=1.475,此時得到初始學(xué)習(xí)器

GBDT算法原理以及實例理解

2.對迭代輪數(shù)m=1,2,…,M:??由于我們設(shè)置了迭代次數(shù):n_trees=5,這里的M=5。??計算負(fù)梯度,根據(jù)上文損失函數(shù)為平方損失時,負(fù)梯度就是殘差殘差,再直白一點(diǎn)就是y與上一輪得到的學(xué)習(xí)器的差值

GBDT算法原理以及實例理解

殘差在下表列出:

GBDT算法原理以及實例理解

此時將殘差作為樣本的真實值來訓(xùn)練弱學(xué)習(xí)器,即下表數(shù)據(jù):

GBDT算法原理以及實例理解

接著,尋找回歸樹的最佳劃分節(jié)點(diǎn),遍歷每個特征的每個可能取值。從年齡特征的5開始,到體重特征的70結(jié)束,分別計算分裂后兩組數(shù)據(jù)的平方損失(Square Error),左節(jié)點(diǎn)平方損失,右節(jié)點(diǎn)平方損失,找到使平方損失和最小的那個劃分節(jié)點(diǎn),即為最佳劃分節(jié)點(diǎn)。

例如:以年齡7為劃分節(jié)點(diǎn),將小于7的樣本劃分為到左節(jié)點(diǎn),大于等于7的樣本劃分為右節(jié)點(diǎn)。

左節(jié)點(diǎn)包括,右節(jié)點(diǎn)包括樣本,所有可能劃分情況如下表所示:

GBDT算法原理以及實例理解

以上劃分點(diǎn)是的總平方損失最小為0.025有兩個劃分點(diǎn):年齡21和體重60,所以隨機(jī)選一個作為劃分點(diǎn),這里我們選年齡21??現(xiàn)在我們的第一棵樹長這個樣子:

GBDT算法原理以及實例理解

我們設(shè)置的參數(shù)中樹的深度max_depth=3,現(xiàn)在樹的深度只有2,需要再進(jìn)行一次劃分,這次劃分要對左右兩個節(jié)點(diǎn)分別進(jìn)行劃分:

對于左節(jié)點(diǎn),只含有0,1兩個樣本,根據(jù)下表我們選擇年齡7劃分

GBDT算法原理以及實例理解

對于右節(jié)點(diǎn),只含有2,3兩個樣本,根據(jù)下表我們選擇年齡30劃分(也可以選體重70)

GBDT算法原理以及實例理解

現(xiàn)在我們的第一棵樹長這個樣子:

GBDT算法原理以及實例理解

此時我們的樹深度滿足了設(shè)置,還需要做一件事情,給這每個葉子節(jié)點(diǎn)分別賦一個參數(shù)Υ,來擬合殘差。

GBDT算法原理以及實例理解

這里其實和上面初始化學(xué)習(xí)器是一個道理,平方損失求導(dǎo),令導(dǎo)數(shù)等于零,化簡之后得到每個葉子節(jié)點(diǎn)的參數(shù)Υ,其實就是標(biāo)簽值的均值。這個地方的標(biāo)簽值不是原始的 y,而是本輪要擬合的標(biāo)殘差

根據(jù)上述劃分結(jié)果,為了方便表示,規(guī)定從左到右為第1,2,3,4個葉子結(jié)點(diǎn)

GBDT算法原理以及實例理解

此時的樹長這個樣子:

GBDT算法原理以及實例理解

此時可更新強(qiáng)學(xué)習(xí)器,需要用到參數(shù)學(xué)習(xí)率:learning_rate=0.1,用lr表示。

GBDT算法原理以及實例理解

為什么要用學(xué)習(xí)率呢?這是Shrinkage的思想,如果每次都全部加上(學(xué)習(xí)率為1)很容易一步學(xué)到位導(dǎo)致過擬合。

重復(fù)此步驟,直到m>5結(jié)束,最后生成5棵樹。下面將展示每棵樹最終的結(jié)構(gòu),這些圖都是GitHub上的代碼生成的,感興趣的同學(xué)可以去一探究竟

Github:https://github.com/Freemanzxp/GBDT_Simple_Tutorial第一棵樹:

GBDT算法原理以及實例理解

第二棵樹:

GBDT算法原理以及實例理解.

第三棵樹:

GBDT算法原理以及實例理解

第四棵樹:

GBDT算法原理以及實例理解

第五棵樹:

GBDT算法原理以及實例理解

4.得到最后的強(qiáng)學(xué)習(xí)器:

GBDT算法原理以及實例理解

5.預(yù)測樣本5:

中,樣本4的年齡為25,大于劃分節(jié)點(diǎn)21歲,又小于30歲,所以被預(yù)測為0.2250。

中,樣本4的…此處省略…所以被預(yù)測為0.2025

==為什么是0.2025?這是根據(jù)第二顆樹得到的,可以GitHub簡單運(yùn)行一下代碼==

中,樣本4的…此處省略…所以被預(yù)測為0.1823

中,樣本4的…此處省略…所以被預(yù)測為0.1640

中,樣本4的…此處省略…所以被預(yù)測為0.1476

最終預(yù)測結(jié)果:

GBDT算法原理以及實例理解

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 計算
    +關(guān)注

    關(guān)注

    2

    文章

    450

    瀏覽量

    38835
  • GBDT
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    3906

原文標(biāo)題:GBDT算法原理以及實例理解

文章出處:【微信號:AI_shequ,微信公眾號:人工智能愛好者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    STM32的PID算法實例

    STM32單片機(jī)的PID算法實例,通過PID算法控制STM32的PWM輸出,反饋量是PWM低通濾波后得到的AD
    發(fā)表于 09-19 15:44

    GBDT算法原理和模型訓(xùn)練

    算法原理再講GBDT之前先給大家講個故事,有一個年輕的阿姨今年50歲,現(xiàn)在我們不知道她的真實年齡,我們想通過他的皮膚、穿著打扮、頭發(fā)顏色、言行舉止、面部特征來推測她的真實年齡,假如我們根據(jù)這些輸入
    發(fā)表于 01-23 14:38

    STM32單片機(jī)的PID算法實例分享

    STM32單片機(jī)的PID算法實例
    發(fā)表于 04-11 14:43

    基于LabVIEW的智能算法實例

    基于LabVIEW的智能算法實例,包括bp神經(jīng)網(wǎng)絡(luò),PID控制,粒子群算法,模糊控制,小波去噪。適合相關(guān)從業(yè)人員交流學(xué)習(xí)
    發(fā)表于 03-07 20:08

    由淺入深理解PID控制

    本文是本人看了眾多的PID算法文獻(xiàn),結(jié)合自己理解,由淺入深理解PID以及記錄自己的理解。大部分內(nèi)容來源于其他文獻(xiàn),但無法一一列舉,盡量列出能
    發(fā)表于 01-05 06:24

    對于PID控制/算法理解

    補(bǔ)充一下,他們的視頻真的把我看哭了以下是對于PID控制/算法理解、總結(jié):1.PID算法有什么好?首先說為什么要用PID算法,咱們使用單片機(jī)直接電平控制多簡單,它不香嗎?在這里咱們可以
    發(fā)表于 01-14 08:46

    PID算法理解

    PID算法理解
    發(fā)表于 11-17 18:35 ?2次下載

    基于GBDT個人信用評估方法

    Tree(GBDT)的個人信用評估方法。GBDT天然可處理混合數(shù)據(jù)類型的數(shù)據(jù)集,可以發(fā)現(xiàn)多種有區(qū)分性的特征以及特征組合,不需要做復(fù)雜的特征變換,對于特征類型復(fù)雜的信用數(shù)據(jù)集有明顯的優(yōu)勢,且其通過其損失函數(shù)可以很好地處理異常點(diǎn)。
    發(fā)表于 11-03 17:27 ?2次下載
    基于<b class='flag-5'>GBDT</b>個人信用評估方法

    SparkMLlib GBDT算法工業(yè)大數(shù)據(jù)實戰(zhàn)

    SparkMLlib 中的GBDT算法,并將應(yīng)用該算法對工業(yè)數(shù)據(jù)進(jìn)行代碼實戰(zhàn)。1算法概念GB(Gradient Boosting)梯度提升算法
    的頭像 發(fā)表于 04-28 14:11 ?3844次閱讀
    SparkMLlib <b class='flag-5'>GBDT</b><b class='flag-5'>算法</b>工業(yè)大數(shù)據(jù)實戰(zhàn)

    XGBoost原理概述 XGBoost和GBDT的區(qū)別

    相比于經(jīng)典的GBDT,xgboost做了一些改進(jìn),從而在效果和性能上有明顯的提升。
    的頭像 發(fā)表于 07-16 18:54 ?7.9w次閱讀
    XGBoost原理概述 XGBoost和<b class='flag-5'>GBDT</b>的區(qū)別

    SparkMLlib GBDT算法工業(yè)大數(shù)據(jù)的實戰(zhàn)案例

    在格物匯之前發(fā)表的《工業(yè)大數(shù)據(jù)挖掘的利器——Spark MLlib》中提到,Spark 的MLlib組件能夠?qū)I(yè)現(xiàn)場海量數(shù)據(jù)進(jìn)行高效挖掘,快速呈現(xiàn)結(jié)果給業(yè)務(wù)分析人員。接下來將向大家介紹SparkMLlib 中的GBDT算法,并將應(yīng)用該
    的頭像 發(fā)表于 12-25 17:42 ?955次閱讀

    邏輯回歸與GBDT模型各自的原理及優(yōu)缺點(diǎn)

    一、GBDT+LR簡介 協(xié)同過濾和矩陣分解存在的劣勢就是僅利用了用戶與物品相互行為信息進(jìn)行推薦, 忽視了用戶自身特征, 物品自身特征以及上下文信息等,導(dǎo)致生成的結(jié)果往往會比較片面。而這次介紹的這個
    的頭像 發(fā)表于 12-26 10:01 ?1.2w次閱讀
    邏輯回歸與<b class='flag-5'>GBDT</b>模型各自的原理及優(yōu)缺點(diǎn)

    GBDT是如何用于分類的

    -?https://www.cnblogs.com/always-fight/p/9400346.html 編輯:阿澤的學(xué)習(xí)筆記 ? 一 簡介 GBDT 在傳統(tǒng)機(jī)器學(xué)習(xí)算法里面是對真實分布擬合的最好
    的頭像 發(fā)表于 12-26 10:30 ?3188次閱讀
    <b class='flag-5'>GBDT</b>是如何用于分類的

    PID控制算法通俗理解.pdf

    PID控制算法通俗理解.pdf
    發(fā)表于 12-21 09:12 ?5次下載

    理解STM32控制中常見的PID算法

    理解STM32控制中常見的PID算法
    的頭像 發(fā)表于 10-17 17:28 ?2509次閱讀
    <b class='flag-5'>理解</b>STM32控制中常見的PID<b class='flag-5'>算法</b>
    主站蜘蛛池模板: 国产成人一区二区三区在线观看| 粗壮挺进邻居人妻无码| 视频一区国产在线第一页| 麻豆成人啪啪色婷婷久久| 九色PORNY真实丨国产免费| 国内精品蜜汁乔依琳视频| 国产亚洲精品线观看不卡| 国产精品人成视频免费999 | 国产精品AV视频一二三区| 大学生高潮无套内谢视频| 超碰在线97久久视频观看| 成人在线免费视频| 俄罗斯6一9泑女网站| 国产成人免费| 国产人妻人伦精品熟女麻豆| 国产欧美精品一区二区色综合| 国产人妻午夜无码AV天堂| 国产在线一区二区AV视频| 精品视频久久久久| 久久中文字幕亚洲精品最新| 美国色情三级欧美三级纸匠情挑| 免费观看久久| 欧美 亚洲 中文字幕 高清| 青青久在线视频免费观看| 色吧.com| 亚洲精品国产高清不卡在线| 亚洲中文无码永久免费| 中文字幕无码乱人伦蜜桃| adc免费观看| 成人在线视频免费| 国产三级在线观看视频| 精品区2区3区4区产品乱码9| 久久中文字幕人妻熟AV女蜜柚M| 蜜芽一二三区| 日本双渗透| 亚洲 日韩 国产 中文视频| 伊人在线视频| seba51久久精品| 国产人妻精品午夜福利免费不卡 | 农民下乡在线观看3| 日本久久久久久久做爰片日本 |