XGBoost是處理不同類型表格數(shù)據(jù)的最著名的算法,LightGBM 和Catboost也是為了修改他的缺陷而發(fā)布的。近日XGBoost發(fā)布了新的2.0版,本文除了介紹讓XGBoost的完整歷史以外,還將介紹新機(jī)制和更新。
這是一篇很長的文章,因為我們首先從梯度增強(qiáng)決策樹開始。
基于樹的方法,如決策樹、隨機(jī)森林以及擴(kuò)展后的XGBoost,在處理表格數(shù)據(jù)方面表現(xiàn)出色,這是因為它們的層次結(jié)構(gòu)天生就善于對表格格式中常見的分層關(guān)系進(jìn)行建模。它們在自動檢測和整合特征之間復(fù)雜的非線性相互作用方面特別有效。另外這些算法對輸入特征的規(guī)模具有健壯性,使它們能夠在不需要規(guī)范化的情況下在原始數(shù)據(jù)集上表現(xiàn)良好。
最終要的一點是它們提供了原生處理分類變量的優(yōu)勢,繞過了對one-hot編碼等預(yù)處理技術(shù)的需要,盡管XGBoost通常還是需要數(shù)字編碼。
另外還有一點是基于樹的模型可以輕松地可視化和解釋,這進(jìn)一步增加了吸引力,特別是在理解表格數(shù)據(jù)結(jié)構(gòu)時。通過利用這些固有的優(yōu)勢,基于樹的方法——尤其是像XGBoost這樣的高級方法——非常適合處理數(shù)據(jù)科學(xué)中的各種挑戰(zhàn),特別是在處理表格數(shù)據(jù)時。
決策樹
在更嚴(yán)格的數(shù)學(xué)語言中,決策樹表示一個函數(shù)T:X→Y,其中X是特征空間,Y可以是連續(xù)值(在回歸的情況下)或類標(biāo)簽(在分類的情況下)。我們可以將數(shù)據(jù)分布表示為D和真函數(shù)f:X→Y。決策樹的目標(biāo)是找到與f(x)非常接近的T(x),理想情況下是在概率分布D上。
損失函數(shù)
與樹T相關(guān)的風(fēng)險R相對于f表示為T(x)和f(x)之間的損失函數(shù)的期望值:
構(gòu)建決策樹的主要目標(biāo)是構(gòu)建一個能夠很好地泛化到新的、看不見的數(shù)據(jù)的模型。在理想情況下,我們知道數(shù)據(jù)的真實分布D,可以直接計算任何候選決策樹的風(fēng)險或預(yù)期損失。但是在實踐中真實的分布是未知的。
所以我們依賴于可用數(shù)據(jù)的子集來做出決策。這就是啟發(fā)式方法的概念出現(xiàn)的地方。
基尼系數(shù)
基尼指數(shù)是一種雜質(zhì)度量,用于量化給定節(jié)點中類別的混合程度。給定節(jié)點t的基尼指數(shù)G的公式為:
式中p_i為節(jié)點t中屬于第i類樣本的比例,c為類的個數(shù)。
基尼指數(shù)的范圍從0到0.5,其中較低的值意味著節(jié)點更純粹(即主要包含來自一個類別的樣本)。
基尼指數(shù)還是信息增益?
基尼指數(shù)(Gini Index)和信息增益(Information Gain)都是量化區(qū)分不同階層的特征的“有用性”的指標(biāo)。從本質(zhì)上講,它們提供了一種評估功能將數(shù)據(jù)劃分為類的效果的方法。通過選擇雜質(zhì)減少最多的特征(最低的基尼指數(shù)或最高的信息增益),就可以做出一個啟發(fā)式?jīng)Q策,這是樹生長這一步的最佳局部選擇。
過擬合和修剪
決策樹也會過度擬合,尤其是當(dāng)它們很深的時候,會捕獲數(shù)據(jù)中的噪聲。有兩個主要策略可以解決這個問題:
分割:隨著樹的增長,持續(xù)監(jiān)控它在驗證數(shù)據(jù)集上的性能。如果性能開始下降,這是停止生長樹的信號。
后修剪:在樹完全生長后,修剪不能提供太多預(yù)測能力的節(jié)點。這通常是通過刪除節(jié)點并檢查它是否會降低驗證準(zhǔn)確性來完成的。如果不是則修剪節(jié)點。
找不到最優(yōu)風(fēng)險最小化的樹,是因為我們不知道真實的數(shù)據(jù)分布d。所以只能使用啟發(fā)式方法,如基尼指數(shù)或信息增益,根據(jù)可用數(shù)據(jù)局部優(yōu)化樹,而謹(jǐn)慎分割和修剪等技術(shù)有助于管理模型的復(fù)雜性,避免過擬合。
隨機(jī)森林
隨機(jī)森林是決策樹T_1, T_2, ....的集合, T_n,其中每個決策樹T_i:X→Y將輸入特征空間X映射到輸出Y,輸出Y可以是連續(xù)值(回歸)或類標(biāo)簽(分類)。
隨機(jī)森林集合定義了一個新函數(shù)R:X→Y,它對所有單個樹的輸出進(jìn)行多數(shù)投票(分類)或平均(回歸),數(shù)學(xué)上表示為:
與決策樹一樣,隨機(jī)森林也旨在近似概率分布D上的真實函數(shù)f:X→Y。D在實踐中通常是未知的,因此有必要使用啟發(fā)式方法來構(gòu)建單個樹。
與隨機(jī)森林相關(guān)的相對于f的風(fēng)險R_RF是R(x)和f(x)之間損失函數(shù)的期望值??紤]到R是T的集合,風(fēng)險通常低于與單個樹相關(guān)的風(fēng)險,這有助于泛化:
過擬合和Bagging
與單一決策樹相比,隨機(jī)森林不太容易過度擬合,這要歸功于Bagging和特征隨機(jī)化,這在樹之間創(chuàng)造了多樣性。風(fēng)險在多棵樹上平均,使模型對數(shù)據(jù)中的噪聲更有彈性。
隨機(jī)森林中的Bagging實現(xiàn)了多個目標(biāo):它通過在不同的樹上平均預(yù)測來減少過擬合,每棵樹都在不同的自舉樣本上訓(xùn)練,從而使模型對數(shù)據(jù)中的噪聲和波動更具彈性。這也減少了方差可以得到更穩(wěn)定和準(zhǔn)確的預(yù)測。樹的集合可以捕獲數(shù)據(jù)的不同方面,提高了模型對未見數(shù)據(jù)的泛化。并且還可以提供更高的健壯性,因為來自其他樹的正確預(yù)測通常會抵消來自單個樹的錯誤。該技術(shù)可以增強(qiáng)不平衡數(shù)據(jù)集中少數(shù)類的表示,使集成更適合此類挑戰(zhàn)。
隨機(jī)森林它在單個樹級別采用啟發(fā)式方法,但通過集成學(xué)習(xí)減輕了一些限制,從而在擬合和泛化之間提供了平衡。Bagging和特征隨機(jī)化等技術(shù)進(jìn)一步降低了風(fēng)險,提高了模型的健壯性。
梯度增強(qiáng)決策樹
梯度增強(qiáng)決策樹(GBDT)也是一種集成方法,它通過迭代地增加決策樹來構(gòu)建一個強(qiáng)預(yù)測模型,每棵新樹旨在糾正現(xiàn)有集成的錯誤。在數(shù)學(xué)上,GBDT也表示一個函數(shù)T:X→Y,但它不是找到一個單一的T(X),而是形成一個弱學(xué)習(xí)器t_1(X), t_2(X),…的序列,它們共同工作以近似真實函數(shù)f(X)。與隨機(jī)森林(Random Forest)通過Bagging獨立構(gòu)建樹不同,GBDT在序列中構(gòu)建樹,使用梯度下降最小化預(yù)測值和真實值之間的差異,通常通過損失函數(shù)表示。
在GBDT中,在構(gòu)建每棵樹并進(jìn)行預(yù)測之后,計算預(yù)測值與實際值之間的殘差(或誤差)。這些殘差本質(zhì)上是梯度的一種形式——表明損失函數(shù)是如何隨其參數(shù)變化的。然后一個新的樹適合這些殘差,而不是原始的結(jié)果變量,有效地采取“步驟”,利用梯度信息最小化損失函數(shù)。這個過程是重復(fù)的,迭代地改進(jìn)模型。
“梯度”一詞意味著使用梯度下降優(yōu)化來指導(dǎo)樹的順序構(gòu)建,旨在不斷最小化損失函數(shù),從而使模型更具預(yù)測性。
為什么它比決策樹和隨機(jī)森林更好?
減少過擬合:與隨機(jī)森林一樣,GBDT也避免過擬合,但它是通過構(gòu)建淺樹(弱學(xué)習(xí)器)和優(yōu)化損失函數(shù)來實現(xiàn)的,而不是通過平均或投票。
高效率:GBDT專注于難以分類的實例,更多地適應(yīng)數(shù)據(jù)集的問題區(qū)域。這可以使它在分類性能方面比隨機(jī)森林更有效,因為隨機(jī)森林對所有實例都一視同仁。
優(yōu)化損失函數(shù):與啟發(fā)式方法(如基尼指數(shù)或信息增益)不同,GBDT中的損失函數(shù)在訓(xùn)練期間進(jìn)行了優(yōu)化,允許更精確地擬合數(shù)據(jù)。
更好的性能:當(dāng)選擇正確的超參數(shù)時,GBDT通常優(yōu)于隨機(jī)森林,特別是在需要非常精確的模型并且計算成本不是主要關(guān)注點的情況下。
靈活性:GBDT既可以用于分類任務(wù),也可以用于回歸任務(wù),而且它更容易優(yōu)化,因為您可以直接最小化損失函數(shù)。
梯度增強(qiáng)決策樹解決的問題
單個樹的高偏差:GBDT通過迭代修正單個樹的誤差,可以獲得比單個樹更高的性能。
模型復(fù)雜性:隨機(jī)森林旨在減少模型方差,而GBDT在偏差和方差之間提供了一個很好的平衡,通??梢垣@得更好的整體性能。
梯度增強(qiáng)決策樹比決策樹和隨機(jī)森林具有性能、適應(yīng)性和優(yōu)化方面的優(yōu)勢。當(dāng)需要較高的預(yù)測準(zhǔn)確性并愿意花費計算資源來微調(diào)模型時,它們特別有用。
XGBoost
在關(guān)于基于樹的集成方法的討論中,焦點經(jīng)常落在標(biāo)準(zhǔn)的優(yōu)點上:對異常值的健壯性、易于解釋等等。但是XGBoost還有其他特性,使其與眾不同,并在許多場景中具有優(yōu)勢。
計算效率
通常,圍繞XGBoost的討論都集中在它的預(yù)測能力上。不常被強(qiáng)調(diào)的是它的計算效率,特別是在并行和分布式計算方面。該算法利用特征和數(shù)據(jù)點來并行化樹結(jié)構(gòu),使其能夠處理更大的數(shù)據(jù)集,并且比傳統(tǒng)實現(xiàn)運行得更快。
缺失數(shù)據(jù)的處理
XGBoost采用了一種獨特的方法來處理缺失值。與其他通常需要單獨預(yù)處理步驟的模型不同,XGBoost可以在內(nèi)部處理丟失的數(shù)據(jù)。在訓(xùn)練過程中,算法為缺失值找到最佳的imputation值(或在樹結(jié)構(gòu)中移動的方向),然后將其存儲以供將來預(yù)測。這意味著XGBoost處理丟失數(shù)據(jù)的方法是自適應(yīng)的,可以因節(jié)點而異,從而提供對這些值的更細(xì)致的處理。
正則化
雖然增強(qiáng)算法天生就容易過度擬合,特別是對于有噪聲的數(shù)據(jù),但XGBoost在訓(xùn)練過程中直接將L1 (Lasso)和L2 (Ridge)正則化合并到目標(biāo)函數(shù)中。這種方法提供了一種額外的機(jī)制來約束單個樹的復(fù)雜性,而不是簡單地限制它們的深度,從而提高泛化。
稀疏性
XGBoost設(shè)計用于高效地處理稀疏數(shù)據(jù),而不僅僅是密集矩陣。在使用詞袋或TF-IDF表示的自然語言處理等領(lǐng)域,特征矩陣的稀疏性可能是一個重大的計算挑戰(zhàn)。XGBoost利用壓縮的內(nèi)存高效數(shù)據(jù)結(jié)構(gòu),其算法被設(shè)計為有效地遍歷稀疏矩陣。
硬件的優(yōu)化
雖然很少被討論,但硬件優(yōu)化是XGBoost的一個亮點。它對CPU上的內(nèi)存效率和計算速度進(jìn)行了優(yōu)化,并支持GPU上的訓(xùn)練模型,進(jìn)一步加快了訓(xùn)練過程。
特征重要性和模型可解釋性
大多數(shù)集成方法提供特征重要性度量,包括隨機(jī)森林和標(biāo)準(zhǔn)梯度增強(qiáng)。但是XGBoost提供了一套更全面的特性重要性度量,包括增益、頻率和覆蓋范圍,從而允許對模型進(jìn)行更詳細(xì)的解釋。當(dāng)需要了解哪些特征是重要的,以及它們?nèi)绾螌︻A(yù)測做出貢獻(xiàn)時,這一點非常重要。
早停策略
另一個未被討論的特性是提前停止。謹(jǐn)慎分割和修剪等技術(shù)用于防止過擬合,而XGBoost提供了一種更自動化的方法。一旦模型的性能在驗證數(shù)據(jù)集上停止改進(jìn),訓(xùn)練過程就可以停止,從而節(jié)省了計算資源和時間。
處理分類變量
雖然基于樹的算法可以很好地處理分類變量,但是XGBoost采用了一種獨特的方法。不需要獨熱編碼或順序編碼,可以讓分類變量保持原樣。XGBoost對分類變量的處理比簡單的二進(jìn)制分割更細(xì)致,可以捕獲復(fù)雜的關(guān)系,而無需額外的預(yù)處理。
XGBoost的獨特功能使其不僅是預(yù)測精度方面的最先進(jìn)的機(jī)器學(xué)習(xí)算法,而且是高效和可定制的算法。它能夠處理現(xiàn)實世界的數(shù)據(jù)復(fù)雜性,如缺失值、稀疏性和多重共線性,同時計算效率高,并提供詳細(xì)的可解釋性,使其成為各種數(shù)據(jù)科學(xué)任務(wù)的寶貴工具。
XGBoost 2.0有什么新功能?
上面是我們介紹的一些背景知識,下面開始我們將介紹XGBoost 2.0提供了幾個有趣的更新,可能會影響機(jī)器學(xué)習(xí)社區(qū)和研究。
具有矢量葉輸出的多目標(biāo)樹
前面我們談到了XGBoost中的決策樹是如何使用二階泰勒展開來近似目標(biāo)函數(shù)的。在2.0中向具有矢量葉輸出的多目標(biāo)樹轉(zhuǎn)變。這使得模型能夠捕捉目標(biāo)之間的相關(guān)性,這一特征對于多任務(wù)學(xué)習(xí)尤其有用。它與XGBoost對正則化的強(qiáng)調(diào)一致,以防止過擬合,現(xiàn)在允許正則化跨目標(biāo)工作。
設(shè)備參數(shù)
XGBoost可以使用不同硬件。在2.0版本中,XGBoost簡化了設(shè)備參數(shù)設(shè)置。“device”參數(shù)取代了多個與設(shè)備相關(guān)的參數(shù),如gpu_id, gpu_hist等,這使CPU和GPU之間的切換更容易。
Hist作為默認(rèn)樹方法
XGBoost允許不同類型的樹構(gòu)建算法。2.0版本將' hist '設(shè)置為默認(rèn)的樹方法,這可能會提高性能的一致性。這可以看作是XGBoost將基于直方圖的方法的效率提高了一倍。
基于gpu的近似樹方法
XGBoost的新版本還提供了使用GPU的“近似”樹方法的初始支持。這可以看作是進(jìn)一步利用硬件加速的嘗試,這與XGBoost對計算效率的關(guān)注是一致的。
內(nèi)存和緩存優(yōu)化
2.0通過提供一個新參數(shù)(max_cached_hist_node)來控制直方圖的CPU緩存大小,并通過用內(nèi)存映射替換文件IO邏輯來改進(jìn)外部內(nèi)存支持,從而延續(xù)了這一趨勢。
Learning-to-Rank增強(qiáng)
考慮到XGBoost在各種排名任務(wù)中的強(qiáng)大性能,2.0版本引入了許多特性來改進(jìn)學(xué)習(xí)排名,例如用于配對構(gòu)建的新參數(shù)和方法,支持自定義增益函數(shù)等等。
新的分位數(shù)回歸支持
結(jié)合分位數(shù)回歸XGBoost可以很好的適應(yīng)對不同問題域和損失函數(shù)。它還為預(yù)測中的不確定性估計增加了一個有用的工具。
總結(jié)
很久沒有處理表格數(shù)據(jù)了,所以一直也沒有對XGBoost有更多的關(guān)注,但是最近才發(fā)現(xiàn)發(fā)更新了2.0版本,所以感覺還是很好的。
XGBoost 2.0版本是一個全面的更新,它繼續(xù)建立在現(xiàn)有的可伸縮性、效率和靈活性優(yōu)勢的基礎(chǔ)上,同時引入了可以為新的應(yīng)用程序和研究機(jī)會鋪平道路的功能。
-
應(yīng)用程序
+關(guān)注
關(guān)注
38文章
3297瀏覽量
57947 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8446瀏覽量
133126 -
XGBoost
+關(guān)注
關(guān)注
0文章
16瀏覽量
2249
原文標(biāo)題:詳解XGBoost 2.0重大更新!
文章出處:【微信號:DBDevs,微信公眾號:數(shù)據(jù)分析與開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
微軟重大改變!Windows10將每年進(jìn)行兩次大更新!
通過學(xué)習(xí)PPT地址和xgboost導(dǎo)讀和實戰(zhàn)地址來對xgboost原理和應(yīng)用分析
![通過學(xué)習(xí)PPT地址和<b class='flag-5'>xgboost</b>導(dǎo)讀和實戰(zhàn)地址來對<b class='flag-5'>xgboost</b>原理和應(yīng)用分析](https://file1.elecfans.com//web2/M00/A7/20/wKgZomUMQoWAcwz_AAAPeFTG7PU263.png)
面試中出現(xiàn)有關(guān)Xgboost總結(jié)
微軟將在明年秋季更新win10重大功能
微軟Win10正獲得12月重大驅(qū)動程序更新
XGBoost超參數(shù)調(diào)優(yōu)指南
![<b class='flag-5'>XGBoost</b>超參數(shù)調(diào)優(yōu)指南](https://file1.elecfans.com/web2/M00/89/CE/wKgZomSK5LCANDE3AAT60VW8558315.png)
XGBoost 2.0介紹
![<b class='flag-5'>XGBoost</b> <b class='flag-5'>2.0</b>介紹](https://file1.elecfans.com/web2/M00/AC/44/wKgaomVEVPeAP6-NAAIESjbhllg829.jpg)
評論