現在、かなり積極的なグリッド検索を実行しています。私が持っています n=135 samples
と実行中23 folds
カスタムの交差検証トレイン/テストリストを使用します。私はverbose=2
。
以下は私が実行したものです:
param_test = {"loss":["deviance"],
'learning_rate':[0.01, 0.025, 0.05, 0.075, 0.1, 0.15, 0.2],
"min_samples_split": np.linspace(0.1, 0.5, 12),
"min_samples_leaf": np.linspace(0.1, 0.5, 12),
"max_depth":[3,5,8],
"max_features":["log2","sqrt"],
"min_impurity_split":[5e-6, 1e-7, 5e-7],
"criterion": ["friedman_mse", "mae"],
"subsample":[0.5, 0.618, 0.8, 0.85, 0.9, 0.95, 1.0],
"n_estimators":[10]}
Mod_gsearch = GridSearchCV(estimator = GradientBoostingClassifier(),
param_grid = param_test, scoring="accuracy",n_jobs=32, iid=False, cv=cv_indices, verbose=2)
stdout
の詳細出力を確認しました。
$head gridsearch.o8475533
Fitting 23 folds for each of 254016 candidates, totalling 5842368 fits
これに基づいて、5842368
グリッドのパラメーターを使用した交差検証ペアの順列。
$ grep -c "[CV]" gridsearch.o8475533
7047332
これまでに行われた約700万回の相互検証があるようですが、それは5842368
はめあい合計...
7047332/5842368 = 1.2062458236
次に、stderr
ファイルを見ると、
$ cat ./gridsearch.e8475533
[Parallel(n_jobs=32)]: Done 132 tasks | elapsed: 1.2s
[Parallel(n_jobs=32)]: Done 538 tasks | elapsed: 2.8s
[Parallel(n_jobs=32)]: Done 1104 tasks | elapsed: 4.8s
[Parallel(n_jobs=32)]: Done 1834 tasks | elapsed: 7.9s
[Parallel(n_jobs=32)]: Done 2724 tasks | elapsed: 11.6s
...
[Parallel(n_jobs=32)]: Done 3396203 tasks | elapsed: 250.2min
[Parallel(n_jobs=32)]: Done 3420769 tasks | elapsed: 276.5min
[Parallel(n_jobs=32)]: Done 3447309 tasks | elapsed: 279.3min
[Parallel(n_jobs=32)]: Done 3484240 tasks | elapsed: 282.3min
[Parallel(n_jobs=32)]: Done 3523550 tasks | elapsed: 285.3min
私の目標:
グリッドサーチの進行状況を、それがかかる可能性がある合計時間に関してどのように知ることができますか?
私が混乱していること:
[CV]
stdout
の行、stdout
のフィットの合計数、およびstderr
?のタスク数
数学は単純ですが、一見すると少し誤解を招きます。
各タスクが開始されると、ロギングメカニズムはstdout
に「[CV] ...」行を生成し、実行のstarting
と、タスクの後にends
を追加-別の行を追加特定のタスクに費やされた時間(行末)。
さらに、いくつかの時間間隔で、ロギングメカニズムはstderr
にプログレスバーを書き込み(またはverbose
を> 50からstdout
に設定した場合)、完了したタスクの数を示しますそのような、合計タスク(適合)と現在費やされた合計時間:
[Parallel(n_jobs=32)]: Done 2724 tasks | elapsed: 11.6s
あなたのケースでは、あなたは5842368
はめあい、つまりタスク。
カウントした7047332
of '[CV] ...'これはaround 7047332/2 = 3523666
完了したタスクと進行状況バーに、完了したタスクの数exactly
が表示されます-3523550(およそ-一部のタスクは開始できたが、カウント時に終了しなかったため)。