Библиотека оптимизации процесса подбора гиперпараметров Optuna имеет scikit-подобный класс OptunaSearchCV, находящийся в модуле optuna.integration. Этот интерфейс удобнее основного, так как является более привычным. В качестве параметров конструктор OptunaSearchCV принимает:
estimator – объект класса для обучения;
param_distributions – распределения гиперпараметров (подробнее здесь);
scoring – метрика максимизации;
n_trials – количество попыток;
timeout – задает максимальное время на обучение в секундах;
cv – можно задать количество итераций в ходе кросс-валидации;
random_state – инициализатор случайных чисел (если не задан, используется значение из numpy.random).
Более детальное описание параметров можно найти здесь.
Рассмотрим пример использования OptunaSearchCV. Сначала создадим датафрейм:
Разбиваем на выборки и инициализируем объект OptunaSearchCV с условием максимизации метрики f1:
В объекте поиска будут три свойства, хранящие важные сведения:
opt_search.best_params_ - найденные оптимальные параметры;
opt_search.best_score_ - значение лучшей метрики в ходе кросс-валидации;
opt_search.best_estimator_ - ссылка на объект оптимальной модели.
Можно проверить найденную модель на test выборке и сравнить с классификатором по умолчанию:
А так можно убедиться, что Optuna возвращает оптимальную модель, обученную на всей выборке, которую ей передавали в fit:
Полезные ссылки:
1. Подбор параметров, используя механизм ask-tell Optuna
2. Подбор параметров, используя механизм optimize objective Optuna
3. Подбор гиперпараметров модели с GridSearchCV и RandomizedSearchCV