在看完好多文章后發(fā)現(xiàn)沒有幾個文章解決了我的問題,我自己寫一下
gbdt是什么?
gbdt是gradient boosting Decision Tree,梯度提升樹。這里boosting是一種集成學(xué)習(xí)的一種方式,建立一棵樹是在前一棵樹上做的提高。
BDT
我們先不說梯度,就說提升樹是怎么提升的。 BDT的核心就在于,每一棵樹學(xué)的是之前所有樹結(jié)論和的殘差,這個殘差就是一個加預(yù)測值后能得真實(shí)值的累加量。比如小王的真實(shí)身高是175cm,我們訓(xùn)練的時候,第一棵樹的擬合過后預(yù)測身高是180cm,我們與真實(shí)數(shù)據(jù)比對,發(fā)現(xiàn)差了5cm,即殘差為5cm。那么在第二棵樹里我們把 小王的身高設(shè)為5cm去擬合學(xué)習(xí),如果第二棵樹真的能把小王分到的身高5cm的葉子節(jié)點(diǎn),那累加兩棵樹的結(jié)論就是小王的真實(shí)身高;如果第二棵樹的結(jié)論是7cm,則A仍然存在2cm的殘差,第三棵樹里小王的升高就變成2cm,繼續(xù)學(xué)。。。
然后最后把這個小王在這些樹上的殘差加上第一棵樹的值累加起來就輸出了預(yù)測值。
我的樹是像決策樹或是隨機(jī)森林里 基于gini或是entropy來分支的嗎?
以預(yù)測身高為例,該預(yù)測值等于這個葉子節(jié)點(diǎn)所有人的身高的平均值。進(jìn)行分支的時候,會遍歷沒一特征的每個閾值來找出分割點(diǎn),但是評估的標(biāo)準(zhǔn)不再是熵減的最大,而是最小化均方差 -即(實(shí)際身高-預(yù)測身高)^2 總和/ n。被預(yù)測錯的人越多,就錯得越離譜,均方差越大,通過最小化均方差來找到最靠譜的分支特征與閾值。分支到什么時候停止呢?分支直到每個葉子節(jié)點(diǎn)的年齡都唯一(這個好像不大可能,)或者達(dá)到預(yù)先設(shè)置的終止條件,如葉子節(jié)點(diǎn)的案例數(shù)。
gbdt核心思想就如以上,但是普通的樹和gbdt結(jié)果一樣,那為什么還需要gbdt呢?
原因是過擬合
GB(Gradient Boosting)
我們前面一直都在討論GBDT的基本原理,是從宏觀上對于這種算法有個感性的認(rèn)識。但是我們要想進(jìn)一步理解GBDT,就得知道負(fù)梯度擬合,或者我們也叫梯度提升
我們都知道,在機(jī)器學(xué)習(xí)算法中,為了降低誤差函數(shù),我們會有一個方法叫做梯度下降法。其做法是誤差函數(shù)中,每一步都走當(dāng)前的梯度方向,也就是下降最快的方向進(jìn)行下降,這樣多次迭代步長之后,誤差函數(shù)就會降到一個局部最低點(diǎn)(凸函數(shù)中也是全局最低點(diǎn)),也就得到了最小的誤差函數(shù)。
我在掘金上看到一個技術(shù)博主寫得很好我就引用過來了