Сегодня поговорим о методах поиска гиперпараметров и о популярных фреймворках для автоматизации этого процесса. Речь пойдет о Optuna и Hyperopt.
В первую очередь давайте разберемся, что мы будем оптимизировать и каким образом.
Гиперпараметрами могут быть как параметры самого алгоритма, например, глубина дерева в random forest, число соседей в knn, веса нейронов в нейронных сетях, так и способы обработки признаков, пропусков и т.д.
Существуют 3 основных метода для подбора гиперпараметров:
1. Поиск по сетке. Выполняется полный перебор параметров в заданном диапазоне. Минусы - долгое время работы и продолжение поиска при заведомо неудачных параметрах.
2. Случайный поиск. Параметры берутся случайным образом из выборки с указанным распределением.
3. Байесовская оптимизация. Значения гиперпараметров в текущей итерации выбираются с учетом результатов на предыдущем шаге. На каждом шаге мы выбираем: исследовать регион в котором по нашим прогнозам находятся удачные комбинации или исследовать регион с большей неопределенностью.
Итак, в чем сходства и различия этих двух библиотек?
1.Удобство использования API
Optuna: перед началом работы нужно определить пространство поиска и целевую функцию, затем вы создаете study объект и оптимизируете его.
Hyperopt: так же определяется пространство поиска и целевая функция, затем создается объект Trials который передается в функцию fmin, чуть менее гибко чем в Optuna.
2. Пространство поиска:
Optuna: отличительная особенность в том, что вы можете использовать оператор if, для пространство поиска, и менять область поиска в зависимости от ситуации.
Hyperopt:в hyperopt же вы можете создавать очень сложные пространства поиска, с множеством параметров, сэмплировать их.
3. Визуализация.
Optuna имеет модуль optuna.visualisation который позволяет отображать параметры на интерактивной диаграмме, эволюцию поиска, то, какие части пространства исследовались больше. В общем, богатый набор!
Аналог в hyperopt - модуль hyperopt.plotting, который имеет гораздо меньше функций, основные это отображение результатов всех итераций в виде диаграмм и гистограмм.
А какими библиотека для поиска гиперпараметров пользуетесь вы и какие видите в них преимущества?🔎
В первую очередь давайте разберемся, что мы будем оптимизировать и каким образом.
Гиперпараметрами могут быть как параметры самого алгоритма, например, глубина дерева в random forest, число соседей в knn, веса нейронов в нейронных сетях, так и способы обработки признаков, пропусков и т.д.
Существуют 3 основных метода для подбора гиперпараметров:
1. Поиск по сетке. Выполняется полный перебор параметров в заданном диапазоне. Минусы - долгое время работы и продолжение поиска при заведомо неудачных параметрах.
2. Случайный поиск. Параметры берутся случайным образом из выборки с указанным распределением.
3. Байесовская оптимизация. Значения гиперпараметров в текущей итерации выбираются с учетом результатов на предыдущем шаге. На каждом шаге мы выбираем: исследовать регион в котором по нашим прогнозам находятся удачные комбинации или исследовать регион с большей неопределенностью.
Итак, в чем сходства и различия этих двух библиотек?
1.Удобство использования API
Optuna: перед началом работы нужно определить пространство поиска и целевую функцию, затем вы создаете study объект и оптимизируете его.
Hyperopt: так же определяется пространство поиска и целевая функция, затем создается объект Trials который передается в функцию fmin, чуть менее гибко чем в Optuna.
2. Пространство поиска:
Optuna: отличительная особенность в том, что вы можете использовать оператор if, для пространство поиска, и менять область поиска в зависимости от ситуации.
Hyperopt:в hyperopt же вы можете создавать очень сложные пространства поиска, с множеством параметров, сэмплировать их.
3. Визуализация.
Optuna имеет модуль optuna.visualisation который позволяет отображать параметры на интерактивной диаграмме, эволюцию поиска, то, какие части пространства исследовались больше. В общем, богатый набор!
Аналог в hyperopt - модуль hyperopt.plotting, который имеет гораздо меньше функций, основные это отображение результатов всех итераций в виде диаграмм и гистограмм.
А какими библиотека для поиска гиперпараметров пользуетесь вы и какие видите в них преимущества?🔎