【数据竞赛】大规模数据调参用这个包就可以啦。
作者:塵沙杰少
模型調參--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)?輸出模型的最好結參數
模型的交叉結果
適用問題
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代碼
總結
以上是生活随笔為你收集整理的【数据竞赛】大规模数据调参用这个包就可以啦。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Chrome谷歌浏览器新功能 删除主题更
- 下一篇: Win11将沿用Win10升级模式 并会