Вопрос или проблема
Я заинтересован в обучении различных алгоритмов на наборе данных и наблюдении за метриками производительности. В настоящее время мой подход заключается в обучении различных алгоритмов на тренировочных данных, а затем оценке производительности на тестовом наборе. Затем я использую GridSearch
с кросс-валидацией, чтобы найти оптимальные гиперпараметры для модели с лучшими показателями и снова тестирую с их помощью.
Я немного запутался в кросс-валидации – будет ли это правильным подходом или есть способ, который я мог бы/должен использовать для кросс-валидации для всех моделей?
Основная проблема заключается в получении надежной оценки производительности. Важно учитывать, что обе стадии (выбор алгоритма и настройка гиперпараметров) сами по себе являются этапами обучения, поэтому полученная модель (после выбора, и только эта модель) должна быть оценена на новом тестовом наборе. В противном случае существует риск переоценки производительности, если выбранный метод окажется лучше случайно на тестовом наборе.
Самый простой способ рассмотреть все это как единый этап настройки параметров (т.е. рассматривать алгоритм как параметр). В этом случае вам следует разделить данные на 3 набора A, B, C:
- Все алгоритмы со всеми их комбинациями параметров обучаются на A, затем оцениваются на B.
- Выбирается лучшая система. Затем этот выбранный алгоритм+параметры переобучаются на A+B. Наконец, модель оценивается на C.
Шаг 1 можно заменить на кросс-валидацию. В этом случае есть только два набора: CV на A, затем выбор и оценка на B.
Оставление двух этапов раздельными обычно требует еще одного уровня, т.е. 4 наборов A, B, C, D:
- Обучите все алгоритмы на A, оцените их на B.
- Выберите лучший алгоритм. Испытайте все комбинации параметров для этого алгоритма, обучая на A+B, затем тестируя на C.
- Выберите лучшие параметры и переобучите на A+B+C, затем оцените на D.
Снова может использоваться CV, либо на шаге 1, либо 2, либо обоих. В этом случае это будет вложенная кросс-валидация, она немного сложнее, но принцип тот же.
Кросс-валидация должна использоваться для поиска алгоритма с высокой производительностью и связанных гиперпараметров. Если у вас достаточно данных, создайте поисковую сетку, которая ищет по алгоритмам и соответствующим гиперпараметрам. Если у вас недостаточно данных, попробуйте случайный поиск или меньше алгоритмов и параметров гиперпараметров.
Вы должны посмотреть на тестовый набор только один раз, после того как алгоритм, гиперпараметры и параметры будут окончательно определены.
Ответ или решение
Оптимизация алгоритмов и весов – ключевой аспект машинного обучения, где выбор наилучшего подхода может значительно повлиять на конечное качество модели. Особенно важно подходить к этому процессу с пониманием, как избежать переоценки производительности алгоритмов на ограниченном наборе данных.
Теория
Ваш текущий подход, содержащий этап предварительного выбора алгоритма с последующей настройкой гиперпараметров, является распространенным и стандартным в данных задачах. Однако важно также учитывать возможные подводные камни этого процесса. В первую очередь, тренировка модели и оценка её на одном и том же наборе данных (в описанном случае – вторичное тестирование на тестовом наборе после GridSearch с перекрёстной проверкой) может привести к переоценке модели.
Именно здесь на сцену выходит концепция перекрёстной проверки (CV), которую необходимо использовать, чтобы получить надежные оценки производительности моделей. Главная цель этого метода – максимально изолировать этапы обучения и тестирования, минимизируя таким образом риск смещения в оценке качества модели.
Пример
Рассмотрим вариант, когда вы разделяете ваш набор данных на три части: обучающий набор (A), набор для валидации (B) и тестовый набор (C). Начнем с универсального подхода оптимизации:
-
Обучение всех алгоритмов и их комбинаций гиперпараметров на A, оценка на B
Используем перекрёстную проверку для поиска оптимальных комбинаций гиперпараметров для каждого из алгоритмов на данных А и выбираем модель на основе среднего значения метрик, оцененных на B. -
Выбор лучшего алгоритма и переобучение на A+B, оценка на C
После выбора наилучшей модели (алгоритма с параметрами), переобучаем её на объединенном наборе A+B и проводим финальную оценку на наборе C, которого модель ещё не видела. Это позволит получить более объективную оценку производительности.
Применение
В профессиональной практике часто возникают ситуации с ограниченным количеством данных, где разбиение на четыре части (A, B, C, D) может быть нецелесообразным из-за слишком малого объема данных для корректной тренировки моделей. В таких случаях прибегают к вложенной перекрёстной проверке.
Вложенная перекрёстная проверка предлагает разделить процесс на два этапа:
-
Перекрёстная валидация на инсайтах набора A осуществляется для выбора наилучшего из множества алгоритмов. На этом этапе каждый из алгоритмов тренируется и тестируется на различных фрагментах данных, тем самым позволяя выбрать наиболее перспективный вариант по результатам среднего значения метрик на каждом из этапов валидации.
-
Перекрёстная валидация для оптимизации гиперпараметров выбранного алгоритма; проводится только с ним на уже более полном наборе данных (A+B), но все ещё удерживаясь от использования данных из C и тем более D.
-
Финальная оценка на наборе D, который предварительно необходимо сохранить полностью изолированным от любых этапов обучения.
Такой метод, хотя и трудоемок с точки зрения вычислений, значительно снижает риск получения зависимых результатов.
Практические рекомендации
- Объем данных: при нехватке данных используйте методы случайного поиска (Random Search) или оптимизацию методом Байеса, сконцентрировавшись на меньшем количестве алгоритмов и параметров, обеспечивая меньшее время на тренировки при все ещё высокой эффективности.
- Тестирование: всегда сохраняйте тестовый набор (например, данные D) для окончательной оценки уже выбранной модели и гиперпараметров во избежание искусственного завышения метрик.
- Модульность: настройте процесс, сгруппируйте алгоритмы и гиперпараметры в соответствии с их характеристиками, чтобы избежать глубоких и избыточных проверок для заведомо бесперспективных настроек.
Таким образом, использование вышеописанных подходов не только позволит получить более надежный выбор алгоритма и его параметров, но и развить систематический подход к проекту машинного обучения, созданному с учетом принципов изоляции и объективной оценки моделей.