Настройка гиперпараметров — различия между версиями
AnneKsatn (обсуждение | вклад) (→Гиперпараметры) |
AnneKsatn (обсуждение | вклад) (Grid search done) |
||
Строка 14: | Строка 14: | ||
Дело в том, что модель может переучиться на валидационном наборе данных. Для выявления переобучения используется тестовый набор данных. | Дело в том, что модель может переучиться на валидационном наборе данных. Для выявления переобучения используется тестовый набор данных. | ||
− | Рассмотрим модель KNeighborsClassifier из библиотеки sklearn. | + | Рассмотрим модель KNeighborsClassifier из библиотеки sklearn. Все “параметры” данной модели, с точки зрения машинного обучения, являются гиперпараметрами, так как задаются до начала обучения. |
− | [[Файл:KNeighborsClassifier_model.png| | + | [[Файл:KNeighborsClassifier_model.png|center|1000px]] |
== Техники настройки гиперпараметров == | == Техники настройки гиперпараметров == | ||
Строка 22: | Строка 22: | ||
=== Grid search === | === Grid search === | ||
− | + | ==== Общая информация ==== | |
+ | |||
+ | Grid search принимает на вход модель и различные значения гиперпараметров (сетку гиперпараметров). | ||
+ | Далее, для каждого возможного сочетания значений гиперпараметров, метод считает ошибку и в конце выбирает сочетание, при котором ошибка минимальна. | ||
+ | |||
+ | ==== Sklearn Grid search: использование ==== | ||
Пример использования Grid search из библиотеки scikit-learn: | Пример использования Grid search из библиотеки scikit-learn: | ||
Строка 28: | Строка 33: | ||
# Создание экземпляра класса SGDClassifier (из sklearn) | # Создание экземпляра класса SGDClassifier (из sklearn) | ||
# Создание сетки гиперпараметров. В данном случае будем подбирать коэффициент регуляризации, шаг градиентного спуска, количество итераций и параметр скорости обучения. | # Создание сетки гиперпараметров. В данном случае будем подбирать коэффициент регуляризации, шаг градиентного спуска, количество итераций и параметр скорости обучения. | ||
− | # Создание экземпляра класса кросс-валидации | + | # Создание экземпляра класса кросс-валидации |
− | # Создание экземпляра GridSearch (из sklearn). Первый параметр - модель, второй - сетка гиперпараметров, третий - функционал ошибки (используемый для контроля качества моделей по | + | # Создание экземпляра GridSearch (из sklearn). Первый параметр - модель, второй - сетка гиперпараметров, третий - функционал ошибки (используемый для контроля качества моделей по технике кросс-валидации), четвертый - кросс-валидация (можно задать количество фолдов, а можно передать экземпляр класса кросс - валидации) |
# Запуск поиска по сетке. | # Запуск поиска по сетке. | ||
− | + | [[Файл:KNeighborsClassifier_exmpl.png|center|1000px]] | |
− | |||
− | + | ==== Sklearn Grid search: важные атрибуты ==== | |
* best_estimator_ - лучшая модель | * best_estimator_ - лучшая модель | ||
* best_score_ - ошибка, полученная на лучшей модели. | * best_score_ - ошибка, полученная на лучшей модели. | ||
− | * best_params_ - гиперпараметры лучшей модели | + | * best_params_ - гиперпараметры лучшей модели <br> |
− | + | [[Файл:KNeighborsClassifier_bestest.png|center|1000px]] <br> | |
− | * cv_results_ - результаты всех моделей. | + | * cv_results_ - результаты всех моделей. <br> |
− | + | [[Файл:KNeighborsClassifier_results.png|center|1000px]] <br> | |
− | * доступ к массиву определенного параметра: | + | * доступ к массиву определенного параметра: <br> |
− | + | [[Файл:KNeighborsClassifier_param_array.png|center|1000px]] <br> | |
− | ==== Реализация ==== | + | ==== Реализация Grid search в библеотеках==== |
* Katib | * Katib | ||
* scikit-learn | * scikit-learn | ||
Строка 59: | Строка 63: | ||
=== Random grid search === | === Random grid search === | ||
+ | |||
+ | ==== Основная информация ==== | ||
Вместо полного перебора, Random grid search работает с некоторыми, случайным образом выбранными, комбинациями. На основе полученных результатов,происходит сужение области поиска. Random grid search будет гораздо полезнее, чем grid search в ситуации, когда гиперпараметров много, но сильно влияющих на конечную производительность алгоритма - мало. | Вместо полного перебора, Random grid search работает с некоторыми, случайным образом выбранными, комбинациями. На основе полученных результатов,происходит сужение области поиска. Random grid search будет гораздо полезнее, чем grid search в ситуации, когда гиперпараметров много, но сильно влияющих на конечную производительность алгоритма - мало. | ||
− | ==== Реализация ==== | + | ==== Реализация Random grid ==== |
* hyperopt | * hyperopt |
Версия 12:16, 20 апреля 2020
Гиперпараметры
Гиперпараметры - параметры, которые не настраиваются во время обучения модели.
Пример гиперпараметра - шаг градиентного спуска, он задается перед обучением.
Пример параметров - веса градиентного спуска, они изменяются и настраиваются во время обучения.
Для подбора гиперпараметров необходимо разделить датасет на три части:
- training set (тренировочный набор данных, для обучении модели)
- validation set (валидационный набор данных, для расчета ошибки и выбора наилучшей модели)
- test set (тестовый набор данных, для тестирования лучшей модели)
Зачем нам нужен и валидационный, и тестовый набор?
Дело в том, что модель может переучиться на валидационном наборе данных. Для выявления переобучения используется тестовый набор данных.
Рассмотрим модель KNeighborsClassifier из библиотеки sklearn. Все “параметры” данной модели, с точки зрения машинного обучения, являются гиперпараметрами, так как задаются до начала обучения.
Техники настройки гиперпараметров
Grid search
Общая информация
Grid search принимает на вход модель и различные значения гиперпараметров (сетку гиперпараметров). Далее, для каждого возможного сочетания значений гиперпараметров, метод считает ошибку и в конце выбирает сочетание, при котором ошибка минимальна.
Sklearn Grid search: использование
Пример использования Grid search из библиотеки 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 выбирает текущий набор гиперпараметров на основе предыдущих результатов и Байесовский рассуждений. Делается это для того, чтобы сузить область поиска и сосредоточиться на том, что наиболее перспективно.
- происходит запуск модели с текущими гиперпараметрами
- обновляется вероятностная модель.
Существует пять ключевых аспектов SMBO:
- Сетка значений гиперпараметров (область поиска)
- Целевая функция, которая принимает гиперпараметры и выводит оценку, которую мы хотим минимизировать (или максимизировать)
- Вероятностная модель целевой функции
- Критерий, называемый функцией выбора, для оценки того, какие гиперпараметры выбрать следующим из вероятностной модели.
- История, состоящая из пар <оценка, гиперпараметр>, используемая алгоритмом для обновления вероятностной модели.
Существует несколько вариантов SMBO оптимизации, которые отличаются между собой в 3 и 4 пунктах: есть различные варианты построения вероятностной модели целевой функции и выбора критерия. Вероятностные модели (3 пункт): Gaussian Processes, Random Forest Regressions, and Tree Parzen Estimators (TPE). Популярный критерий (4 пункт): Expected Improvement
TPE
TPE - Tree-structured Parzen Estimator (Древовидная структура Парзена)
Методы SMBO отличаются тем, как они строят вероятностную модель p (y | x). В случае TPE, используется следующая функция:
формула
SMAC
расширяет подходы SMBO
В частности, разработаны подходы обработки данных:
- дискретные и условные пространства параметров (с учетом
оптимизация параметров категориального алгоритма и параметров, между которыми существуют зависимости);
- существенный негауссовский шум (из-за дисперсии в
распределение времени выполнения алгоритма по экземплярам задач и несколько независимых запусков на одном экземпляре);
- частично цензурированные оценки функций (из-за преждевременного
завершенные запуски алгоритма);
- бюджет на общее время, доступное для настройки алгоритма, а не на количество оценок функций;