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