Я сталкиваюсь с проблемой, что гиперпараметры моего svm.SVC()
слишком широкие, поэтому GridSearchCV()
никогда не завершается! Одна идея состоит в том, чтобы вместо этого использовать 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_ )