введение

в машинном обучении оптимизация гиперпараметров или настройка гиперпараметров - одна из самых важных частей, которую должен учитывать каждый. Это сильно влияет на вашу модель. В этой статье мы обсудим три важных вопроса. Они есть..

А. Что такое гиперпараметры?

B. Что такое гиперпараметрическая настройка (оптимизация)?

C. Как оптимизировать гиперпараметры?

Ладно так прыгаем..

А. Что такое гиперпараметры?

Гиперпараметры — это параметры, которые не могут быть оценены самой моделью, и вам нужно указать их вручную. Эти параметры во многом влияют на вашу модель для определенного набора данных. Чтобы ваша модель работала наилучшим образом, вы должны выбрать лучший набор гиперпараметров. Примерами являются максимальная глубина в дереве решений и скорость обучения в глубокой нейронной сети. Эти гиперпараметры напрямую влияют на то, будет ли ваша модель неподходящей или переоснащенной. Компромисс Bias Variance в значительной степени зависит от настройки гиперпараметров. Итак, наша цель — получить оптимальные гиперпараметры. Помните, что для разных наборов данных наши оптимальные гиперпараметры будут меняться.

В модели присутствуют и другие параметры, называемые параметрами модели. Но хорошая новость в том, что нам не нужно оптимизировать их вручную. Сама модель может это сделать. Модель оценивает эти параметры по данным. Примерами являются веса в нейронной сети. Алгоритмы оптимизации, такие как Gradient Descent, Adam и т. д., используются для такого рода параметров.

Б. Что такое оптимизация гиперпараметров или настройка гиперпараметров?

В большинстве моделей машинного обучения у вас будет несколько гиперпараметров. Выбор наилучшей комбинации требует понимания параметров моделей и бизнес-задачи, которую вы пытаетесь решить. Поэтому, прежде чем что-либо делать, вы должны знать гиперпараметры моделей и их важность.

Для получения наилучшего гиперпараметра выполняется двухэтапная процедура.

1. Для каждой комбинации гиперпараметров оценивается модель

2. В качестве оптимальных гиперпараметров выбирается комбинация, дающая наилучшую модель.

Таким образом, просто говоря, выбор наилучшего набора гиперпараметров, обеспечивающих наилучшую модель, называется настройкой гиперпараметров.

С. Как оптимизировать гиперпараметры?

Есть два способа найти наилучшую настройку гиперпараметра.

А. Ручной поиск

Б. Автоматический поиск

Давайте посмотрим на эти методы более внимательно

А. Ручной поиск.

Возможно, вы правильно догадались. Да мануал значит мануал. т.е. вы экспериментируете с каждой комбинацией наборов гиперпараметров и выбираете лучший. Это сложно и требует отслеживания экспериментов. Если вы занимаетесь настройкой, то это хорошо, поскольку дает вам контроль над процессом. Но помните, что это непрактичный метод поиска гиперпараметров. При огромном количестве испытаний это очень дорого и требует много времени. Так что оставь это, мы не будем об этом говорить.

Б. Автоматический поиск

Это работает как

1. Вы указываете набор гиперпараметров и ограничиваете их значения. Для выполнения этой задачи используется словарь.

2. Вам поможет автоматизированный алгоритм. Он запускает испытания или эксперименты, которые вы бы проделали при ручном поиске, и возвращает лучший набор гиперпараметров, который дает оптимальную модель.

И это сделано.

Существует множество методов оптимизации параметров гиперпараметров. Но в этой статье ae будет использовать два самых популярных метода оптимизации

1. Поиск по сетке

2. Случайный поиск

Давайте подойдем к этому один за другим.

1. Поиск по сетке

Пусть у нас есть два гиперпараметра «gamma» и «kernel». и их значения

«гамма»: [1, 0,1, 0,01, 0,001]

«ядро»: [‘rbf’, ‘линейный’, ‘сигмовидный’]

