Интерпретация результатов поиска по сетке

Подбор гиперпараметров в Python

Alex Scriven

Data Scientist

Анализ результатов

Проанализируем результаты GridSearchCV.

Свойства GridSearchCV делятся на три группы:

  • Журнал результатов
    • cv_results_
  • Лучшие результаты
    • best_index_, best_params_ & best_score_
  • «Дополнительная информация»
    • scorer_, n_splits_ & refit_time_
Подбор гиперпараметров в Python

Обращение к свойствам объекта

 

Доступ к свойствам осуществляется через точечную нотацию.

Например:

grid_search_object.property

Где property — нужное вам свойство

Подбор гиперпараметров в Python

Свойство .cv_results_

Свойство cv_results_:

Загрузим его в DataFrame для вывода и анализа:

cv_results_df = pd.DataFrame(grid_rf_class.cv_results_)

print(cv_results_df.shape)

(12, 23)

  • 12 строк соответствуют 12 ячейкам сетки, то есть 12 обученным моделям
Подбор гиперпараметров в Python

Столбцы 'time' в .cv_results_

Столбцы time отражают время обучения (и оценки) модели.

Помните, мы использовали 5-кратную кросс-валидацию? Она выполнялась 5 раз, а среднее и стандартное отклонение времени (в секундах) были сохранены.

столбцы времени

Подбор гиперпараметров в Python

Столбцы 'param_' в .cv_results_

 

Столбцы param_ хранят параметры, проверенные в данной строке, — по одному столбцу на параметр

столбцы param

Подбор гиперпараметров в Python

Столбец 'param' в .cv_results_

Столбец params содержит словарь всех параметров:

pd.set_option("display.max_colwidth", -1)
print(cv_results_df.loc[:, "params"])

столбец params

Подбор гиперпараметров в Python

Столбцы 'test_score' в .cv_results_

 

Столбцы test_score содержат оценки на тестовой выборке для каждого фолда кросс-валидации, а также сводную статистику:

оценки теста

Подбор гиперпараметров в Python

Столбец 'rank_test_score' в .cv_results_

 

Столбец ранга упорядочивает mean_test_score от лучшего к худшему:

ранг тестовых оценок

Подбор гиперпараметров в Python

Извлечение лучшей строки

 

Лучшую ячейку сетки можно легко выбрать из cv_results_ с помощью столбца rank_test_score

best_row = cv_results_df[cv_results_df["rank_test_score"] == 1]
print(best_row)

лучшая строка

Подбор гиперпараметров в Python

Столбцы 'train_score' в .cv_results_

Столбцы test_score повторяются для training_scores.

Несколько важных замечаний:

  • Чтобы включить столбцы обучающих оценок, параметр return_train_score должен быть равен True.

  • Для обучающих оценок столбец ранга отсутствует, так как нас интересует только качество на тестовой выборке

Подбор гиперпараметров в Python

Лучшая ячейка сетки

 

Информация о лучшей ячейке сетки компактно представлена в трёх свойствах:

  • best_params_ — словарь параметров, давших наилучший результат.

  • best_score_ — значение лучшей оценки.

  • best_index_ — строка в cv_results_.rank_test_score с наилучшим результатом.

Подбор гиперпараметров в Python

Свойство best_estimator_

 

Свойство best_estimator_ — это оценщик, построенный с использованием лучших параметров из поиска по сетке.

В нашем случае это оценщик случайного леса:

type(grid_rf_class.best_estimator_)

sklearn.ensemble.forest.RandomForestClassifier

Этот объект можно также напрямую использовать как оценщик!

Подбор гиперпараметров в Python

Свойство best_estimator_

print(grid_rf_class.best_estimator_)

вывод кода лучшего оценщика

Подбор гиперпараметров в Python

Дополнительная информация

Дополнительная информация доступна в следующих свойствах:

  • scorer_

Функция оценки, применявшаяся к отложенным данным (мы задали AUC)

  • n_splits_

Количество разбиений при кросс-валидации (мы задали 5)

  • refit_time_

Время (в секундах), затраченное на переобучение лучшей модели на всём наборе данных

Подбор гиперпараметров в Python

Давайте потренируемся!

Подбор гиперпараметров в Python

Preparing Video For Download...