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

Мой друг привел очень интересную аналогию, чтобы понять это,

Недостаточно — неподготовленность к экзамену.

Переобучение — зубрежка перед экзаменом.

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

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

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

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

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

Поэтому, как правило, перед реализацией любой модели мы разделяем наши данные на обучающий набор данных и тестовый набор данных. Как и в нашем примере, вместо подгонки модели к 3 годам мы разделим данные на 2,5 года (обучающий набор данных) и 0,5 года (тестовый набор данных). Теперь мы подгоним модель только к обучающему набору данных и проверим две точности: Точность обучения и Точность теста. Только если мы получим хорошую точность обоих наборов данных, мы сможем принять модель.

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

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

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

Линейные модели —

1. Регуляризация

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

Функция потерь (L1) = MSE + λ ∑|β|

Функция потерь (L2) = MSE + λ ∑(β)²

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

2. Выбор функций —

Часто мы склонны включать в модель все переменные, но часто это становится причиной переобучения. Если мы добавим совершенно несвязанные переменные, которые не объясняют наши зависимые, то все, что он попытается сделать, это зафиксировать шум в данных, из-за чего ваша модель будет плохо работать с невидимыми данными.

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

3. Обработка выбросов—

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

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

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

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

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

Древовидные алгоритмы —

1. Обрезка—

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

В Scikit-learn, классификаторе дерева решений, есть термин ccp_aplha (параметр сложности стоимости), который используется для сокращения. При α = 0 обрезка отсутствует.

Уравнение меры сложности затрат:

Здесь R(T) — средняя примесь концевых/листовых узлов.

T - общее количество терминальных узлов

Итак, когда мы разделим дополнительный узел, произойдут две вещи: R(T) уменьшится и T увеличится.

Теперь, если разделение в узле приводит к большему уменьшению R(T) по сравнению с увеличением α.T, мы сохраним разделение, в противном случае мы обрежем поддерево.

2. Сборка—

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

3. Регуляризация —

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

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

4. Ранняя остановка—

Некоторые люди называют это предварительной обрезкой. Вместо того, чтобы выращивать дерево полной длины, а затем обрезать его, при ранней остановке мы можем использовать несколько параметров, чтобы предотвратить разбиение после определенной точки. Некоторые из факторов —

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

Нейронные сети -

1. Ранняя остановка—

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

2. Отсев —

Dropout, как следует из названия, — это метод, при котором мы исключаем некоторые случайные связи между нейронами сети. Этот метод доказал свою эффективность в уменьшении переобучения.

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

1. Правильные данные и функции —

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

2. Правильная техника —

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

Точно так же в случае классификации, если вы работаете с несбалансированным классом, выбор Boosting становится важным.

3. Правильные параметры—

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

Итак, это некоторые из распространенных методов контроля недостаточной и чрезмерной подгонки в модели.

Теперь вопрос к вам? Является ли перекрестная проверка методом уменьшения переобучения или мерой проверки переоснащения?