在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            博客專欄

            EEPW首頁 > 博客 > XGBoost超參數(shù)調(diào)優(yōu)指南(1)

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

            發(fā)布人:數(shù)據(jù)派THU 時(shí)間:2023-06-23 來源:工程師 發(fā)布文章

            對于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ù)可能會對我們的者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ī)會也會顯著增加。


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


            在每個(gè)提升回合中,XGBoost會生成更多的決策樹來提高前一個(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即可。控制num_boost_round也是影響訓(xùn)練過程運(yùn)行時(shí)間的最大因素之一,因?yàn)楦嗟臉湫枰嗟馁Y源。


            3、eta - learning_rate


            在每一輪中,所有現(xiàn)有的樹都會對給定的輸入返回一個(gè)預(yù)測。例如,五棵樹可能會返回以下對樣本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)重,但這可能會導(dǎo)致過擬合/不穩(wěn)定,會加快訓(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)找到最佳組合。


            *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。



            關(guān)鍵詞: AI

            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