Розуміння результатів grid search

Тюнінг гіперпараметрів у 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

Стовпці .cv_results_ «time»

Стовпці time відображають час, потрібний для навчання (і оцінювання) моделі.

Пам'ятайте, ми робили 5-кратну крос-валідацію. Запуск був 5 разів, збережено середнє та стандартне відхилення часу в секундах.

стовпці time

Тюнінг гіперпараметрів у Python

Стовпці .cv_results_ «param_»

 

Стовпці param_ зберігають параметри, протестовані в цьому рядку, по одному стовпцю на параметр

стовпці param

Тюнінг гіперпараметрів у Python

Стовпець .cv_results_ «param»

Стовпець params містить словник усіх параметрів:

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

стовпець params

Тюнінг гіперпараметрів у Python

Стовпці .cv_results_ «test_score»

 

Стовпці test_score містять бали на нашому тестовому наборі для кожного з фолдів, а також підсумкову статистику:

test score

Тюнінг гіперпараметрів у Python

Стовпець .cv_results_ «rank_test_score»

 

Стовпець рангу, що впорядковує mean_test_score від найкращого до найгіршого:

rank test score

Тюнінг гіперпараметрів у Python

Витяг найкращого рядка

 

Можна легко вибрати найкращу клітинку сітки з cv_results_, використовуючи стовпець rank_test_score

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

найкращий рядок

Тюнінг гіперпараметрів у Python

Стовпці .cv_results_ «train_score»

Стовпці 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_ — це оцінювач, збудований з найкращими параметрами з grid search.

У нас це оцінювач Random Forest:

type(grid_rf_class.best_estimator_)

sklearn.ensemble.forest.RandomForestClassifier

За потреби ви можете напряму використовувати цей об'єкт як оцінювач!

Тюнінг гіперпараметрів у Python

Властивість best_estimator_

print(grid_rf_class.best_estimator_)

вивід коду best estimator

Тюнінг гіперпараметрів у Python

Додаткова інформація

Додаткова інформація доступна у таких властивостях:

  • scorer_

Яку функцію оцінювання застосовано до відкладених даних (ми задали AUC).

  • n_splits_

Скільки розбиттів крос-валідації (ми задали 5).

  • refit_time_

Кількість секунд на перенавчання найкращої моделі на всьому наборі даних.

Тюнінг гіперпараметрів у Python

Давайте потренуємось!

Тюнінг гіперпараметрів у Python

Preparing Video For Download...