從參數(shù)空間到函數(shù)空間理解GBDT+XGBoost

內容摘要

  • 泰勒公式
  • 最優(yōu)化方法
    • 梯度下降法
    • 牛頓法
  • 從參數(shù)空間到函數(shù)空間
    • 從Gradient descend到Gradient boosting
    • 從Newton's method到Newton Boosting
  • Gradient boosting tree算法原理
  • Newton Boosting算法原理
  • LightGBM

泰勒公式

  1. 定義:是一個用函數(shù)在某點的信息价脾,描述其附近取值的公式。
  2. 基本形式:

    其中一階泰勒展開式就是求一階導平夜,二階展開式即求二階導沛申。x0為已知酪耳,公式表示f(x)在x0附近的展開铡恕。

  3. GDBT或是xgb都是一個參數(shù)迭代的過程翰萨,因此這里表示一個迭代形式的泰勒函數(shù):

    假設

    將f(x^t) 在x^(t-1)處進行展開:

梯度下降法(Gradient Descend Method)

機器學習中需要最小化損失函數(shù)L(θ),這個θ就是要求解的模型參數(shù)脏答。GDM常用于求解無約束最優(yōu)化問題,是一種迭代方法亩鬼。初始話θ為θ^0殖告,不斷迭代來更新θ的值,進行損失函數(shù)的極小化雳锋。

  • 迭代公式 θ^t = θ^(t-1)+△θ
    進行一階泰勒展開:



    要使得L(θ^t) < L(θ^(t-1)),則可然萍ā:


  • 其中解釋一下為何△θ要取值為上式:首先明確,a的值為正玷过,為了保證△θ恒為負數(shù)爽丹,則需要乘上L’(θ^t-1)先保證其為整數(shù),再加上負號即可辛蚊。
  • 其實a就是我們常用的學習速率
  • a如何選仍列?
    對于這個問題其實有很多方法可以使用袋马,如果考慮使用full gradient較為笨但是精確的方法是line search初澎,但是其復雜度過高,因此通常我們選取一個很小的值即可例如0.01-0.1之間虑凛。

牛頓法

牛頓法就是求取二階泰勒展開:

假設我們要求的參數(shù)θ是一維谤狡,則記一階導數(shù)為g,二階導數(shù)為h卧檐,那么上式可表示為:



此時若求取L(θ^t) 的極小值墓懂,則令g△θ+h△θ^2/2極小,求取其一階導數(shù)為0時的△θ即可:



如果參數(shù)θ是向量形式霉囚,那么可以向高維空間推廣捕仔,此時的h為H(海森矩陣)。


以上介紹的梯度下降和牛頓法均為參數(shù)空間的優(yōu)化算法
如何從參數(shù)空間推廣到函數(shù)空間呢盈罐?即從Gradient descend到Gradient boosting榜跌;從Newton's method到Newton Boosting
下面介紹GBDT和xgb中使用的函數(shù)空間的優(yōu)化算法,其基本原理還是梯度下降和牛頓法盅粪。
關系是這樣的:
GBDT泛指一切梯度提升樹钓葫,包括XGB。為了區(qū)分二者票顾,可以利用其梯度下降的原理進行區(qū)分:

  • GBDT在函數(shù)空間中利用梯度下降進行優(yōu)化
  • XGB在函數(shù)空間利用牛頓法進行優(yōu)化

1. 梯度下降從參數(shù)空間到函數(shù)空間


其中對于函數(shù)空間础浮,僅僅是將參數(shù)的擬合換為函數(shù)的擬合帆调,每次仍然迭代的是一個負梯度,只是其最終得到的是增量函數(shù)的累加而不是增量參數(shù)累加豆同。
GBDT里番刊,迭代項ft(x)就是我們的決策樹,最終將每棵決策樹的預測值(函數(shù))加起來影锈。

2. 牛頓法從參數(shù)空間到函數(shù)空間


對于牛頓法的函數(shù)空間優(yōu)化芹务,其方法類似于梯度下降的函數(shù)空間優(yōu)化

3. boosting算法小結
無論是梯度下降還是牛頓法,其函數(shù)空間上的boosting優(yōu)化模型都看作是一類加法模型鸭廷,相加的對象可以是一系列弱分類器或是回歸樹枣抱。

