Универсальное место для изучения 13 эффективных методов предотвращения переобучения в моделях машинного обучения и глубокого обучения.

Кто не любит находить решения самой серьезной проблемы, с которой сталкивается большинство специалистов по данным? «Проблема переобучения»

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

Что происходит при переоснащении?

Переобучение обычно происходит, когда модель слишком сложна. Когда модель превосходит обучающие данные, происходит следующее:

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

Как обнаружить переобучение

Следующий вопрос:

Как определить переоснащение в моделях машинного обучения и глубокого обучения?

Использование кривой обучения

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

Кривая обучения отображает баллы обучения и проверки в зависимости от количества эпох.

Кривая обучения указывает на то, что модель переоснащается:

  • Если есть явный разрыв между оценками обучения и валидации.
  • Когда ошибка проверки (потери) начинает увеличиваться в какой-то момент, в то время как ошибка обучения (потери) все еще уменьшается. В случае точности точность проверки начинает снижаться в какой-то момент, в то время как точность обучения все еще увеличивается.

Использование кривой проверки

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

Кривая проверки отображает влияние одного гиперпараметра на набор данных для обучения и проверки.

На оси X представлены значения данного гиперпараметра, а на оси Y — оценки обучения и проверки.

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

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

Некоторые примеры этого включают:

  • Кривую проверки можно использовать для построения графика влияния гиперпараметра max_depth (глубина дерева) дерева решений или модели случайного леса.
  • Мы можем использовать кривую проверки, чтобы построить график влияния гиперпараметра n_neighbors (количество соседей) модели KNN.

На следующем графике показана кривая проверки, созданная для классификатора случайного леса для измерения влияния гиперпараметра max_depth (глубина дерева) на показатели обучения и проверки (точности).

После значения max_depth, равного 6, модель начинает соответствовать обучающим данным. Другими словами, точность проверки начинает снижаться при max_depth=6, в то время как точность обучения все еще увеличивается.

Использование нескольких показателей оценки

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

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

Переоснащение гарантировано в полностью выращенных деревьях решений! 100% точность обучения означает, что модель классификатора дерева решений хорошо работает на обучающем наборе. Точность теста 71% ясно указывает на то, что модель плохо работает с новыми невидимыми данными. Точность теста намного ниже точности обучения. Другими словами, существует явный разрыв между точностью обучения и тестирования. Эти вещи указывают на то, что модель явно переоснащена.

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

После применения правильных методов регуляризации (ограничение роста дерева и создание ансамблей) мы получаем следующие значения оценки.

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

13 эффективных методов борьбы с переоснащением

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

Addressing Overfitting - 13 Methods
-----------------------------------
01. Dimensionality Reduction
02. Feature Selection
03. Early Stopping
04. K-Fold Cross-Validation
05. Creating Ensembles
06. Pre‐Pruning
07. Post‐Pruning
08. Noise Regularization
09. Dropout Regularization
10. L1 and L2 Regularization
11. Data (Image) Augmentation
12. Adding More Training Data
13. Reducing Network Width & Depth

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

Давайте начнем!

1️⃣ Устранение переобучения с уменьшением размерности

Переоснащение часто происходит, когда модель слишком сложна. Основной причиной сложности модели является наличие множества признаков (переменных) в данных. Количество признаков в данных называется их размерностью.

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

Уменьшение количества объектов в данных называется уменьшением размерности. Мы должны сохранить как можно больше дисперсии исходных данных. В противном случае мы теряем полезную информацию в данных.

Уменьшение размерности заботится о переоснащении следующим образом.

  1. Уменьшение размерности уменьшает количество признаков в данных. После применения уменьшения размерности уменьшится и сложность модели. Таким образом, модель больше не будет соответствовать обучающим данным!
  2. Уменьшение размерности также устраняет ненужный шум в данных. Зашумленные данные вызовут переоснащение. Модель предотвратит переоснащение обучающих данных после удаления шума в данных.

