Хотя машинное обучение может показаться заманчивым вариантом для принятия обоснованных решений или автоматизации ручного процесса, это не то, что не требует контроля. Алгоритмы машинного обучения необходимо время от времени перекалибровывать, когда показатели модели падают ниже порогового значения — это может быть из-за ухудшения качества данных, разброса данных или резких изменений в обучающих наборах данных. Один из самых популярных способов убедиться, что модель хорошо работает в рамках наших пороговых показателей модели, — время от времени выполнять настройку гиперпараметров. Аналогичной аналогией для настройки гиперпараметров может быть настройка инструмента — когда вы настраиваете гитару, это не значит, что она будет настроена через месяц, ее нужно настроить заново, чтобы она звучала великолепно!

Типы настройки гиперпараметров:

  1. GridSearchCV: тестирует все возможные заданные гиперпараметры и выдает из них наиболее эффективную модель.
  2. RandomizedSearchCV: случайным образом выбирает указанный гиперпараметр и выдает из него наиболее эффективную модель.
  3. Байесовская оптимизация. В этом методе мы извлекаем уроки из наших предыдущих комбинаций гиперпараметров, чтобы повысить производительность модели (например, минимизировать «rmse» в задаче регрессии или увеличить «auc» в задаче бинарной классификации).

В этой статье мы рассмотрим, как автоматизировать задание байесовской настройки с помощью блокнотов Amazon:

Чтобы запустить настройку гиперпараметров в записной книжке, нам нужны train.csv, validation.csv и путь к выходному файлу в корзине s3. Мы будем использовать изображение алгоритма XGBoost для настройки гиперпараметров, поэтому нам нужно убедиться, что файлы соответствуют инструкциям AWS:

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

Мы рассмотрим выбор гиперпараметров для настройки:

  1. ETA: скорость обучения для классификатора xgboost.
  2. альфа: термин регуляризации L1 для весов.
  3. гамма: минимальное снижение потерь, необходимое для создания дальнейшего раздела на листовом узле дерева.
  4. лямбда: член регуляризации L2 для весов.
  5. colsample_bylevel: отношение подвыборки столбцов для каждого уровня.
  6. colsample_bytree: отношение подвыборки столбцов при построении каждого дерева.
  7. max_depth: максимальная глубина дерева. Увеличение этого значения сделает модель более сложной и с большей вероятностью переобучения.
  8. num_round:количество раундов обучения.

Пожалуйста, следуйте документации Xgboost в aws, чтобы выбрать и понять все гиперпараметры.

Ниже показано, как настроить tuning_job_config:

На изображении выше видно, что мы выбрали Байесовский для стратегии настройки и валидацию: auc в качестве показателя, на котором следует сосредоточиться, поскольку мы хотим максимизировать auc,указываем "Максимизировать" в типе.

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

"MaxNumberOfTrainingJobs": 20
"MaxParallelTrainingJobs": 4

Получить изображение модели с Amazon: укажите train_path, validation_path, instance_type, цель и максимальное время выполнения в секундах.

После указания всех деталей в тренировочном изображении мы можем приступить к работе с гиперпараметрами:

После того, как мы запустим приведенный выше код и запустим задание гиперпараметров, мы отследим ход выполнения в консоли Amazon > Обучение > Задания настройки гиперпараметров.

После завершения задания по настройке гиперпараметров мы можем проверить гиперпараметры на максимальное значение auc:

Сценарий, который мы написали выше, можно автоматизировать для запуска с любой частотой (ежемесячно, раз в два месяца, еженедельно) с помощью лямбда-функций.

Давайте начнем кодировать!

Следите за моим средним блогом и добавляйте меня в личку — мне бы очень хотелось связаться с вами.

Связано: Омкар-гаваде