4. 牛頓法小結
牛頓法是梯度下降的進一步優(yōu)化,梯度下降利用目標函數(shù)的一階偏導信息辆床,以負梯度方向作為搜索方向佳晶,只考慮目標函數(shù)在迭代點的局部性質;而牛頓法不僅使用目標函數(shù)的一階偏導數(shù)佛吓,還進一步利用了目標函數(shù)的二階偏導,這樣就考慮了梯度變化的趨勢垂攘,因而能更全面地確定合適的搜索方向以加快收斂维雇。


GBDT原理分析

GBDT最早由Friedman提出,其核心是擬合前面迭代所留下來的殘差晒他,使其達到最小吱型。

  • 模型F定義為一個加法模型:


其中x為輸入樣本,h為分類回歸樹陨仅,w是分類回歸樹的參數(shù)津滞,a是每棵樹的權重。

  • 通過最小化損失函數(shù)求解最優(yōu)模型:


  • GBDT原是論文的算法偽代碼:


算法的輸入(xi,yi)分別是樣本和lable灼伤,T為樣本個數(shù)触徐,L為損失函數(shù)

  • GBDT的學習過程是使得前面擬合的殘差達到最小,那么首先計算殘差狐赡,即算法中的2.1步撞鹉,也稱為響應。
  • 接著學習第t棵樹時就是尋找最新的殘差的最小值颖侄∧癯可以看到lable yi變成了前t-1棵樹的殘差值。
    然后尋找合適的步長(通常情況览祖,不使用line search孝鹊,而是手動給一個很小的值)
    最后將第t棵樹與前t-1棵樹加起來,更新模型即可展蒂。

XGBoost原理

  • 模型的函數(shù)形式


xgb同樣是一個加性模型又活,同樣是在學習多棵樹的結果并將其累加苔咪。f(x)就是每一棵樹。其中q(x)表示將樣本x分到了某個葉子節(jié)點上皇钞,w是葉子節(jié)點的分數(shù)悼泌,所以wq(x)就表示回歸樹對樣本的預測值。

  • 回歸樹的預測輸出是一個實數(shù)的分數(shù)夹界,因此可以用于回歸和分類馆里,以及排序等任務。

目標函數(shù)

  • 首先回憶一下參數(shù)空間的目標函數(shù):



    實際上就是一個誤差函數(shù)+正則化項

其中誤差函數(shù)可以是平方誤差或是對數(shù)誤差等可柿;正則化項可以是L1或L2

  • 正則化項

wepon大神說道鸠踪,正則化項的理解可以從貝葉斯先驗角度去理解。也就是說复斥,如果引入L2营密,那么就是假設模型參數(shù)服從正態(tài)分布(相當于對參數(shù)加上了分布約束),這樣一來就將參數(shù)的取值進行一定的限制目锭,同時可以知道评汰,正態(tài)分布取0附近的概率最大,因此又將參數(shù)空間可能的范圍進一步縮小痢虹,模型最終學習出來的參數(shù)取值都在0附近被去。

  • 現(xiàn)在來看函數(shù)空間的目標函數(shù)


其中正則化項是對每一棵樹的復雜度進行懲罰。
相比于GBDT奖唯,xgb目標函數(shù)就是多了一個正則化項惨缆。這樣的做法使得模型不易過擬合。
既然是對復雜度做懲罰丰捷,那么樹的什么特性可以反映復雜度坯墨?

  • 樹的深度、內部節(jié)點個數(shù)病往、葉子節(jié)點個數(shù)捣染,葉節(jié)點分數(shù)
    xgb中選用了葉子節(jié)點個數(shù)(T),葉節(jié)點分數(shù)(w)來反映樹的復雜度停巷,其復雜度定義如下:

看完正則化項后再來關心一下目標函數(shù)中的誤差函數(shù)


  • 首先模型第t次迭代后將ft(x)與前t次的迭代結果進行相加液斜,并代入目標函數(shù),即式2叠穆,然后將誤差項在yt-1處進行二階展開少漆,然后去掉常數(shù)項得到:



    上面這個形式跟牛頓法的形式幾乎一樣,由于f在函數(shù)空間中是一個樹的形式硼被,則將f寫為樹的結構:

    代入目標函數(shù)中得到:

    雖然現(xiàn)在loss函數(shù)可以求最小值了示损,但是公式的兩項并不統(tǒng)一,即:

    如何將兩項進行統(tǒng)一以方便求導呢嚷硫?因為樣本都會落在每一個節(jié)點上面检访,因此可以定義如下:

    對每一個樣本都相應有一個gi和hi始鱼。從最終的公式可以看到,由于是按照葉子節(jié)點進行累加脆贵,所以相當于每一個葉子節(jié)點均有一個誤差函數(shù)医清,都要進行相應的誤差計算。
    根據(jù)轉換后的損失函數(shù)卖氨,就可以求極小值了会烙,前提是樹結構確定:
    相當于每一棵樹的最小損失都可以計算了。

既然前提是需要樹結構確定筒捺,那么如何確定樹的結構柏腻?即如何確定樹節(jié)點的分裂方法?

  1. 可以暴力枚舉全部的樹結構然后選擇損失最小的結構即可系吭。明顯是一個NP問題五嫂。不現(xiàn)實!
  2. 貪心法:每次嘗試分裂一個葉節(jié)點肯尺,計算前后增益沃缘,選擇增益最大的保留。

    那么增益如何計算则吟?
  • xgb增益計算方法的演進:
  1. 初始版本:

    這樣的方法相當于去遍歷所有可能分割的分割點槐臀,然后計算增益,最后選取最大的增益的分列方式去分割逾滥,明顯負責度太高7宓怠败匹!

  2. 近似算法:
    對于每一個特征寨昙,只考慮分位點,以減少復雜度掀亩,分位點的選取粒度有兩種:全局global和局部local舔哪。全局速度快但是經度降低。
    解釋一下:先將某特征的特征值從小到大排序槽棍,再選取分位點進行計算增益即可捉蚤。

    3. xgb中采用的樹節(jié)點分裂方法(增益計算)

    如何看權重分位點的選取呢?上圖中前六個特征值的權重之和為0.6炼七,7-8的權重和為0.6缆巧,最后一個為0.6,就這選取權重之和相同的點來進行分位點的選取豌拙,然后再計算增益陕悬。

內容參考wepon大神天池直播

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市按傅,隨后出現(xiàn)的幾起案子捉超,更是在濱河造成了極大的恐慌胧卤,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拼岳,死亡現(xiàn)場離奇詭異枝誊,居然都是意外死亡,警方通過查閱死者的電腦和手機惜纸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門叶撒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人堪簿,你說我怎么就攤上這事痊乾。” “怎么了椭更?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵哪审,是天一觀的道長。 經常有香客問我虑瀑,道長湿滓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任舌狗,我火速辦了婚禮叽奥,結果婚禮上,老公的妹妹穿的比我還像新娘痛侍。我一直安慰自己朝氓,他們只是感情好,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布主届。 她就那樣靜靜地躺著赵哲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪君丁。 梳的紋絲不亂的頭發(fā)上枫夺,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天,我揣著相機與錄音绘闷,去河邊找鬼橡庞。 笑死,一個胖子當著我的面吹牛印蔗,可吹牛的內容都是我干的扒最。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼华嘹,長吁一口氣:“原來是場噩夢啊……” “哼吧趣!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤再菊,失蹤者是張志新(化名)和其女友劉穎爪喘,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纠拔,經...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡秉剑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了稠诲。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侦鹏。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖臀叙,靈堂內的尸體忽然破棺而出略水,到底是詐尸還是另有隱情,我是刑警寧澤劝萤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布渊涝,位于F島的核電站,受9級特大地震影響床嫌,放射性物質發(fā)生泄漏跨释。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一厌处、第九天 我趴在偏房一處隱蔽的房頂上張望鳖谈。 院中可真熱鬧,春花似錦阔涉、人聲如沸缆娃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贯要。三九已至,卻和暖如春凶伙,著一層夾襖步出監(jiān)牢的瞬間郭毕,已是汗流浹背它碎。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工函荣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人扳肛。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓傻挂,卻偏偏與公主長得像,于是被迫代替她去往敵國和親挖息。 傳聞我的和親對象是個殘疾皇子金拒,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360