Наиболее распространенным методом уменьшения размерности является Анализ главных компонентов (PCA). Он находит новый набор некоррелированных функций для данных в форме более низкого измерения.

PCA может эффективно устранить проблему переобучения.

2️⃣ Устранение переобучения с помощью выбора функций

Выбор признаков можно рассматривать как метод уменьшения размерности, поскольку он удаляет избыточные (ненужные) признаки из набора данных. Это уменьшает количество признаков (размерность) в данных.

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

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

Вы можете видеть, что некоторые функции не сильно влияют на модель. Их вклад ничтожен. Таким образом, мы можем удалить эти функции и построить модель только с наиболее важными функциями.

Удаление наименее важных функций из данных уменьшит сложность модели и устранит шум (если он есть) в данных. Таким образом, выбор признаков предотвращает переоснащение модели.

3️⃣ Борьба с переоснащением с помощью ранней остановки

Ранняя остановка — еще один эффективный метод предотвращения переобучения как в моделях машинного обучения, так и в моделях глубокого обучения.

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

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

4️⃣ Устранение переобучения с помощью k-кратной перекрестной проверки

K-кратная перекрестная проверка — это стратегия разделения данных. При построении моделей ML и DL мы обычно разделяем полный набор данных на обучающий и тестовый наборы. Здесь проблема в том, что модель видит только определенный набор экземпляров (точек данных) в процессе обучения.

При k-кратной перекрестной проверке полный набор данных разбивается на разные складки в зависимости от значения k (обычно 5 или 10). Каждая складка содержит разные типы экземпляров (точки данных). Модель обучается на k-1 сгибах данных на каждой итерации. Оценка выполняется с использованием оставшейся части данных в каждой итерации. Складки обучения и оценки меняются на каждой итерации, как показано на следующей диаграмме. Оценочная оценка рассчитывается на каждой итерации, и берется среднее значение.

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

5️⃣ Борьба с переоснащением путем создания ансамблей

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

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

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

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

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

6️⃣ Устранение переобучения с помощью предварительной обрезки

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

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

В деревьях решений обрезка — это процесс управления ростом дерева.

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

  • max_depth: максимальная глубина дерева. Уменьшение этого значения предотвращает переоснащение.
  • min_samples_leaf:минимальное количество образцов, необходимое для конечного узла. Увеличение этого значения предотвращает переоснащение.
  • min_samples_split:минимальное количество выборок, необходимое для разделения внутреннего узла. Увеличение этого значения предотвращает переоснащение.

Существует два распространенных метода настройки этих гиперпараметров.

  • Измеряйте влияние одного гиперпараметра за раз, сохраняя при этом значения других гиперпараметров по умолчанию. Для этого мы можем использовать кривую проверки для обнаружения переобучения.
  • Настройка нескольких гиперпараметров одновременно. Кривая проверки не может использоваться здесь для измерения влияния нескольких гиперпараметров. Здесь следует использовать поиск по сетке или случайный поиск для одновременной настройки нескольких гиперпараметров.

7️⃣ Устранение переобучения с помощью пост-обрезки

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

Сокращение сложности стоимости (ccp) — это метод пост-сокращения. Это включает в себя поиск правильного значения для гиперпараметра ccp_alpha в классах деревьев решений Scikit-learn.

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

Чтобы найти оптимальное значение гиперпараметра ccp_alpha:

  • Мы можем попробовать разные значения, такие как 0,01, 0,02, 0,05, 0,1 и т. д., и отслеживать результаты обучения и проверки.
  • Мы можем передавать все эффективные альфа-значения в гиперпараметр ccp_alpha по одному, а затем вычислять баллы обучения и проверки. Доступ ко всем действующим значениям альфы можно получить с помощью атрибута ccp_alphas.

