Настройка гиперпараметров — различия между версиями
AnneKsatn (обсуждение | вклад) м (форматирование текста) |
AnneKsatn (обсуждение | вклад) м (источники) |
||
Строка 14: | Строка 14: | ||
[[Файл:KNeighborsClassifier_model.png|center|1000px]] | [[Файл:KNeighborsClassifier_model.png|center|1000px]] | ||
− | |||
− | + | == Grid search == | |
− | + | === Общая информация === | |
Grid search принимает на вход модель и различные значения гиперпараметров (сетку гиперпараметров). Далее, для каждого возможного сочетания значений гиперпараметров, метод считает ошибку и в конце выбирает сочетание, при котором ошибка минимальна. | Grid search принимает на вход модель и различные значения гиперпараметров (сетку гиперпараметров). Далее, для каждого возможного сочетания значений гиперпараметров, метод считает ошибку и в конце выбирает сочетание, при котором ошибка минимальна. | ||
− | + | === Sklearn Grid search: использование === | |
Пример использования <code>GridSearch</code> из библиотеки scikit-learn: | Пример использования <code>GridSearch</code> из библиотеки scikit-learn: | ||
Строка 34: | Строка 33: | ||
[[Файл:KNeighborsClassifier_exmpl.png|center|1000px]] | [[Файл:KNeighborsClassifier_exmpl.png|center|1000px]] | ||
− | + | === Sklearn Grid search: важные атрибуты === | |
* <code>best_estimator_</code> — лучшая модель | * <code>best_estimator_</code> — лучшая модель | ||
Строка 50: | Строка 49: | ||
[[Файл:KNeighborsClassifier_param_array.png|center|1000px]] <br> | [[Файл:KNeighborsClassifier_param_array.png|center|1000px]] <br> | ||
− | + | === Реализация Grid search в библеотеках === | |
* Katib | * Katib | ||
* scikit-learn | * scikit-learn | ||
Строка 57: | Строка 56: | ||
− | + | == Random grid search == | |
− | + | === Основная информация === | |
Вместо полного перебора, Random grid search работает с некоторыми, случайным образом выбранными, комбинациями. На основе полученных результатов, происходит сужение области поиска. | Вместо полного перебора, Random grid search работает с некоторыми, случайным образом выбранными, комбинациями. На основе полученных результатов, происходит сужение области поиска. | ||
Строка 65: | Строка 64: | ||
Когда random grid search будет гораздо полезнее, чем grid search? В ситуации, когда гиперпараметров много, но сильно влияющих на конечную производительность алгоритма — мало. | Когда random grid search будет гораздо полезнее, чем grid search? В ситуации, когда гиперпараметров много, но сильно влияющих на конечную производительность алгоритма — мало. | ||
− | + | === Реализация Random grid === | |
* hyperopt | * hyperopt | ||
Строка 74: | Строка 73: | ||
− | + | == SMBO == | |
− | + | === Основная информация === | |
SMBO (Sequential Model-Based Optimization) — методы, основанные на байесовской оптимизации | SMBO (Sequential Model-Based Optimization) — методы, основанные на байесовской оптимизации | ||
Строка 104: | Строка 103: | ||
* Random Forest Regressions | * Random Forest Regressions | ||
− | + | === Реализация === | |
* Random Forest Regressions: SMAC | * Random Forest Regressions: SMAC | ||
* Tree Parzen Estimators: Hyperopt | * Tree Parzen Estimators: Hyperopt | ||
* Gaussian Processes: Spearmint, Scikit-optimize | * Gaussian Processes: Spearmint, Scikit-optimize | ||
− | + | == TPE == | |
− | + | === Основная информация === | |
TPE — Tree-structured Parzen Estimator (Древовидная структура Парзена) | TPE — Tree-structured Parzen Estimator (Древовидная структура Парзена) | ||
Строка 120: | Строка 119: | ||
<math> {p(x|y)} </math> — распределение гиперпараметров. | <math> {p(x|y)} </math> — распределение гиперпараметров. | ||
− | + | === Реализация === | |
* Hyperopt | * Hyperopt | ||
− | + | == SMAC == | |
− | + | === Основная информация === | |
SMAC использует Random Forest regression и расширяет подходы SMBO: | SMAC использует Random Forest regression и расширяет подходы SMBO: | ||
Строка 134: | Строка 133: | ||
* Выделяет бюджет на общее время, доступное для настройки алгоритма, а не на количество оценок функций. | * Выделяет бюджет на общее время, доступное для настройки алгоритма, а не на количество оценок функций. | ||
− | + | === Реализация === | |
* AutoML | * AutoML | ||
+ | |||
+ | == Источники == | ||
+ | |||
+ | * [https://towardsdatascience.com/hyperparameters-optimization-526348bb8e2d Hyperparameters Optimization] | ||
+ | * [https://www.youtube.com/watch?v=u6MG_UTwiIQ Bayesian optimization] | ||
+ | * [https://www.youtube.com/watch?v=PgJMLpIfIc8 Гауссовские процессы и байесовская оптимизация] | ||
+ | * [https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html GridSearchCV sklearn] |
Версия 20:16, 22 апреля 2020
Гиперпараметры
Гиперпараметры — параметры, которые не настраиваются во время обучения модели. Пример гиперпараметра — шаг градиентного спуска, он задается перед обучением. Пример параметров — веса градиентного спуска, они изменяются и настраиваются во время обучения.
Для подбора гиперпараметров необходимо разделить датасет на три части:
- training set (тренировочный набор данных, для обучении модели)
- validation set (валидационный набор данных, для расчета ошибки и выбора наилучшей модели)
- test set (тестовый набор данных, для тестирования лучшей модели)
Зачем нам нужен и валидационный, и тестовый набор? Дело в том, что модель может переучиться на валидационном наборе данных. Для выявления переобучения используется тестовый набор данных.
Рассмотрим модель KNeighborsClassifier
из библиотеки sklearn. Все “параметры” данной модели, с точки зрения машинного обучения, являются гиперпараметрами, так как задаются до начала обучения.
Grid search
Общая информация
Grid search принимает на вход модель и различные значения гиперпараметров (сетку гиперпараметров). Далее, для каждого возможного сочетания значений гиперпараметров, метод считает ошибку и в конце выбирает сочетание, при котором ошибка минимальна.
Sklearn Grid search: использование
Пример использования GridSearch
из библиотеки scikit-learn:
- Создание экземпляра класса
SGDClassifier
(из sklearn) - Создание сетки гиперпараметров. В данном случае будем подбирать коэффициент регуляризации, шаг градиентного спуска, количество итераций и параметр скорости обучения.
- Создание экземпляра класса кросс-валидации
- Создание экземпляра
GridSearch
(из sklearn). Первый параметр — модель, второй — сетка гиперпараметров, третий — функционал ошибки (используемый для контроля качества моделей по технике кросс-валидации), четвертый — кросс-валидация (можно задать количество фолдов, а можно передать экземпляр класса кросс - валидации) - Запуск поиска по сетке.
Sklearn Grid search: важные атрибуты
-
best_estimator_
— лучшая модель -
best_score_
— ошибка, полученная на лучшей модели. -
best_params_
— гиперпараметры лучшей модели
-
cv_results_
— результаты всех моделей.
- доступ к массиву определенного параметра:
Реализация Grid search в библеотеках
- Katib
- scikit-learn
- Tune
- Talos
Random grid search
Основная информация
Вместо полного перебора, Random grid search работает с некоторыми, случайным образом выбранными, комбинациями. На основе полученных результатов, происходит сужение области поиска.
Когда random grid search будет гораздо полезнее, чем grid search? В ситуации, когда гиперпараметров много, но сильно влияющих на конечную производительность алгоритма — мало.
Реализация Random grid
- hyperopt
- Katib
- scikit-learn
- Tune
- Talos
SMBO
Основная информация
SMBO (Sequential Model-Based Optimization) — методы, основанные на байесовской оптимизации
Когда используют SMBO? Когда оптимизация целевой функции будет стоить очень "дорого". Главная идея SMBO — замена целевой функции "суррогатной" функцией.
На каждом шаге работы SMBO:
- Строится вероятностная модель (суррогатная функция) целевой функции.
- Подбираются гиперпараметры, которые лучше всего подходят для вероятностной модели.
- Подобранные гиперпараметры применяются к целевой функции.
- Вероятностная модель перестраивается (обновляется).
- Шаги 2-4 повторяются столько раз, сколько задал пользователь.
Существует четыре ключевые аспекта SMBO:
- Сетка значений гиперпараметров (область поиска).
- Целевая функция (выводит оценку, которую мы хотим минимизировать или максимизировать).
- Вероятностная модель целевой функции (суррогатная функция).
- Критерий, называемый функцией выбора (для выбора следующих гиперпараметры по текущей вероятностной модели).
Методы SMBO отличаются между собой вероятностными моделями и функциями выбора:
Популярные вероятностные модели (суррогатные функции):
- Gaussian Processes
- Tree Parzen Estimators (TPE)
- Random Forest Regressions
Реализация
- Random Forest Regressions: SMAC
- Tree Parzen Estimators: Hyperopt
- Gaussian Processes: Spearmint, Scikit-optimize
TPE
Основная информация
TPE — Tree-structured Parzen Estimator (Древовидная структура Парзена)
Как было написано выше, методы SMBO отличаются тем, как они строят вероятностную модель
. В случае TPE, используется следующая функция:
— распределение гиперпараметров.
Реализация
- Hyperopt
SMAC
Основная информация
SMAC использует Random Forest regression и расширяет подходы SMBO:
- Использует дискретные и условные пространства параметров.
- Обрабатывает негауссовский шум.
- Выделяет бюджет на общее время, доступное для настройки алгоритма, а не на количество оценок функций.
Реализация
- AutoML