日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【数据竞赛】大规模数据调参用这个包就可以啦。

發布時間:2025/3/12 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【数据竞赛】大规模数据调参用这个包就可以啦。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:塵沙杰少

模型調參--Successive Halving!

簡 介

現在非常多的機器學習模型在建模時都會涉及到參數調節的問題,不同的模型參數對于模型的影響非常大,如何從大量的參數中選出較好的一組參數是模型調參需要重點研究的一大難題。與此同時,我們的數據量也變得越來越大,如何在此情況下快速地挑選到不錯的參數是參數選擇的另外一大難題。

本篇文章我們介紹一種快速的參數選擇方案 -- Successive Halving,在我們之前的實驗中,該方法速度又快而且效果也可以接受。

Successive Halving

01


Successive Halving

Successive Halving(SH)就像候選參數組合之間的競賽。SH是一個迭代選擇過程,

  • 在第一次迭代中,用少量資源評估所有候選(參數組合)。

  • 在下一次迭代中選擇其中的一些候選項,分配更多的資源給予這些候選。

在對于參數調整,資源通常是訓練樣本的數量,但也可以是任意的數值參數,例如隨機森林中的n_estimators

02


案例

如下圖所示:

此處我們的資源是樣本的個數,每次迭代都會為每個候選分配越來越多的資源。其步驟為:

  • 在第一輪,我們有35個候選參數,我們使用20個樣本進行訓練;然后從35個候選參數中挑選出18個樣本進入第二輪;

  • 在第二輪,我們有18個候選參數,我們使用40個樣本進行訓練;然后從18個候選參數中挑選出9個樣本進入第三輪;

  • 依此類推,直到候選參數的個數達到我們的設定則停止。

代 碼

1. 數據集生成

from?sklearn.experimental?import?enable_halving_search_cv?? from?sklearn.model_selection?import?HalvingGridSearchCV from?sklearn.model_selection?import?HalvingRandomSearchCV from?sklearn.datasets?import?make_classification from?sklearn.ensemble?import?RandomForestClassifier? import?pandas?as?pdX,?y?=?make_classification(n_samples=1000,?random_state=0)

2. HalvingGridSearchCV

param_grid?=?{'max_depth':?[3,5,7,10],'min_samples_leaf':?[2,5,7,10]} base_estimator?=?RandomForestClassifier(random_state=0) sh?=?HalvingGridSearchCV(base_estimator,?param_grid,?cv=5,factor=2,?resource='n_estimators',min_resources?=10,?max_resources=3000).fit(X,?y)?
  • 輸出模型的最好結參數

#?輸出模型的最好的參數 sh.best_estimator_ RandomForestClassifier(max_depth=7, min_samples_leaf=7, n_estimators=160,random_state=0)
  • 模型的交叉結果

sh.cv_results_ {'iter': array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,1, 1, 2, 2, 2, 2, 3, 3, 4]),'n_resources': array([ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,10, 10, 10, 20, 20, 20, 20, 20, 20, 20, 20, 40, 40,40, 40, 80, 80, 160]),'mean_fit_time': array([0.01928229, 0.01584716, 0.015414 , 0.01495667, 0.01724477,0.01833501, 0.01802239, 0.0175746 , 0.01825719, 0.01801496,0.01770639, 0.01858926, 0.01929336, 0.01819983, 0.01763158,0.01695471, 0.03814454, 0.03725901, 0.03484864, 0.03506536,0.03535094, 0.03335671, 0.03274951, 0.03632708, 0.06523113,0.0686976 , 0.06733208, 0.06619411, 0.13683538, 0.13806734,0.27292347]), ......'mean_score_time': array([0.00161152, 0.0014842 , 0.00139074, 0.00130529, 0.00133247,0.00145178, 0.00153761, 0.00143166, 0.00140243, 0.00151205,0.00139952, 0.00150151, 0.0014555 , 0.00144758, 0.0014502 ,0.00136704, 0.00250249, 0.00238037, 0.00228252, 0.00222058,0.00220017, 0.00222421, 0.00221481, 0.00224967, 0.00379901,0.00384221, 0.00396533, 0.00388794, 0.00718961, 0.00746694,0.01394658]), ......

適用問題

Successive Halving適用于目前所有模型的參數的調節,關于此處我個人有一些小小的建議:

  • 當數據量不大的時候,考慮直接將resource設置為n_estimators

  • 當數據量很大的時候,考慮將resource設置為n_samples,但min_resources不建議太小;

  • 當數據量很大的時候,先對數據進行采樣(不建議采樣量太小),然后將resource設置為n_estimators

  • 最后我們固定住其它參數再尋找最優的n_estimators值,效果會更好些。

    參考文獻

  • Tuning the hyper-parameters of an estimator

  • Non-stochastic Best Arm Identification and Hyperparameter Optimization

  • sklearn.model_selection.HalvingGridSearchCV

  • search_successive_halving代碼

  • 往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯溫州大學《機器學習課程》視頻 本站qq群851320808,加入微信群請掃碼:

    總結

    以上是生活随笔為你收集整理的【数据竞赛】大规模数据调参用这个包就可以啦。的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。