При alpha=0,06 точность проверки начинает увеличиваться, а точность обучения почти не меняется. Следующее доступное значение альфа-канала — 0,12, что дает очень низкие показатели производительности. Согласно этому графику оптимальное значение альфы равно 0,06.

8️⃣ Устранение переобучения с помощью регуляризации шума

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

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

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

9️⃣ Устранение переобучения с помощью регуляризации отсева

Регуляризация отсева — это специфичный для нейронной сети метод регуляризации для предотвращения переобучения в нейронных сетях.

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

Исходная сеть становится меньше после применения регуляризации отсева. Небольшие сети менее гибкие, поэтому переобучения в них не произойдет.

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

Регуляризация отсева является наиболее эффективным методом предотвращения переобучения в нейронных сетях.

1️⃣0️⃣ Устранение переобучения с помощью регуляризации L1 и L2

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

Когда член регуляризации равен норме L1[λ * (сумма абсолютных значений весов)], он называется L1 регуляризация. Когда член регуляризации равен норме L2[λ * (сумма квадратов значений весов)], он называется L2 регуляризация.

Регуляризация L1 и L2 для нейронных сетей определяется следующим образом.

λ управляет уровнем регуляризации. Поэтому он называется параметром регуляризации (фактором).

  • lambda=0: Мин. значение. Регуляризация не применяется.
  • lambda=1: Максимальное значение. Применяется полная регуляризация.

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

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

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

В логистической регрессии есть гиперпараметр, называемый штраф(значения: 'l1', 'l2' и 'elasticnet'), чтобы выбрать тип регуляризации. Обратите внимание, что «elasticnet» одновременно применяет к модели регуляризацию L1 и L2.

Для линейной регрессии Scikit-learn предоставляет три отдельных класса, называемых Ridge() (применяет регуляризацию L2), Lasso() (применяет регуляризацию L1) и ElasticNet() (применяет регуляризацию как L1, так и L2) для каждого типа регуляризации.

1️⃣1️⃣ Устранение переобучения данных (изображения) с помощью аугментации

Увеличение данных обычно выполняется на данных изображения. Поэтому в некоторых контекстах дополнение данных также называется дополнением изображения.

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

Самое главное в увеличении изображения — сохранить контекст изображений. Другими словами, контекст изображения не должен изменяться при дополнении изображений.

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

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

  1. Увеличение изображения расширяет набор данных, добавляя дополнительные обучающие экземпляры. Добавление дополнительных обучающих данных предотвратит переоснащение.
  2. Увеличение изображения позволяет нейронной сети видеть множество вариантов одних и тех же изображений во время обучения. Это снижает зависимость от исходной формы изображений при изучении важных признаков. Сеть станет более надежной и стабильной при тестировании новых невидимых данных.

1️⃣2️⃣ Устранение переобучения путем добавления дополнительных обучающих данных

Добавление дополнительных обучающих данных в модель предотвратит переоснащение. Есть много способов добавить в модель больше обучающих данных.

  • Сбор новых релевантных данных (дорого)
  • Расширьте исходный набор данных, добавив к данным шум (недорого).
  • Увеличение данных (недорого)

1️⃣3️⃣ Устранение переобучения за счет уменьшения ширины и глубины сети

Структура нейронной сети определяется ее шириной и глубиной. глубина определяет количество скрытых слоев в нейронной сети. Ширина определяет количество узлов (нейронов/единиц) в каждом слое нейронной сети.

Уменьшение количества скрытых слоев и количества скрытых блоков снижает гибкость сети. Менее гибкие сети не улавливают шум в данных и не будут соответствовать обучающим данным.

Это конец сегодняшнего поста.

Пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы или отзывы.

Читать далее (настоятельно рекомендуется)

  • Познакомьтесь с «Руководством по решению проблемы переобучения на 2023 год»

Поддержите меня как автора

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



Большое спасибо за вашу постоянную поддержку! Увидимся в следующей статье. Всем удачного обучения!

Рукшан Прамодита
2022–11–22