Почему «mean_test_score» моего RandomizedSearchCV () ниже точности всех моих индивидуальных прогонов? - PullRequest
0 голосов
/ 20 сентября 2019

Я использую оболочку, чтобы позволить мне запускать RandomizedSearchCV () Scikit-Learn над моделью LSTM, встроенной в Keras, в качестве средства настройки гиперпараметров указанной модели.

Я определил функцию create_model () для созданияэта модель в Keras, а затем передала эту функцию в KerasClassifier перед передачей классификатора Keras в RandomizedSearchCV, как показано здесь:

model = KerasClassifier(build_fn=create_model)
params = {'activation':['relu'], 'batch_size':[256], 'epochs':[200], 'learning_rate':[0.001]}
random_search = RandomizedSearchCV(model, param_distributions=params, cv=TimeSeriesSplit(n_splits = 3), scoring = 'accuracy')

Указав метрики = ['precision'] при компиляции LSTM в create_model,не говоря уже о настройке скоринга = «точности» в соответствии с документацией RandomizedSearchCV, я полагал, что моя модель будет оценена и настроена в соответствии с точностью моего классификатора.Таким образом, я был воодушевлен, когда RandomizedSearchCV начал работать, и я увидел, что «акк» каждой эпохи обычно составлял около 0,63, иногда достигая всего 0,8 - вот пример вывода:

Epoch 162/200
1861/1861 [==============================] - 1s 588us/step - loss: 0.6334 - acc: 0.6319

Однако, когда случайный поиск завершился, я увидел, что мой mean_test_score был .48 (и действительно split_test_scores, составляющий этот средний балл, в среднем составил .48).

Я не понимаю, почему это так, поскольку«acc», видимый в приведенном выше примере выходных данных, никогда не был таким низким, как это число .48 ни в одну из своих эпох.Я озадачен тем, что происходит - мне не удалось правильно установить функцию подсчета очков?Используется ли что-то еще в качестве функции оценки (например, я видел, что «потери» в результатах случайного поиска МОГУТ быть такими же низкими и даже ниже, чем .48 mean_test_score. Но, опять же, я следовал документации, когда устанавливал точность какфункция подсчета очков. Получается ли .48 из набора проверки, который не является предметом какого-либо вывода функции RandomSearchCV ()? Что мне здесь не хватает?

Большое спасибо!

...