xgboost算法_xgboost算法原理篇
1, 概述部分
這篇文章,主要來(lái)介紹一下xgboost的理論部分,可能會(huì)不夠詳細(xì),由于xgboost算法相比較前三篇文章中提到的算法更加復(fù)雜,這里主要講解一下?lián)p失函數(shù)正則化,切分點(diǎn)查找算法及其優(yōu)化,葉子結(jié)點(diǎn)取值的確定,至于稀疏感知算法,并行化算法設(shè)計(jì)部分的內(nèi)容,目前還沒(méi)搞太明白,先不講述,想詳細(xì)學(xué)習(xí)xgboost算法原理的同學(xué)建議讀原始論文:
xgboost也是一種提升策略,基學(xué)習(xí)器為(CART)回歸樹,對(duì)每個(gè)樣本的預(yù)測(cè)結(jié)果為每棵樹預(yù)測(cè)結(jié)果相加,與GBDT一樣仍為加法模型。
2, 原理講解
給定數(shù)據(jù)集,
個(gè)樣本 維特征, ,模型的輸出為 表示我們所有建立的決策樹的集合, 為第 棵樹, 表示第 棵樹對(duì)樣本 的預(yù)測(cè)結(jié)果。我們的目標(biāo)是要優(yōu)化下面這個(gè)損失函數(shù)
為超參數(shù); 為決策樹的葉子節(jié)點(diǎn)數(shù), 為葉子結(jié)點(diǎn)取值向量。增加 是為了防止葉子結(jié)點(diǎn)過(guò)多,導(dǎo)致模型過(guò)擬合;增加 項(xiàng)是為了防止葉子節(jié)點(diǎn)取值極端化(防止某棵樹學(xué)習(xí)的太多,過(guò)擬合), 為一個(gè)二階可導(dǎo)函數(shù),用來(lái)評(píng)價(jià)預(yù)測(cè)值與真實(shí)值的差距。boosting的學(xué)習(xí)策略是學(xué)習(xí)當(dāng)前最優(yōu)模型,在此算法中即學(xué)習(xí)當(dāng)前最優(yōu)的決策樹。
即求以下形式損失函數(shù)的最小值(前
輪的決策樹已找到最優(yōu)的,找第 棵最優(yōu)決策樹)其中第二步用到了泰勒二階展開(kāi),
, .若樹的結(jié)構(gòu)已經(jīng)確定,則損失函數(shù)的值只與
有關(guān),怎么給 取值,使得損失函數(shù)能達(dá)到最小呢,哦,求導(dǎo)等于0,嘻嘻,求吧,帶入得:
,找到使得此式最小的決策樹,此時(shí)葉子結(jié)點(diǎn)的值已經(jīng)計(jì)算出。而最優(yōu)的決策樹到底怎么找呢,它又不是一個(gè)數(shù)值,而是一個(gè)樹。記住這個(gè)求損失函數(shù)最小值的過(guò)程,它也是構(gòu)造樹中重要的步驟。在構(gòu)建決策樹中,最主要的就是在每個(gè)節(jié)點(diǎn)找到最優(yōu)分裂點(diǎn),最優(yōu)切分點(diǎn)的選擇方法與傳統(tǒng)的CART選取方法不同,主要思想簡(jiǎn)述為,選取分裂后損失函數(shù)減小最多的那個(gè)切分點(diǎn)為最優(yōu)切分點(diǎn),即選擇使
最大的切分點(diǎn),其中
為左分支的樣本集, 為右分支上的數(shù)據(jù)集, 為此節(jié)點(diǎn)上的數(shù)據(jù)集。由于節(jié)點(diǎn)一分為二,因此剩下一個(gè) 。按照這種方法分裂下去,知道達(dá)到終止條件,得到的樹的損失函數(shù)為最小。具體方法有兩種,第一種為精確貪心算法,思路為:將特征值排序后,遍歷每一個(gè)值,將每一個(gè)值做為切分點(diǎn),計(jì)算
值(不一定每一個(gè)節(jié)點(diǎn)分裂時(shí),都要計(jì)算,但是葉子結(jié)點(diǎn)處一定要計(jì)算),計(jì)算 值,將每一個(gè)特征的每一個(gè)值的 計(jì)算出來(lái),找到最大的值對(duì)應(yīng)的特征值作為最優(yōu)切分點(diǎn)。原論文中給的此算法偽代碼由于精確列舉特征比較消耗時(shí)間,尤其是當(dāng)樣本量大的時(shí)候。文中有提到一個(gè)近似算法,對(duì)每個(gè)特征尋找?guī)讉€(gè)候選切分點(diǎn)來(lái)進(jìn)行最優(yōu)切分點(diǎn)的選擇,候選切分點(diǎn)的確定問(wèn)題我們一會(huì)再講。
近似算法偽代碼如下
切分點(diǎn)的選擇方法如下(其中一種)(不想打公式了,直接借圖)
代碼實(shí)現(xiàn),我們直接調(diào)用XGBClassifier
import訓(xùn)練集準(zhǔn)確率:1.0
測(cè)試集準(zhǔn)確率:1.0
(好像有點(diǎn)問(wèn)題????)
關(guān)于調(diào)參問(wèn)題,我再好好看看,學(xué)習(xí)一下,下篇文章整理一下。
參考的兩篇博客:CSDN-專業(yè)IT技術(shù)社區(qū)-登錄
CSDN-專業(yè)IT技術(shù)社區(qū)-登錄
總結(jié)
以上是生活随笔為你收集整理的xgboost算法_xgboost算法原理篇的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 机器学习集成学习进阶Xgboost算法案
- 下一篇: 版图设计概述