0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

詳細(xì)解釋XGBoost中十個(gè)最常用超參數(shù)

冬至子 ? 來源:Bex T. ? 作者:Bex T. ? 2023-06-19 17:31 ? 次閱讀

對于XGBoost來說,默認(rèn)的超參數(shù)是可以正常運(yùn)行的,但是如果你想獲得最佳的效果,那么就需要自行調(diào)整一些超參數(shù)來匹配你的數(shù)據(jù),以下參數(shù)對于XGBoost非常重要:

  • eta
  • num_boost_round
  • max_depth
  • subsample
  • colsample_bytree
  • gamma
  • min_child_weight
  • lambda
  • alpha

XGBoost的API有2種調(diào)用方法,一種是我們常見的原生API,一種是兼容Scikit-learn API的API,Scikit-learn API與Sklearn生態(tài)系統(tǒng)無縫集成。我們這里只關(guān)注原生API(也就是我們最常見的),但是這里提供一個(gè)列表,這樣可以幫助你對比2個(gè)API參數(shù),萬一以后用到了呢:

如果想使用Optuna以外的超參數(shù)調(diào)優(yōu)工具,可以參考該表。下圖是這些參數(shù)對之間的相互作用:

這些關(guān)系不是固定的,但是大概情況是上圖的樣子,因?yàn)橛幸恍┢渌麉?shù)可能會(huì)對我們的者10個(gè)參數(shù)有額外的影響。

1、objective

這是我們模型的訓(xùn)練目標(biāo)

最簡單的解釋是,這個(gè)參數(shù)指定我們模型要做的工作,也就是影響決策樹的種類和損失函數(shù)。

2、num_boost_round - n_estimators

num_boost_round指定訓(xùn)練期間確定要生成的決策樹(在XGBoost中通常稱為基礎(chǔ)學(xué)習(xí)器)的數(shù)量。默認(rèn)值是100,但對于今天的大型數(shù)據(jù)集來說,這還遠(yuǎn)遠(yuǎn)不夠。

增加參數(shù)可以生成更多的樹,但隨著模型變得更復(fù)雜,過度擬合的機(jī)會(huì)也會(huì)顯著增加。

從Kaggle中學(xué)到的一個(gè)技巧是為num_boost_round設(shè)置一個(gè)高數(shù)值,比如100,000,并利用早停獲得最佳版本。

在每個(gè)提升回合中,XGBoost會(huì)生成更多的決策樹來提高前一個(gè)決策樹的總體得分。這就是為什么它被稱為boost。這個(gè)過程一直持續(xù)到num_boost_round輪詢?yōu)橹?,不管是否比上一輪有所改進(jìn)。

但是通過使用早停技術(shù),我們可以在驗(yàn)證指標(biāo)沒有提高時(shí)停止訓(xùn)練,不僅節(jié)省時(shí)間,還能防止過擬合

有了這個(gè)技巧,我們甚至不需要調(diào)優(yōu)num_boost_round。下面是它在代碼中的樣子:

# Define the rest of the params
 params = {...}
 
 # Build the train/validation sets
 dtrain_final = xgb.DMatrix(X_train, label=y_train)
 dvalid_final = xgb.DMatrix(X_valid, label=y_valid)
 
 bst_final = xgb.train(
     params,
     dtrain_final,
     num_boost_round=100000 # Set a high number
     evals=[(dvalid_final, "validation")],
     early_stopping_rounds=50, # Enable early stopping
     verbose_eval=False,
 )

上面的代碼使XGBoost生成100k決策樹,但是由于使用了早停,當(dāng)驗(yàn)證分?jǐn)?shù)在最后50輪中沒有提高時(shí),它將停止。一般情況下樹的數(shù)量范圍在5000-10000即可??刂苙um_boost_round也是影響訓(xùn)練過程運(yùn)行時(shí)間的最大因素之一,因?yàn)楦嗟臉湫枰嗟馁Y源。

3、eta - learning_rate

在每一輪中,所有現(xiàn)有的樹都會(huì)對給定的輸入返回一個(gè)預(yù)測。例如,五棵樹可能會(huì)返回以下對樣本N的預(yù)測:

Tree 1: 0.57    Tree 2: 0.9    Tree 3: 4.25    Tree 4: 6.4    Tree 5: 2.1

