В моем предыдущем блоге я обсуждал, как создать собственный преобразователь sklearn для автоматизации обработки данных. Если вы еще не читали эту статью, вы можете прочитать ее здесь. Вперед!

В этой статье будет создан модуль автоматической настройки гиперпараметров, который работает вместе с конвейером преобразователя sklearn. Я буду использовать HyperOpts для этого процесса.

Hyperopt был разработан для поддержки алгоритмов байесовской оптимизации, основанных на гауссовских процессах и деревьях регрессии.

Короче говоря, это должно быть быстрее, чем собственная версия GridSearchCV в Sklearn.

Набор данных

Если моя первая статья - TL; DR, я вам сюда!

Преобразованный конвейер, который я реализовал, заботится об отсутствующих значениях, задачах очистки выбросов и нормализации. Короче говоря, как только вы fit_transform, ваши данные готовы для обучения модели!

Определение пространства поиска

Теперь вы знаете гиперпараметры (конечно, знаете! Вот почему вы здесь!). Любая функция оптимизации ML будет пытаться минимизировать функцию потерь, определенную для определенных параметров модели. Но это не меняет скелет самого алгоритма. Добиваемся этого с помощью гиперпараметров! Простой.

Первый шаг - определить пространство поиска. Проще говоря, перечисление всех возможных диапазонов гиперпараметров, которые должна повторять ваша модель. Например, я определил пространство поиска для 6 различных алгоритмов, которые буду рассматривать. Они есть:

  • KNearestNeighbors - на основе экземпляров
  • LogisticRegression - линейный алгоритм
  • SVC - на основе ядра
  • XGBClassifier - усиленный ансамбль
  • QDA: на основе описания

Также вы можете подключить любую модель, совместимую с sklearn API: p

Я выбрал эти наборы алгоритмов для охвата основных типов. Они не предназначены для победы в соревновании Kaggle!

Как выбрать, какой параметр включить?

Ответ заключается в том, что это полностью зависит от вас и вашего варианта использования. Итак, я предлагаю вам понять, как работают эти алгоритмы, и их важные контролируемые параметры.

Примечание: существует специальная нотация для определения пространства поиска. Он должен указывать на порядок шагов в конвейере. Например, наш конвейер модели (см. Ниже) помечен как «модель», что делает нашу нотацию «model__param_name». Точно так же, если вы назовете свой конвейер «clf , "это будет" clf__param_name. "

Скелет HyperOpts

Есть два основных компонента Hyperopts:

  1. У нас есть функция optimize (), которую мы пытаемся оптимизировать: P

2. У нас есть функция fmin, которая итеративно вызывает функцию оптимизации с набором гиперпараметров, определенных в области поиска.

Это всего лишь два основных шага. Если вы хотите узнать больше о Hyperopt, посетите их страницу. (или Google это)

Еще одна строчка!

Мы получаем лучшую модель из нашего небольшого эксперимента, используя этот простой доступ:

best_params['model']
SVC(C=0.15499999999999997, degree=2, gamma=391.91004869541047)

Наконец, мы проверяем наш классификационный отчет.

Вот и все!! Теперь подключите и играйте свою модель для вашего случая использования. Советуем тщательно изучить свои гиперпараметры !!

Заключение

В этой статье предлагается беглый взгляд на создание автоматизированной настройки гиперпараметров для нескольких моделей с использованием HyperOpts. Мы использовали конвейеры-преобразователи от Sklearn для предварительной обработки данных за один шаг. Поскольку hyperopts не зависит от модели, мы можем подключать и воспроизводить любые модели с перекрестной проверкой и причудливыми украшениями параметров, просто определив целевую функцию и функцию fmin контроллера. Очень просто!

Вы можете получить доступ к полному коду здесь.

Автор не Бэтмен!

Спасибо за поддержку! Надеюсь, помогло :)

Вы можете связаться со мной через Linkedin, если хотите поделиться некоторыми идеями!