私のハイパーパラメータがsvm.SVC()
広すぎてGridSearchCV()
決して完成しないという問題に直面しています! 1 つのアイデアは、RandomizedSearchCV()
代わりに使用することです。しかし、繰り返しになりますが、私のデータセットは比較的大きく、500 回の反復に約 1 時間かかります。
私の質問は、リソースの浪費を止めるために、GridSearchCV (または RandomizedSearchCV ) で (各ハイパーパラメーターの値の範囲に関して) 適切な設定は何ですか?
C
言い換えれば、たとえば100 を超える値が意味をなすかどうか、および/または 1 のステップが大きくも小さくもないかどうかを判断する方法は? どんな助けでも大歓迎です。これは現在使用しているセットアップです。
parameters = {
'C': np.arange( 1, 100+1, 1 ).tolist(),
'kernel': ['linear', 'rbf'], # precomputed,'poly', 'sigmoid'
'degree': np.arange( 0, 100+0, 1 ).tolist(),
'gamma': np.arange( 0.0, 10.0+0.0, 0.1 ).tolist(),
'coef0': np.arange( 0.0, 10.0+0.0, 0.1 ).tolist(),
'shrinking': [True],
'probability': [False],
'tol': np.arange( 0.001, 0.01+0.001, 0.001 ).tolist(),
'cache_size': [2000],
'class_weight': [None],
'verbose': [False],
'max_iter': [-1],
'random_state': [None],
}
model = grid_search.RandomizedSearchCV( n_iter = 500,
estimator = svm.SVC(),
param_distributions = parameters,
n_jobs = 4,
iid = True,
refit = True,
cv = 5,
verbose = 1,
pre_dispatch = '2*n_jobs'
) # scoring = 'accuracy'
model.fit( train_X, train_Y )
print( model.best_estimator_ )
print( model.best_score_ )
print( model.best_params_ )