為了返回最終的預(yù)測,需要對這些輸出進(jìn)行匯總,但在此之前XGBoost使用一個(gè)稱為eta或?qū)W習(xí)率的參數(shù)縮小或縮放它們??s放后最終輸出為:

output = eta * (0.57 + 0.9 + 4.25 + 6.4 + 2.1)

大的學(xué)習(xí)率給集合中每棵樹的貢獻(xiàn)賦予了更大的權(quán)重,但這可能會(huì)導(dǎo)致過擬合/不穩(wěn)定,會(huì)加快訓(xùn)練時(shí)間。而較低的學(xué)習(xí)率抑制了每棵樹的貢獻(xiàn),使學(xué)習(xí)過程更慢但更健壯。這種學(xué)習(xí)率參數(shù)的正則化效應(yīng)對復(fù)雜和有噪聲的數(shù)據(jù)集特別有用。

學(xué)習(xí)率與num_boost_round、max_depth、subsample和colsample_bytree等其他參數(shù)呈反比關(guān)系。較低的學(xué)習(xí)率需要較高的這些參數(shù)值,反之亦然。但是一般情況下不必?fù)?dān)心這些參數(shù)之間的相互作用,因?yàn)槲覀儗⑹褂米詣?dòng)調(diào)優(yōu)找到最佳組合。

4、subsample和colsample_bytree

子抽樣subsample它將更多的隨機(jī)性引入到訓(xùn)練中,從而有助于對抗過擬合。

Subsample =0.7意味著集合中的每個(gè)決策樹將在隨機(jī)選擇的70%可用數(shù)據(jù)上進(jìn)行訓(xùn)練。值1.0表示將使用所有行(不進(jìn)行子抽樣)。

與subsample類似,也有colsample_bytree。顧名思義,colsample_bytree控制每個(gè)決策樹將使用的特征的比例。Colsample_bytree =0.8使每個(gè)樹使用每個(gè)樹中隨機(jī)80%的可用特征(列)。

調(diào)整這兩個(gè)參數(shù)可以控制偏差和方差之間的權(quán)衡。使用較小的值降低了樹之間的相關(guān)性,增加了集合中的多樣性,有助于提高泛化和減少過擬合。

但是它們可能會(huì)引入更多的噪聲,增加模型的偏差。而使用較大的值會(huì)增加樹之間的相關(guān)性,降低多樣性并可能導(dǎo)致過擬合。

5、max_depth

最大深度max_depth控制決策樹在訓(xùn)練過程中可能達(dá)到的最大層次數(shù)。

更深的樹可以捕獲特征之間更復(fù)雜的相互作用。但是更深的樹也有更高的過擬合風(fēng)險(xiǎn),因?yàn)樗鼈兛梢杂涀∮?xùn)練數(shù)據(jù)中的噪聲或不相關(guān)的模式。為了控制這種復(fù)雜性,可以限制max_depth,從而生成更淺、更簡單的樹,并捕獲更通用的模式。

Max_depth數(shù)值可以很好地平衡了復(fù)雜性和泛化。

6、7、alpha,lambda

這兩個(gè)參數(shù)一起說是因?yàn)閍lpha (L1)和lambda (L2)是兩個(gè)幫助過擬合的正則化參數(shù)。

與其他正則化參數(shù)的區(qū)別在于,它們可以將不重要或不重要的特征的權(quán)重縮小到0(特別是alpha),從而獲得具有更少特征的模型,從而降低復(fù)雜性。

alpha和lambda的效果可能受到max_depth、subsample和colsample_bytree等其他參數(shù)的影響。更高的alpha或lambda值可能需要調(diào)整其他參數(shù)來補(bǔ)償增加的正則化。例如,較高的alpha值可能受益于較大的subsample值,因?yàn)檫@樣可以保持模型多樣性并防止欠擬合。

8、gamma

如果你讀過XGBoost文檔,它說gamma是:

在樹的葉節(jié)點(diǎn)上進(jìn)行進(jìn)一步分區(qū)所需的最小損失減少。

英文原文:the minimum loss reduction required to make a further partition on a leaf node of the tree.

我覺得除了寫這句話的人,其他人都看不懂。讓我們看看它到底是什么,下面是一個(gè)兩層決策樹:

