一、什么是GBDT
二厂僧、GBDT與傳統(tǒng)Adaboost的不同之處
三扣草、GBDT的負(fù)梯度擬合
四、GBDT算法流程
五颜屠、GBDT工作過(guò)程實(shí)例
六辰妙、GBDT常用損失函數(shù)
七、算法的優(yōu)缺點(diǎn)
八甫窟、補(bǔ)充說(shuō)明:幾種常見(jiàn)的損失函數(shù)
***************************************************************************************************************
一密浑、什么是gbdt
? ? ? ? GBDT的全稱梯度提升樹(shù)算法(Gradient Boosting Decison Tree)。我們?cè)谶M(jìn)行模型訓(xùn)練時(shí)有兩個(gè)原則:1.如何使L損失函數(shù)最写志尔破;2.怎樣快速地使L損失函數(shù)變小。對(duì)于問(wèn)1可以求導(dǎo)來(lái)確定浇衬,對(duì)于問(wèn)2無(wú)論此時(shí)的cost?function是什么懒构,是均方差還是均差,只要它以誤差作為衡量標(biāo)準(zhǔn)耘擂,殘差向量比如(-1,?1,?-1,?1)都是它的全局最優(yōu)方向胆剧,這就是Gradient。另外醉冤,這里的決策樹(shù)選取Cart樹(shù)秩霍。
? 二、GBDT與傳統(tǒng)Adaboost的不同之處?
????????GBDT也是集成學(xué)習(xí)Boosting家族的成員冤灾,但是卻和傳統(tǒng)的Adaboost有很大的不同前域。對(duì)于Adaboost利用前一輪迭代弱學(xué)習(xí)器的誤差率來(lái)更新樣本的權(quán)重,利用更新后的樣本來(lái)訓(xùn)練下一個(gè)迭代弱學(xué)習(xí)器韵吨,這樣不斷地迭代下去。然而移宅,對(duì)于GBDT而言本輪的弱學(xué)習(xí)器, 損失函數(shù)是L(y,ft?1(x))归粉。我們本輪迭代的目標(biāo)是找到一個(gè)CART回歸樹(shù)模型的弱學(xué)習(xí)器
,讓本輪的損失函數(shù)
最小漏峰。也就是說(shuō)糠悼,本輪迭代找到?jīng)Q策樹(shù),要讓樣本的損失盡量變得更小浅乔。
????????用一個(gè)通俗的例子來(lái)講假如有個(gè)人30歲倔喂,我們首先用20歲去擬合铝条,發(fā)現(xiàn)損失有10歲,這時(shí)我們用6歲去擬合剩下的損失席噩,發(fā)現(xiàn)差距還有4歲班缰,第三輪我們用3歲擬合剩下的差距,差距就只有一歲了悼枢。如果我們的迭代輪數(shù)還沒(méi)有完埠忘,可以繼續(xù)迭代下面,每一輪迭代馒索,擬合的歲數(shù)誤差都會(huì)減小莹妒。
三、gbdt的負(fù)梯度擬合
? ? ? ? 1.為什么進(jìn)行負(fù)梯度擬合绰上?
? ? ? ? GBDT的思想就是不斷迭代去擬合殘差旨怠,使殘差不斷減少。每次迭代構(gòu)造的Cart樹(shù)都是前一輪的殘差擬合的蜈块。當(dāng)GBDT損失函數(shù)為誤差平方函數(shù)時(shí)运吓,GBDT的負(fù)梯度就是擬合的是殘差。但是如果損失函數(shù)不是誤差平方函數(shù)的話Freidman提出了梯度提升算法:利用最速下降的近似方法疯趟,即利用損失函數(shù)的負(fù)梯度在當(dāng)前模型的值拘哨,作為回歸問(wèn)題中提升樹(shù)算法的殘差的近似值,擬合一個(gè)回歸樹(shù)信峻。其實(shí)負(fù)梯度就是Loss Function減少最快的方向倦青。
? ? ? ? 2.負(fù)梯度怎樣擬合殘差?
????????大牛Freidman提出了用損失函數(shù)的負(fù)梯度來(lái)擬合本輪損失的近似值盹舞,進(jìn)而擬合一個(gè)CART回歸樹(shù)产镐。第t輪的第i個(gè)樣本的損失函數(shù)的負(fù)梯度表示為:
?????????注:這里ctj是葉子節(jié)點(diǎn)的輸出值,下一節(jié)結(jié)合具體例子來(lái)說(shuō)明ctj的值踢步。但是這里有個(gè)疑問(wèn)癣亚,損失函數(shù)的最小值只能輸出一個(gè),葉子節(jié)點(diǎn)ctj這么多輸出一個(gè)值嗎获印??
四述雾、GBDT算法流程????????
? ? ? ? 1.GBDT回歸算法
? ? ? ? 下面是GBDT回歸算法的具體過(guò)程,這里沒(méi)有一起說(shuō)GBDT分類算法是因?yàn)槠漭敵龅念悇e值而不是連續(xù)值兼丰,無(wú)法用負(fù)梯度來(lái)擬合殘差玻孟。所以要進(jìn)行變化才能應(yīng)用負(fù)梯度。
? ? ? ? 2.GBDT二元分類算法
? ??????GBDT的分類算法從思想上和GBDT的回歸算法沒(méi)有區(qū)別鳍征,但是由于樣本輸出不是連續(xù)的值黍翎,而是離散的類別,導(dǎo)致我們無(wú)法直接從輸出類別去擬合類別輸出的誤差艳丛。
? ??????了解決這個(gè)問(wèn)題匣掸,主要有兩個(gè)方法趟紊,一個(gè)是用指數(shù)損失函數(shù),此時(shí)GBDT退化為Adaboost算法碰酝。另一種方法是用類似于邏輯回歸的對(duì)數(shù)似然損失函數(shù)的方法霎匈。也就是說(shuō),我們用的是類別的預(yù)測(cè)概率值和真實(shí)概率值(可應(yīng)用負(fù)梯度)的差來(lái)擬合損失砰粹。本文僅討論用對(duì)數(shù)似然損失函數(shù)的GBDT分類唧躲。而對(duì)于對(duì)數(shù)似然損失函數(shù),我們又有二元分類和多元分類的區(qū)別碱璃。
? ? ? ? 注:正因?yàn)槎诸怗BDT算法輸出的值是類別沒(méi)有具體的值弄痹,那我們應(yīng)該想辦法找到一個(gè)具體的值并且還能對(duì)應(yīng)到輸出的類別上,這時(shí)想到預(yù)測(cè)樣本x是y的概率值嵌器。把預(yù)測(cè)正確的概率值與損失函數(shù)結(jié)合到一起肛真,即預(yù)測(cè)的概率值越大那么損失函是的值越小。又因?yàn)榇鷥r(jià)函數(shù)的值是各個(gè)樣本損失函數(shù)的值加和一起爽航,同時(shí)概率之間的同時(shí)滿足需要使用乘法p(y1|x).p(y2|x)...p(y3|x),所以我們定義度數(shù)似然函數(shù)為損失函數(shù)蚓让,即代價(jià)函數(shù)為
五、GBDT工作過(guò)程實(shí)例
? ? ? ? https://www.cnblogs.com/peizhe123/p/6105696.html
六讥珍、GBDT常用損失函數(shù)
? ??????https://www.cnblogs.com/pinard/p/6140514.html參看鏈接
七历极、算法的優(yōu)缺點(diǎn)?
八、幾種常見(jiàn)的損失函數(shù)
? ? ? ? 1.損失函數(shù)(loss function):定義在單個(gè)樣本上的衷佃,是指一個(gè)樣本的誤差趟卸。
? ? ? ? 2.代價(jià)函數(shù)(cost function):是定義在整個(gè)訓(xùn)練集上的,是所有樣本誤差的平均氏义,也就是所有損失函數(shù)值的平均锄列。
? ? ? ? 3.目標(biāo)函數(shù)(object function):是指最終需要優(yōu)化的函數(shù),一般來(lái)說(shuō)是經(jīng)驗(yàn)風(fēng)險(xiǎn)+結(jié)構(gòu)風(fēng)險(xiǎn)惯悠,也就是(代價(jià)函數(shù)+正則化項(xiàng))邻邮。
? ??????https://www.cnblogs.com/lliuye/p/9549881.html參考鏈接