Теперь алгоритм создает сетку из этих двух аргументов в 2D-плоскости, как показано ниже.

Здесь мы видим сформированную сетку. Теперь алгоритм выполняет для каждой точки пересечения модель с имеющейся комбинацией гиперпараметров. Как и в первой итерации, набор гиперпараметров будет [‘rbf’, 1.0], затем в следующей итерации [‘rbf’, 0.1] и т. д.

После запуска всех точек сетки он выберет наиболее эффективную модель и вернет ее. Помните название Grid search CV, CV расшифровывается как Cross Validation. Для каждой итерации он выполняет методы перекрестной проверки, чтобы получить лучшую модель с настройкой гиперпараметра для этой итерации. Мы уже публиковали статью о перекрестной проверке. Поэтому, пожалуйста, ознакомьтесь с этой статьей, чтобы лучше понять перекрестную проверку.

Теперь реализовать Grid search CV в python довольно просто. Короче говоря, вы создаете словарь Python для всех гиперпараметров, которые хотите рассмотреть. Используйте библиотеку Scikit Learn для использования метода GridSearchCV() и поместите экземпляр модели, сетку параметров (только что созданный словарь), метрику оценки, количество перекрестных проверок. В этой статье мы не будем рассматривать реализацию Grid Search CV на Python. Таких статей много. Я связываю некоторые из них здесь. Они очень хороши для понимания процесса.

Это, это, это

2. Резюме рандомизированного поиска

Как следует из названия, мы берем комбинацию гиперпараметров случайным образом. Это означает, что в отличие от поиска по сетке, где мы использовали все возможные комбинации гиперпараметров, здесь мы выбираем значения из статистического распределения для каждого гиперпараметра. Распределение выборки определяется для каждого гиперпараметра для выполнения случайного поиска.

Таким образом, вы можете контролировать количество попыток комбинации гиперпараметров. Это означает, что когда у вас есть четыре гиперпараметра, и у каждого есть 4 различных значения на выбор, поиск по сетке CV будет обучать модель 4 ✖ 4 ✖ 4 ✖ 4 = 256 раз. В некоторых случаях у нас может не быть столько вычислительных ресурсов. В случайном поиске мы можем указать количество итераций с помощью аргумента n_iter в методе библиотеки Sklearn RandomizedSearchCV(). Допустим, вы выбрали n_iter = 100. Хотя у вас есть 264 возможных комбинации, этот алгоритм проведет только 100 случайно выбранных комбинаций. После того, как все указанные комбинации будут собраны, будет возвращена лучшая. И у вас есть лучшая модель. Для реализации Randomized Search CV на Python обратитесь к этой странице.

Примечание.

Когда у нас есть небольшой объем данных и меньшее количество гиперпараметров, поиск по сетке является предпочтительным выбором для настройки гиперпараметров. Поскольку он проверяет каждую возможную комбинацию и гарантирует точность. Но когда у вас большой объем данных, это кажется невозможным. С большей размерностью большее количество комбинаций гиперпараметров для поиска и обучения модели. Это заняло бы так много времени. Используемые компьютерные ресурсы также являются проблемой.

Рандомизированный поиск позволяет вам контролировать количество вычисляемых итераций. Хотя он может быть не таким точным, как предыдущий, но с увеличенным количеством значений гиперпараметров и размером данных, рандомизированный поиск определенно является лучшим подходом.

С учетом сказанного мы завершим эту статью здесь. Пожалуйста, поправьте нас, где мы ошибаемся или где мы могли бы быть более конкретными или что-то в этом роде. Раздел комментариев для вас, чтобы высказаться.

Если вам понравился этот пост, пожалуйста, подпишитесь на меня на medium

Или эти альтернативы

Твиттер, Гитхаб, LinkedIN

Спасибо вам всем

Ссылка:

https://neptune.ai/blog/hyperparameter-tuning-in-python-complete-guide