Настройка гиперпараметров — различия между версиями
AnneKsatn (обсуждение | вклад) (форматирование) |
AnneKsatn (обсуждение | вклад) м (форматирование текста) |
||
Строка 10: | Строка 10: | ||
Зачем нам нужен и валидационный, и тестовый набор? Дело в том, что модель может переучиться на валидационном наборе данных. Для выявления переобучения используется тестовый набор данных. | Зачем нам нужен и валидационный, и тестовый набор? Дело в том, что модель может переучиться на валидационном наборе данных. Для выявления переобучения используется тестовый набор данных. | ||
− | Рассмотрим модель | + | Рассмотрим модель <code>KNeighborsClassifier</code> из библиотеки sklearn. Все “параметры” данной модели, с точки зрения машинного обучения, являются гиперпараметрами, так как задаются до начала обучения. |
[[Файл:KNeighborsClassifier_model.png|center|1000px]] | [[Файл:KNeighborsClassifier_model.png|center|1000px]] | ||
Строка 24: | Строка 24: | ||
==== Sklearn Grid search: использование ==== | ==== Sklearn Grid search: использование ==== | ||
− | Пример использования | + | Пример использования <code>GridSearch</code> из библиотеки scikit-learn: |
− | # Создание экземпляра класса | + | # Создание экземпляра класса <code>SGDClassifier</code> (из sklearn) |
# Создание сетки гиперпараметров. В данном случае будем подбирать коэффициент регуляризации, шаг градиентного спуска, количество итераций и параметр скорости обучения. | # Создание сетки гиперпараметров. В данном случае будем подбирать коэффициент регуляризации, шаг градиентного спуска, количество итераций и параметр скорости обучения. | ||
# Создание экземпляра класса кросс-валидации | # Создание экземпляра класса кросс-валидации | ||
− | # Создание экземпляра | + | # Создание экземпляра <code>GridSearch</code> (из sklearn). Первый параметр — модель, второй — сетка гиперпараметров, третий — функционал ошибки (используемый для контроля качества моделей по технике кросс-валидации), четвертый — кросс-валидация (можно задать количество фолдов, а можно передать экземпляр класса кросс - валидации) |
# Запуск поиска по сетке. | # Запуск поиска по сетке. | ||
Строка 36: | Строка 36: | ||
==== Sklearn Grid search: важные атрибуты ==== | ==== Sklearn Grid search: важные атрибуты ==== | ||
− | * | + | * <code>best_estimator_</code> — лучшая модель |
− | * | + | * <code>best_score_</code> — ошибка, полученная на лучшей модели. |
− | * | + | * <code>best_params_</code> — гиперпараметры лучшей модели <br> |
[[Файл:KNeighborsClassifier_bestest.png|center|1000px]] <br> | [[Файл:KNeighborsClassifier_bestest.png|center|1000px]] <br> | ||
− | * | + | * <code>cv_results_</code> — результаты всех моделей. <br> |
[[Файл:KNeighborsClassifier_results.png|center|1000px]] <br> | [[Файл:KNeighborsClassifier_results.png|center|1000px]] <br> |
Версия 19:57, 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