Источник: Nuances of Programming
Итак, вы написали Python-скрипт, который обучает и оценивает модель машинного обучения. И теперь вам хочется оптимизировать гиперпараметры и повысить производительность модели.
Я помогу!
В данной статье я покажу вам, как преобразовать скрипт в целевую функцию, которую можно оптимизировать через любую библиотеку оптимизации гиперпараметров.
Весь процесс состоит из 3 шагов, изучив которые вы научитесь оптимизировать параметры моделей так, как будто знали это всегда.
Готовы?
Поехали!
Полагаю, ваш скрипт main.py выглядит примерно так:
Шаг 1: отделяем параметры поиска от кода
Возьмите параметры, которые хотите оптимизировать, и поместите их в словарь в начало скрипта. Это действие позволит вам эффективно отделить параметры поиска от остального кода.
Шаг 2: заворачиваем логику обучения и оценки в функцию
Теперь вы можете поместить всю логику обучения и оценки внутрь функции train_evaluate. Эта функция принимает параметры на вход, а на выходе выдает результат проверки.
Шаг 3: запускаем скрипт оптимизации гиперпараметров
Осталось совсем немного.
Теперь мы используем train_evaluate в качестве цели в любой библиотеке оптимизации неизвестной функции («черного ящика»).
Я предпочитаю Scikit Optimize, но вы можете выбрать другую библиотеку.
Процедура следующая:
- задаем область поиска SPACE;
- создаем целевую функцию objective для минимизации;
- запускаем оптимизацию через функцию forest_minimize.
В данном примере я опробую 100 различных конфигураций и начну с 10 случайно выбранных наборов параметров.
Вот и все.
Объект results содержит информацию о лучшей оценке и комбинации параметров для ее получения.
Примечание:
Если вы хотите визуализировать процесс обучения, а затем сохранить диагностические диаграммы, то добавьте обратный вызов и вызов функции, которые будут записывать каждый поиск значения гиперпараметра в Neptune. С этим вам поможет вспомогательная функция из библиотеки neptune-contrib.
Теперь при запуске вариации параметров вы увидите следующее:
Посмотреть весь код, графики и результаты можно в эксперименте skopt по вариации гиперпараметров.
Заключение
В данной статье вы научились оптимизировать гиперпараметры любого Python-скрипта в 3 шага.
Надеюсь, эти знания помогут вам создавать качественные модели машинного обучения быстрее и проще.
Читайте также:
Читайте нас в телеграмме и vk
Перевод статьи Jakub Czakon:How to Do Hyperparameter Tuning on Any Python Script in 3 Easy Steps