日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

xgboost 正则项_XGBoos算法背后的数学:尽可能简单地解释XGBoost算法背后的机制

發(fā)布時(shí)間:2023/12/19 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 xgboost 正则项_XGBoos算法背后的数学:尽可能简单地解释XGBoost算法背后的机制 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

如果你想很好地理解某些內(nèi)容,請(qǐng)嘗試簡(jiǎn)單地給別人解釋出來(lái)。 ——費(fèi)曼

XGBoost是一個(gè)很優(yōu)美的算法,它的過(guò)程不乏啟發(fā)性。這些通常簡(jiǎn)單而美麗的概念在數(shù)學(xué)術(shù)語(yǔ)中消失了。我在理解數(shù)學(xué)的過(guò)程中也遇到過(guò)同樣的挑戰(zhàn),所以我寫(xiě)這篇文章的目的是鞏固我的理解,同時(shí)幫助其他人完成類似的過(guò)程。

為了解XGBoost是什么,我們首先要了解什么是梯度提升機(jī)Gradient Boosting,以及梯度提升機(jī)背后的數(shù)學(xué)概念。請(qǐng)注意,這篇文章假設(shè)你對(duì)梯度提升機(jī)非常熟悉,并試圖觸及梯度提升機(jī)和XGBoost背后的直覺(jué)和數(shù)學(xué)。現(xiàn)在我們開(kāi)始吧。

理解梯度提升機(jī)

第一步 - 初始函數(shù)

與往常一樣,讓我們從粗略的初始函數(shù)

開(kāi)始,類似于回歸時(shí)所有值的平均值。 它將為我們提供一些輸出,無(wú)論效果如何。

第二步 - 損失函數(shù)

下面我們計(jì)算損失函數(shù)

那么什么是損失函數(shù)?它是一種度量預(yù)測(cè)值與真實(shí)值之間差異的算式,這里有幾個(gè)例子:

從下表可以理解為什么對(duì)異常值的魯棒性很重要:

其思想是,損失函數(shù)的值越低,我們的預(yù)測(cè)就越準(zhǔn)確,所以獲取最佳的預(yù)測(cè)值等價(jià)為損失函數(shù)的最小化問(wèn)題。

第三步 - 新的目標(biāo)

到目前為止,我們已經(jīng)建立了我們的初始模型,并進(jìn)行了預(yù)測(cè)。接下來(lái),我們應(yīng)該在損失函數(shù)給出的殘差上擬合一個(gè)新模型,但有一個(gè)微妙的轉(zhuǎn)折:我們將擬合損失函數(shù)的負(fù)梯度,下面給出我們?yōu)槭裁催@樣做以及為什么它們相似的直覺(jué):

梯度可以解釋為函數(shù)的“最快增加的方向和速率”,因此負(fù)梯度告訴我們函數(shù)最小值的方向,在這種情況下為損失函數(shù)的最小值。

我們將遵循梯度下降法,逐步逼近損失函數(shù)的極小值,算法的學(xué)習(xí)速率將給出每一次更新的步長(zhǎng)。在損失函數(shù)最小的情況下,我們的錯(cuò)誤率也最低。

因此,我們將在損失函數(shù)的

梯度處建立新模型

第四步 - 累加

梯度上迭代擬合模型的過(guò)程將繼續(xù)進(jìn)行,直到我們達(dá)到給定的弱學(xué)習(xí)器數(shù)量的最小值或極限T為止,這稱為累加。

回想一下,在Adaboost中,模型的“缺點(diǎn)”是由高權(quán)重?cái)?shù)據(jù)點(diǎn)確定的。在梯度提升機(jī)中,“缺點(diǎn)”是通過(guò)梯度來(lái)識(shí)別的。

簡(jiǎn)單來(lái)說(shuō),這就是梯度提升機(jī)的工作機(jī)制。在回歸和分類任務(wù)中,唯一不同的是所使用的損失函數(shù)。

XGBoost

XGBoost和梯度提升機(jī)都遵循梯度提升決策樹(shù)的原理,但是XGBoost使用更加正則化的模型公式來(lái)控制擬合,這使它具有更好的性能,這就是為什么它也被稱為“正則提升”技術(shù)。

牛頓法

那么什么是牛頓法呢?在隨機(jī)梯度下降中,我們用更少的數(shù)據(jù)點(diǎn)來(lái)計(jì)算梯度更新的方向,耗時(shí)也相對(duì)更少,但如果我們想要加速更新,就需要更多的數(shù)據(jù)點(diǎn)。而在牛頓法中,我們用來(lái)計(jì)算梯度更新的方向的耗時(shí)更多,但是需要的計(jì)算點(diǎn)也更少。

需要注意的重要一點(diǎn)是,即使梯度提升機(jī)在解決回歸問(wèn)題時(shí)使用梯度下降法進(jìn)行優(yōu)化,在解決分類問(wèn)題仍然使用牛頓方法來(lái)解決優(yōu)化問(wèn)題。 而XGBoost在分類和回歸的情況下都使用此方法。

牛頓法試圖通過(guò)構(gòu)造一個(gè)序列

來(lái)解決最小化問(wèn)題,該序列從隨機(jī)起點(diǎn)

開(kāi)始,通過(guò)

的二階泰勒展開(kāi)序列收斂到

