機(jī)器學(xué)習(xí)是為各種復(fù)雜的回歸和分類任務(wù)構(gòu)建預(yù)測(cè)模型的最流行的技術(shù)之一。梯度提升機(jī)(Gradient Boosting Machine,GBM)被認(rèn)為是最強(qiáng)大的提升算法之一。
盡管機(jī)器學(xué)習(xí)中使用的算法非常多,但Boosting算法已成為全球機(jī)器學(xué)習(xí)社區(qū)的主流。Boosting 技術(shù)遵循集成學(xué)習(xí)的概念,因此它結(jié)合了多個(gè)簡(jiǎn)單模型(弱學(xué)習(xí)器或基礎(chǔ)估計(jì)器)來(lái)生成最終輸出。GBM 還用作機(jī)器學(xué)習(xí)中的集成方法,將弱學(xué)習(xí)器轉(zhuǎn)換為強(qiáng)學(xué)習(xí)器。在本主題“機(jī)器學(xué)習(xí)中的 GBM”中,我們將討論梯度機(jī)器學(xué)習(xí)算法、機(jī)器學(xué)習(xí)中的各種 boosting 算法、GBM 的歷史、它的工作原理、GBM 中使用的各種術(shù)語(yǔ)等。但在開(kāi)始之前,首先,了解機(jī)器學(xué)習(xí)中的 boosting 概念和各種 boosting 算法。
什么是機(jī)器學(xué)習(xí)中的Boosting?
Boosting 是流行的學(xué)習(xí)集成建模技術(shù)之一,用于從各種弱分類器構(gòu)建強(qiáng)分類器。它首先根據(jù)可用的訓(xùn)練數(shù)據(jù)集構(gòu)建主要模型,然后識(shí)別基本模型中存在的錯(cuò)誤。識(shí)別錯(cuò)誤后,建立第二個(gè)模型,并進(jìn)一步在此過(guò)程中引入第三個(gè)模型。這樣,引入更多模型的過(guò)程就會(huì)持續(xù)下去,直到我們得到一個(gè)完整的訓(xùn)練數(shù)據(jù)集,模型可以通過(guò)該數(shù)據(jù)集進(jìn)行正確的預(yù)測(cè)。
AdaBoost(自適應(yīng)增強(qiáng))是機(jī)器學(xué)習(xí)歷史上第一個(gè)將各種弱分類器組合成單個(gè)強(qiáng)分類器的增強(qiáng)算法。它主要致力于解決二元分類等分類任務(wù)。
Boosting算法的步驟:
增強(qiáng)算法有以下幾個(gè)重要步驟:
考慮具有不同數(shù)據(jù)點(diǎn)的數(shù)據(jù)集并對(duì)其進(jìn)行初始化。
現(xiàn)在,為每個(gè)數(shù)據(jù)點(diǎn)賦予相同的權(quán)重。
假設(shè)該權(quán)重作為模型的輸入。
識(shí)別錯(cuò)誤分類的數(shù)據(jù)點(diǎn)。
增加步驟 4 中數(shù)據(jù)點(diǎn)的權(quán)重。
如果獲得適當(dāng)?shù)妮敵?,則終止此過(guò)程,否則再次執(zhí)行步驟 2 和 3。
例子:
假設(shè)我們有三個(gè)不同的模型及其預(yù)測(cè),并且它們以完全不同的方式工作。例如,線性回歸模型顯示數(shù)據(jù)中的線性關(guān)系,而決策樹(shù)模型嘗試捕獲數(shù)據(jù)中的非線性關(guān)系,如下圖所示。
此外,如果我們以系列或組合的形式使用這些模型,而不是單獨(dú)使用這些模型來(lái)預(yù)測(cè)結(jié)果,那么我們會(huì)得到一個(gè)比所有基本模型具有正確信息的結(jié)果模型。換句話說(shuō),如果我們使用這些模型的平均預(yù)測(cè),而不是使用每個(gè)模型的單獨(dú)預(yù)測(cè),那么我們將能夠從數(shù)據(jù)中捕獲更多信息。它被稱為集成學(xué)習(xí),Boosting 也是基于機(jī)器學(xué)習(xí)中的集成方法。
增強(qiáng)機(jī)器學(xué)習(xí)中的算法
機(jī)器學(xué)習(xí)中主要有 4 種 boosting 算法。具體如下:
梯度提升機(jī)(GBM)
極限梯度提升機(jī)(XGBM)
輕型GBM
貓助推器
機(jī)器學(xué)習(xí)中的 GBM 是什么?
梯度提升機(jī)(GBM)是機(jī)器學(xué)習(xí)中最流行的前向?qū)W習(xí)集成方法之一。它是構(gòu)建回歸和分類任務(wù)預(yù)測(cè)模型的強(qiáng)大技術(shù)。
GBM 幫助我們獲得弱預(yù)測(cè)模型(例如決策樹(shù))集合形式的預(yù)測(cè)模型。每當(dāng)決策樹(shù)作為弱學(xué)習(xí)器執(zhí)行時(shí),生成的算法就稱為梯度增強(qiáng)樹(shù)。
它使我們能夠結(jié)合來(lái)自各種學(xué)習(xí)器模型的預(yù)測(cè),并構(gòu)建具有正確預(yù)測(cè)的最終預(yù)測(cè)模型。
但這里可能會(huì)出現(xiàn)一個(gè)問(wèn)題,如果我們應(yīng)用相同的算法,那么多個(gè)決策樹(shù)如何能夠比單個(gè)決策樹(shù)提供更好的預(yù)測(cè)?此外,每個(gè)決策樹(shù)如何從相同的數(shù)據(jù)中捕獲不同的信息?
因此,這些問(wèn)題的答案是每個(gè)決策樹(shù)的節(jié)點(diǎn)采用不同的特征子集來(lái)選擇最佳分割。這意味著每棵樹(shù)的行為不同,因此從相同的數(shù)據(jù)中捕獲不同的信號(hào)。
GBM 是如何運(yùn)作的?
一般來(lái)說(shuō),大多數(shù)監(jiān)督學(xué)習(xí)算法都基于單一預(yù)測(cè)模型,例如線性回歸、懲罰回歸模型、決策樹(shù)等。但是機(jī)器學(xué)習(xí)中也有一些監(jiān)督算法依賴于通過(guò)集成將各種模型組合在一起。換句話說(shuō),當(dāng)多個(gè)基本模型貢獻(xiàn)其預(yù)測(cè)時(shí),所有預(yù)測(cè)的平均值將通過(guò)增強(qiáng)算法進(jìn)行調(diào)整。
梯度增強(qiáng)機(jī)由以下 3 個(gè)要素組成:
損失函數(shù)
學(xué)習(xí)能力較弱
加法模型
讓我們?cè)敿?xì)了解這三個(gè)要素。
1.損失函數(shù):
盡管如此,機(jī)器學(xué)習(xí)中有很多損失函數(shù),可以根據(jù)要解決的任務(wù)類型來(lái)使用。損失函數(shù)的使用是根據(jù)條件分布的魯棒性等具體特征的需求來(lái)估計(jì)的。在我們的任務(wù)中使用損失函數(shù)時(shí),我們必須指定損失函數(shù)和計(jì)算相應(yīng)負(fù)梯度的函數(shù)。一旦我們得到了這兩個(gè)函數(shù),它們就可以很容易地實(shí)現(xiàn)到梯度提升機(jī)中。然而,已經(jīng)為 GBM 算法提出了幾種損失函數(shù)。
損失函數(shù)的分類:
根據(jù)響應(yīng)變量y的類型,損失函數(shù)可以分為以下不同類型:
連續(xù)響應(yīng),y ∈ R:
高斯 L2 損失函數(shù)
拉普拉斯 L1 損失函數(shù)
Huber 損失函數(shù),指定 δ
分位數(shù)損失函數(shù),指定 α
分類響應(yīng),y ∈ {0, 1}:
二項(xiàng)式損失函數(shù)
Adaboost 損失函數(shù)
其他響應(yīng)變量系列:
生存模型的損失函數(shù)
損失函數(shù)計(jì)數(shù)數(shù)據(jù)
自定義損失函數(shù)
2. 弱學(xué)習(xí)者:
弱學(xué)習(xí)器是基礎(chǔ)學(xué)習(xí)器模型,可以從過(guò)去的錯(cuò)誤中學(xué)習(xí),并幫助構(gòu)建強(qiáng)大的預(yù)測(cè)模型設(shè)計(jì),以增強(qiáng)機(jī)器學(xué)習(xí)中的算法。一般來(lái)說(shuō),決策樹(shù)在增強(qiáng)算法中充當(dāng)弱學(xué)習(xí)器。
Boosting 被定義為持續(xù)改進(jìn)基礎(chǔ)模型輸出的框架。許多梯度增強(qiáng)應(yīng)用程序允許您“插入”各種類別的弱學(xué)習(xí)器供您使用。因此,決策樹(shù)最常用于弱(基礎(chǔ))學(xué)習(xí)器。
如何訓(xùn)練弱學(xué)習(xí)者:
機(jī)器學(xué)習(xí)使用訓(xùn)練數(shù)據(jù)集來(lái)訓(xùn)練基礎(chǔ)學(xué)習(xí)器,并根據(jù)先前學(xué)習(xí)器的預(yù)測(cè),通過(guò)關(guān)注先前樹(shù)具有最大錯(cuò)誤或殘差的訓(xùn)練數(shù)據(jù)行來(lái)提高性能。例如,淺樹(shù)被認(rèn)為是決策樹(shù)的弱學(xué)習(xí)者,因?yàn)樗恍┓至?。一般?lái)說(shuō),在 boosting 算法中,具有最多 6 個(gè)分割的樹(shù)是最常見(jiàn)的。
下面是訓(xùn)練弱學(xué)習(xí)器以提高其性能的序列,其中每棵樹(shù)都與前一棵樹(shù)的殘差位于序列中。此外,我們引入每棵新樹(shù),以便它可以從前一棵樹(shù)的錯(cuò)誤中學(xué)習(xí)。具體如下:
考慮一個(gè)數(shù)據(jù)集并在其中擬合決策樹(shù)。
F1(x)=y
用前一棵樹(shù)的最大誤差來(lái)擬合下一棵決策樹(shù)。
h1(x)=y?F1(x)
通過(guò)在步驟 1 和 2 中添加這棵新樹(shù),將其添加到算法中。
F2(x)=F1(x)+h1(x)
再次將下一個(gè)決策樹(shù)與前一個(gè)決策樹(shù)的殘差進(jìn)行擬合。
h2(x)=y?F2(x)
重復(fù)我們?cè)诓襟E 3 中所做的相同操作。
F3(x)=F2(x)+h2(x)
繼續(xù)這個(gè)過(guò)程,直到某種機(jī)制(即交叉驗(yàn)證)告訴我們停止。這里的最終模型是 b 個(gè)個(gè)體樹(shù)的階段性加性模型:
f(x)=BΣb=1fb(x)
因此,樹(shù)是貪婪地構(gòu)建的,根據(jù)基尼等純度分?jǐn)?shù)選擇最佳分割點(diǎn)或最小化損失。
3. 加法模型:
加性模型被定義為向模型添加樹(shù)。盡管我們不應(yīng)該一次添加多棵樹(shù),但必須只添加一棵樹(shù),這樣模型中的現(xiàn)有樹(shù)就不會(huì)改變。此外,我們還可以通過(guò)添加樹(shù)來(lái)選擇梯度下降法來(lái)減少損失。
過(guò)去幾年,梯度下降法被用來(lái)最小化神經(jīng)網(wǎng)絡(luò)中回歸方程的系數(shù)和權(quán)重等參數(shù)集。計(jì)算出誤差或損失后,使用權(quán)重參數(shù)來(lái)最小化誤差。但最近,大多數(shù)機(jī)器學(xué)習(xí)專家更喜歡弱學(xué)習(xí)子模型或決策樹(shù)作為這些參數(shù)的替代品。其中,我們必須在模型中添加一棵樹(shù)來(lái)減少誤差并提高模型的性能。這樣,新添加的樹(shù)的預(yù)測(cè)與現(xiàn)有樹(shù)系列的預(yù)測(cè)相結(jié)合,得到最終的預(yù)測(cè)。此過(guò)程持續(xù)進(jìn)行,直到損失達(dá)到可接受的水平或不再需要改進(jìn)。
該方法也稱為函數(shù)梯度下降或函數(shù)梯度下降。
極限梯度提升機(jī) (XGBM)
XGBM 是梯度增強(qiáng)機(jī)的最新版本,其工作原理也與 GBM 非常相似。在 XGBM 中,樹(shù)是按順序添加的(一次一棵),從先前樹(shù)的錯(cuò)誤中學(xué)習(xí)并改進(jìn)它們。雖然 XGBM 和 GBM 算法在外觀和感覺(jué)上很相似,但它們之間仍然存在一些差異,如下所示:
XGBM 使用各種正則化技術(shù)來(lái)減少模型的欠擬合或過(guò)擬合,這也比梯度增強(qiáng)機(jī)更能提高模型性能。
XGBM 遵循每個(gè)節(jié)點(diǎn)的并行處理,而 GBM 則不然,這使得它比梯度增強(qiáng)機(jī)更快。
XGBM 幫助我們擺脫缺失值的插補(bǔ),因?yàn)槟J(rèn)情況下模型會(huì)處理它。它自行了解這些值是否應(yīng)該位于右側(cè)節(jié)點(diǎn)或左側(cè)節(jié)點(diǎn)中。
光梯度增強(qiáng)機(jī)(Light GBM)
Light GBM 是梯度增強(qiáng)機(jī)的升級(jí)版,因其效率高且速度快。與GBM和XGBM不同,它可以處理大量數(shù)據(jù)而沒(méi)有任何復(fù)雜性。另一方面,它不適合那些數(shù)量較少的數(shù)據(jù)點(diǎn)。
Light GBM 更喜歡樹(shù)節(jié)點(diǎn)的葉向生長(zhǎng),而不是水平生長(zhǎng)。此外,在light GBM中,主節(jié)點(diǎn)被分裂為兩個(gè)輔助節(jié)點(diǎn),然后選擇一個(gè)輔助節(jié)點(diǎn)進(jìn)行分裂。輔助節(jié)點(diǎn)的這種分裂取決于兩個(gè)節(jié)點(diǎn)之間哪個(gè)具有更高的損耗。
因此,由于葉向分割,在給定大量數(shù)據(jù)的情況下,光梯度提升機(jī)(LGBM)算法始終優(yōu)于其他算法。
CATBOOST
catboost 算法主要用于處理數(shù)據(jù)集中的分類特征。盡管 GBM、XGBM 和 Light GBM 算法適用于數(shù)值數(shù)據(jù)集,但 Catboost 旨在將分類變量處理為數(shù)值數(shù)據(jù)。因此,catboost 算法包含一個(gè)重要的預(yù)處理步驟,用于將分類特征轉(zhuǎn)換為任何其他算法中不存在的數(shù)值變量。
Boosting算法的優(yōu)點(diǎn):
增強(qiáng)算法遵循集成學(xué)習(xí),這使得模型能夠給出更準(zhǔn)確的預(yù)測(cè),這是不可超越的。
Boosting 算法比其他算法靈活得多,因?yàn)樗梢詢?yōu)化不同的損失函數(shù)并提供多種超參數(shù)調(diào)整選項(xiàng)。
它不需要數(shù)據(jù)預(yù)處理,因?yàn)樗m用于數(shù)值變量和分類變量。
它不需要對(duì)數(shù)據(jù)集中的缺失值進(jìn)行插補(bǔ),它會(huì)自動(dòng)處理缺失的數(shù)據(jù)。
Boosting算法的缺點(diǎn):
以下是 boosting 算法的一些缺點(diǎn):
提升算法可能會(huì)導(dǎo)致過(guò)度擬合以及過(guò)分強(qiáng)調(diào)異常值。
梯度提升算法不斷關(guān)注最小化錯(cuò)誤,并且需要多個(gè)樹(shù),因此計(jì)算成本很高。
這是一種耗時(shí)且內(nèi)存耗盡的算法。
盡管可以使用各種工具輕松解決這個(gè)問(wèn)題,但本質(zhì)上解釋性較差。
結(jié)論:
通過(guò)這種方式,我們學(xué)習(xí)了機(jī)器學(xué)習(xí)中預(yù)測(cè)建模的增強(qiáng)算法。此外,我們還討論了 ML 中使用的各種重要的 boosting 算法,例如 GBM、XGBM、light GBM 和 Catboost。此外,我們還了解了各種組件(損失函數(shù)、弱學(xué)習(xí)器和加性模型)以及 GBM 如何與它們配合使用。Boosting 算法如何有利于在現(xiàn)實(shí)場(chǎng)景中的部署等。
審核編輯:黃飛
?
評(píng)論