為了證明通過拆分葉節(jié)點(diǎn)向樹中添加更多層是合理的,XGBoost應(yīng)該計(jì)算出該操作能夠顯著降低損失函數(shù)。

但“顯著是多少呢?”這就是gamma——它作為一個(gè)閾值來決定一個(gè)葉節(jié)點(diǎn)是否應(yīng)該進(jìn)一步分割。

如果損失函數(shù)的減少(通常稱為增益)在潛在分裂后小于選擇的伽馬,則不執(zhí)行分裂。這意味著葉節(jié)點(diǎn)將保持不變,并且樹不會(huì)從該點(diǎn)開始生長。

所以調(diào)優(yōu)的目標(biāo)是找到導(dǎo)致?lián)p失函數(shù)最大減少的最佳分割,這意味著改進(jìn)的模型性能。

9、min_child_weight

XGBoost從具有單個(gè)根節(jié)點(diǎn)的單個(gè)決策樹開始初始訓(xùn)練過程。該節(jié)點(diǎn)包含所有訓(xùn)練實(shí)例(行)。然后隨著 XGBoost 選擇潛在的特征和分割標(biāo)準(zhǔn)最大程度地減少損失,更深的節(jié)點(diǎn)將包含越來越少的實(shí)例。

如果讓XGBoost任意運(yùn)行,樹可能會(huì)長到最后節(jié)點(diǎn)中只有幾個(gè)無關(guān)緊要的實(shí)例。這種情況是非常不可取的,因?yàn)檫@正是過度擬合的定義。

所以XGBoost為每個(gè)節(jié)點(diǎn)中繼續(xù)分割的最小實(shí)例數(shù)設(shè)置一個(gè)閾值。通過對節(jié)點(diǎn)中的所有實(shí)例進(jìn)行加權(quán),并找到權(quán)重的總和,如果這個(gè)最終權(quán)重小于min_child_weight,則分裂停止,節(jié)點(diǎn)成為葉節(jié)點(diǎn)。

上面解釋是對整個(gè)過程的最簡化的版本,因?yàn)槲覀冎饕榻B他的概念。

總結(jié)

以上就是我們對這 10個(gè)重要的超參數(shù)的解釋,如果你想更深入的了解仍有很多東西需要學(xué)習(xí)。所以建議給ChatGPT以下兩個(gè)提示:

1) Explain the {parameter_name} XGBoost parameter in detail and how to choose values for it wisely.
 
 2) Describe how {parameter_name} fits into the step-by-step tree-building process of XGBoost.
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • XGBoost
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    2204
  • ChatGPT
    +關(guān)注

    關(guān)注

    29

    文章

    1546

    瀏覽量

    7356