的最小值

附近的二階泰勒展開(kāi)式是

二階導(dǎo)數(shù)對(duì)于加快梯度下降非常重要,因?yàn)樵谝粋€(gè)損失函數(shù)的山谷里,如果算法的修正方向是鋸齒狀的下降,那么您在沿著山谷的實(shí)際梯度上的進(jìn)展就非常緩慢, 通過(guò)二階導(dǎo)數(shù)調(diào)整方向?qū)⑹鼓南陆捣较虺焦鹊膶?shí)際梯度方向傾斜,從而將緩慢的下降轉(zhuǎn)換為更快的下降。

損失函數(shù)

我們已經(jīng)看到了平方損失函數(shù)在梯度提升機(jī)中的行為,讓我們快速看一下XGBoost中平方損失函數(shù)的作用:

均方誤差損失函數(shù)的形式是非常友好的,有一個(gè)一次項(xiàng)(通常稱為剩余項(xiàng))和一個(gè)二次項(xiàng)。對(duì)于其他值得注意的損失函數(shù)(例如logistic損失),要得到這樣一個(gè)好的形式并不容易。所以在一般情況下,我們把損失函數(shù)的泰勒展開(kāi)式推廣到二階

這就成了我們對(duì)新樹(shù)的優(yōu)化目標(biāo)。該定義的一個(gè)重要優(yōu)點(diǎn)是,目標(biāo)函數(shù)的值僅依賴于

。這就是XGBoost支持自定義損失的方式。我們可以使用完全相同的以

作為輸入的求解器來(lái)優(yōu)化每個(gè)損失函數(shù),包括邏輯回歸和成對(duì)排序

正則化

接下來(lái),我們將處理正則化項(xiàng),但在此之前,我們需要了解如何以數(shù)學(xué)方式定義決策樹(shù)。 直觀來(lái)說(shuō),決策樹(shù)主要是葉節(jié)點(diǎn)、數(shù)據(jù)點(diǎn)和將數(shù)據(jù)點(diǎn)分配給這些葉節(jié)點(diǎn)的函數(shù)的組合。 數(shù)學(xué)上它寫(xiě)為:

其中JT是葉數(shù)。此定義將樹(shù)上的預(yù)測(cè)過(guò)程描述為:

1. 將數(shù)據(jù)點(diǎn)

給一片葉子

2. 將相應(yīng)分?jǐn)?shù)

配給第

數(shù)據(jù)點(diǎn)

在XGBoost中,復(fù)雜度定義為:

XGBoost中的超參數(shù)描述如下:

當(dāng)然,定義復(fù)雜度的方法不止一種,但這一種方法在實(shí)踐中效果很好。正則化是大多數(shù)基于樹(shù)的方法處理得不太仔細(xì)或忽略掉的一部分。這是因?yàn)閭鹘y(tǒng)的樹(shù)學(xué)習(xí)方法只強(qiáng)調(diào)提升純度,而復(fù)雜度的控制則只能基于試探。通過(guò)正式定義它,我們可以更好地了解我們的模型正在學(xué)習(xí)的內(nèi)容,并獲得泛化能力良好的模型

最后一個(gè)方程衡量的是樹(shù)的結(jié)構(gòu)的優(yōu)劣。

如果聽(tīng)起來(lái)有些復(fù)雜,讓我們看一下圖片,看看如何計(jì)算分?jǐn)?shù)。

基本上,對(duì)于給定的樹(shù)結(jié)構(gòu),我們將統(tǒng)計(jì)信息

推入它們所屬的葉節(jié)點(diǎn),將統(tǒng)計(jì)信息求和,然后使用這一公式計(jì)算樹(shù)的質(zhì)量。 該分?jǐn)?shù)類似于決策樹(shù)中的純度度量,不同之處在于它還考慮了模型的復(fù)雜性

學(xué)習(xí)樹(shù)的結(jié)構(gòu)

現(xiàn)在,我們有了一種方法來(lái)衡量一棵樹(shù)的質(zhì)量。理想情況下,我們將枚舉所有可能的樹(shù)并選擇最佳的樹(shù),但實(shí)際上這是非常棘手的,因此我們將嘗試一次優(yōu)化一個(gè)樹(shù)的部分。 具體來(lái)說(shuō),我們嘗試將一片葉子分成兩片葉子,其得分為

該公式可分解為: 1)新左葉上的分?jǐn)?shù);2)新右葉上的分?jǐn)?shù);3)原始葉上的分?jǐn)?shù);4)附加葉上的正則化。 我們?cè)谶@里可以看到一個(gè)重要的事實(shí):如果增益小于

,我們最好不要添加該分支,這正是基于樹(shù)的模型中的修剪技術(shù)! 通過(guò)使用監(jiān)督學(xué)習(xí)的原理,我們自然可以得出這些技術(shù)起作用的原因

很好,現(xiàn)在希望我們對(duì)XGBoost有一個(gè)初步的了解,以及為什么它會(huì)這樣工作。下次見(jiàn)!

作者:Dip Ranjan Chatterjee

deephub翻譯組:Alexander Zhao

總結(jié)

以上是生活随笔為你收集整理的xgboost 正则项_XGBoos算法背后的数学:尽可能简单地解释XGBoost算法背后的机制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。