Как новичок в машинном обучении, большинство людей воодушевляются, когда их ошибки в обучении начинают уменьшаться. Они стараются еще больше, и он начинает уменьшаться еще больше, их азарт не знает границ. Они показывают свои результаты мастеру Oogway (старая мудрая черепаха в кунг-фу панде), и он спокойно говорит, что это не хорошая модель, вам нужно упорядочить модель и проверить производительность на проверочном наборе. Если вы из тех, кто хотел бы понять, что такое «регуляризация» и как она помогает, читайте дальше.

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

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

Простой пример - это то, что необходимо для понимания примера обучающих данных, где Y демонстрирует полиномиальное отношение к X.

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

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

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

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

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

Итак, как именно регуляризация снижает дисперсию модели?

Для этого нам нужно взять пример регрессии наименьших квадратов. Функция стоимости регрессии наименьших квадратов:

Теперь регуляризация работает так: она добавляет штраф к функции стоимости.

Помните, что это наказание для всех Thetas, кроме Theta0 (Intercept). Как это помогает уменьшить чрезмерную подгонку модели? Давайте разбираться.

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

  1. Уменьшите количество функций (выбор модели / выбор подмножества)

Это достигается с помощью выбора модели или методов выбора подмножества. Это статистический процесс, при котором различные модели строятся с комбинацией функций, и лучшая модель выбирается (с подмножеством функций) с использованием либо AIC (информационный критерий Акаике), либо SBC (байесовский критерий Шварца), либо Мальлоу (Cp) или любого другого. . Однако мы не собираемся обсуждать это в этой статье.

2. Уменьшение веса элементов (метод регуляризации / усадки)

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

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

  • Ридж (уменьшает вес элементов)

  • Лассо (устраняет некоторые особенности)

  • ElasticNet (гибридный подход)

где:

Лямбда = параметр штрафа за регуляризацию

Хребет

В случае регуляризации гребня штраф известен как норма l2. Так почему же регресс гребня снижает чрезмерную подгонку? По мере увеличения лямбда гибкость гребня начинает уменьшаться, когда lamda = 0, тогда регрессия гребня такая же, как и OLS. Однако веса функций могут быть очень близкими к нулю, но в случае Ridge получить нулевые веса сложно.

Лассо

В случае лассо штраф известен как l1 norm. Разница между Ridge и Lasso заключается в том, что в случае Lasso, когда лямбда увеличивается, гибкость начинает быстро уменьшаться, и вскоре некоторые функций отключены, что означает, что веса некоторых функций уменьшаются до нуля. Таким образом, лассо очень полезно для уменьшения количества функций и получения более экономичной модели.

Давайте разберемся в этом на примере. Я беру набор данных под названием Credit, который доступен на известном книжном сайте ISLR.

Проблема состоит в том, чтобы предсказать «Баланс», используя набор функций.

Проблема небольшая, но она поможет нам увидеть, как Ridge и Lasso ведут себя при использовании одного и того же набора функций.

Для простоты мы возьмем только четыре функции: «Доход», «Рейтинг», «Лимит» и «Студент». Мы бы возьмем 50 значений, если лямбда от 0,001 до 1000, а затем проверим веса для дохода, рейтинга, лимита и учащегося. Это дало бы представление о поведении Риджа и Лассо.

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

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

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

Когда мы повторяем тот же процесс для лассо, мы видим следующее:

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

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

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

Стоит посмотреть, как MSE меняется для данных перекрестной проверки с трехкратной перекрестной проверкой.

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

Наконец, нам нужно помнить об одном важном аспекте регуляризации: данные должны быть стандартизированы.

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

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

Я надеюсь, что приведенная выше статья поможет вам разобраться в регуляризации.

Если вы хотите увидеть работающий пример, посмотрите его в Google Colab здесь



Код github можно взять отсюда