收藏 人收藏

    評論

    相關(guān)推薦

    如何通過XGBoost解釋機(jī)器學(xué)習(xí)

    本文為大家介紹用XGBoost解釋機(jī)器學(xué)習(xí)。 這是一個(gè)故事,關(guān)于錯(cuò)誤地解釋機(jī)器學(xué)習(xí)模型的危險(xiǎn)以及正確解釋所帶來的價(jià)值。如果你發(fā)現(xiàn)梯度提升或隨
    發(fā)表于 10-12 11:48 ?1787次閱讀
    如何通過<b class='flag-5'>XGBoost</b><b class='flag-5'>解釋</b>機(jī)器學(xué)習(xí)

    NI-DAQmx十個(gè)函數(shù)

    學(xué)會(huì)NI-DAQmx十個(gè)函數(shù)解決80%的數(shù)據(jù)采集應(yīng)用問題
    發(fā)表于 04-07 17:29

    請問一個(gè)協(xié)調(diào)器連接十個(gè)終端,如何能獲取十個(gè)終端的短地址?

    本帖最后由 一只耳朵怪 于 2018-5-24 14:22 編輯 一個(gè)協(xié)調(diào)器連接十個(gè)終端,如何能獲取十個(gè)終端的短地址,求思路
    發(fā)表于 05-22 08:57

    詳細(xì)常用器件選型表

    詳細(xì)常用器件選型表
    發(fā)表于 09-21 10:54 ?34次下載
    <b class='flag-5'>超</b><b class='flag-5'>詳細(xì)</b><b class='flag-5'>常用</b>器件選型表

    實(shí)施MES系統(tǒng)能為企業(yè)解決的十個(gè)問題資料分析

    實(shí)施MES系統(tǒng)能為企業(yè)解決的十個(gè)問題
    發(fā)表于 01-04 15:50 ?7次下載

    十個(gè)問題帶你了解和掌握java HashMap

    本文檔內(nèi)容介紹了十個(gè)問題帶你了解和掌握java HashMap及源代碼,供參考
    發(fā)表于 03-12 15:41 ?0次下載

    十個(gè)貼片電阻的3D封裝庫詳細(xì)資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是十個(gè)貼片電阻的3D封裝詳細(xì)資料免費(fèi)下載。包括了:RES-0201,RES-0402,RES-0603,RES-0805,RES-01005,RES-1206,RES-1210,RES-1812,RES
    發(fā)表于 11-19 08:00 ?0次下載

    光電式液位傳感器的十個(gè)相關(guān)問題的詳細(xì)解答方法概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是光電式液位傳感器的十個(gè)相關(guān)問題的詳細(xì)解答方法概述免費(fèi)下載。
    發(fā)表于 12-27 08:00 ?9次下載

    高頻變壓器包括以下十個(gè)過程每個(gè)流程做了詳細(xì)的分析

    高頻變壓器的制作大致包括以下十個(gè)過程,對每個(gè)過程的流程、工藝及注意事項(xiàng)作詳細(xì)的分析。
    的頭像 發(fā)表于 07-16 08:56 ?9571次閱讀
    高頻變壓器包括以下<b class='flag-5'>十個(gè)</b>過程每個(gè)流程做了<b class='flag-5'>詳細(xì)</b>的分析

    十個(gè)MATLAB應(yīng)用實(shí)用程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是幾十個(gè)MATLAB應(yīng)用實(shí)用程序免費(fèi)下載包括了:PEAKS 函數(shù)曲線,片狀圖,視角的調(diào)整,向量場的繪制,燈光定位,柱狀圖,設(shè)置照明方式等等。
    發(fā)表于 08-21 16:38 ?6次下載
    幾<b class='flag-5'>十個(gè)</b>MATLAB應(yīng)用實(shí)用程序免費(fèi)下載

    TCP/IP十個(gè)問題

    本文整理了一些TCP/IP協(xié)議簇需要必知必會(huì)的大問題,既是面試高頻問題,又是程序員必備基礎(chǔ)素養(yǎng)。 TCP/IP十個(gè)問題 一、TCP/IP模型TCP/IP協(xié)議模型(Transmission
    的頭像 發(fā)表于 11-04 14:46 ?2395次閱讀

    10個(gè)電源設(shè)計(jì)最常用公式的解析

    本文將為你解析10個(gè)電源設(shè)計(jì)最常用的公式。非常實(shí)用,推薦收藏哦~
    發(fā)表于 02-10 11:40 ?8次下載
    10<b class='flag-5'>個(gè)</b>電源設(shè)計(jì)<b class='flag-5'>最常用</b>公式的解析

    部署無線AP的十個(gè)注意事項(xiàng)

    部署無線AP的十個(gè)注意事項(xiàng)
    發(fā)表于 10-09 14:21 ?6次下載

    XGBoost參數(shù)調(diào)優(yōu)指南

    對于XGBoost來說,默認(rèn)的參數(shù)是可以正常運(yùn)行的,但是如果你想獲得最佳的效果,那么就需要自行調(diào)整一些參數(shù)來匹配你的數(shù)據(jù),以下
    的頭像 發(fā)表于 06-15 18:15 ?798次閱讀
    <b class='flag-5'>XGBoost</b><b class='flag-5'>超</b><b class='flag-5'>參數(shù)</b>調(diào)優(yōu)指南

    接口調(diào)用并發(fā)執(zhí)行十個(gè)任務(wù)總結(jié)

    個(gè)接口調(diào)用時(shí),接收到一個(gè)列表,十個(gè)元素,需要并發(fā)執(zhí)行十個(gè)任務(wù),每個(gè)任務(wù)都要返回執(zhí)行的結(jié)果和異常,然后對返回的結(jié)果裝填到一個(gè)切片列表里,統(tǒng)一
    的頭像 發(fā)表于 11-15 10:37 ?408次閱讀