Кейсы

Гиперпараметры в машинном обучении

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

Гиперпараметры модели – параметры, значения которых задается до начала обучения модели и не изменяется в процессе обучения. У модели может не быть гиперпараметров.

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

 Рассмотрим ниже многие широко применяемые концепции машинного обучения.  По термину «гиперпараметры» можно провести аналогию: это некоторые настройки алгоритма, которые можно настроить для оптимизации производительности, точно так же, как человек может повернуть ручки FM-радио, чтобы получить четкий сигнал. Хотя параметры модели изучаются во время обучения, такие как наклон и пересечение в линейной регрессии, необходимо устанавливать гиперпараметры перед обучением. В случае случайного леса гиперпараметры включают количество деревьев решений в лесу и количество функций, учитываемых каждым деревом при разделении узла. Параметры случайного леса — это переменные и пороговые значения, используемые для разделения каждого узла, изученного во время обучения. Scikit-Learn реализует набор гиперпараметров в разумных границах по умолчанию для всех моделей, но их оптимальность не гарантируется. Лучшие гиперпараметры обычно невозможно определить заранее, а при настройке модели машинное обучение превращается из науки в разработку, основанную на пробах и ошибках.

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

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

В документации по случайному лесу в Scikit-Learn сказано том, что наиболее важными параметрами являются количество деревьев в лесу (n_estimators) и количество функций, рассматриваемых для разделения на каждом листовом узле (max_features).  Учитывая технические возможности указанные ранее, можно просто попробовать широкий диапазон значений и посмотреть на результаты. При помощи фреймворка Optuna были произведены несколько попыток найти оптимальный набор гиперпараметров:

n_estimators = количество деревьев в наборе

max_features = максимальное количество функций, учитываемых для разделения узла

max_depth = максимальное количество уровней в каждом дереве решений

min_samples_split = минимальное количество точек данных, размещенных в узле перед разделением узла

min_samples_leaf = минимальное количество точек данных, разрешенных в листовом узле

bootstrap = метод выборки точек данных (с заменой или без).