tldr: «Ridge» - это причудливое название для L2-регуляризации, «LASSO» означает L1-регуляризацию, «ElasticNet» - это соотношение регуляризации L1 и L2. Если все еще не понятно, продолжайте читать…

Логистическая регрессия

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

Цель двоичной логистической регрессии - найти способ разделить два ваших класса. Есть несколько способов визуализировать это.

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

h (x | theta) = сигмовидная (x точка theta + b)

и ищет тэту, которая минимизирует некоторую целевую функцию, обычно

потеря (тета) = ∑ y * log (h (x | theta)) + (1 − y) log (1 − h (x | theta))

который запутан парой хитрых уловок. Он выводится из интуитивно понятной целевой функции:

потеря (тета) = ∑ (у - ч (х | тета))

то есть количество неправильно классифицированных x, которое имеет смысл попытаться минимизировать.

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

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

Давайте переименуем нашу предыдущую функцию потерь

потеря (тета) = ∑ y * log (h (x | theta)) + (1 − y) log (1 − h (x | theta))

basic_loss (theta). Наша новая регуляризованная функция потерь будет выглядеть так:

потеря (тета) = основная_потеря (тета) + k * величина (тета)

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

Нормы

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

Для p = 1 мы получаем норму L1 (также называемую нормой такси), для p = 2 мы получаем норму L2 (также называемую евклидовой нормой). ), и когда p приближается к ∞, p -норма приближается к бесконечной норме (также называемой максимальной нормой). Номенклатура Lp происходит от работы математика по имени Лебег.

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

потеря (тета) = основная_потеря (тета) + k * L1 (тета)

называется ЛАССО. Если выбрать норму L2,

потеря (тета) = основная_потеря (тета) + k * L2 (тета)

называется Ридж-регрессия (которая, оказывается, имеет и другие названия). Если мы решим, что хотим и того, и другого,

потеря (тета) = основная_потеря (тета) + k (j * L1 (тета) + (1-j) L2 (тета))

называется Эластичная сеть. Обратите внимание на добавление здесь второго гиперпараметра. Также обратите внимание, что ElasticNet включает как LASSO, так и Ridge, задав гиперпараметру j значение 1 или 0.

О наименовании алгоритмов

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

PCA был изобретен в 1901 году Карлом Пирсоном [1] как аналог теоремы о главной оси в механике; Позже он был независимо разработан и назван Гарольдом Хотеллингом в 1930-х годах [2]. В зависимости от области применения его также называют дискретным преобразованием Косамби-Кархунена-Лоэва (KLT) в обработке сигналов, преобразованием Хотеллинга в многомерном контроле качества, правильным ортогональным разложением (POD) в машиностроении, разложением по сингулярным значениям (SVD) X (Голуб и Ван Лоан, 1983), разложение по собственным значениям (EVD) XTX в линейной алгебре, факторный анализ, теорема Эккарта – Юнга (Harman, 1960) или теорема Шмидта – Мирского в психометрике, эмпирические ортогональные функции (EOF) в метеорология, эмпирическая декомпозиция собственных функций (Сирович, 1987), эмпирический компонентный анализ (Lorenz, 1956), квазигармонические режимы (Brooks et al., 1988), спектральная декомпозиция шума и вибрации и эмпирический модальный анализ структурной динамики.

Это 14 уникальных имен для PCA.

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

Я лично считаю, что слов Lasso, Ridge и ElasticNet не должно быть. Мы должны называть их такими, какие они есть: L1-регуляризация, L2-регуляризация и смешанная-L1-L2-регуляризация. Конечно, полный рот, но значительно более однозначный.

Возможно, именно организация scikit-learn и стала причиной моего замешательства. При просмотре их списка моделей регрессии LASSO является отдельным классом, несмотря на то, что класс логистической регрессии также имеет параметр L1-регуляризации (то же самое верно для Ridge / L2). Это неожиданно для библиотеки Python, поскольку одна из основных догм Python:

There should be one - and preferably only one - obvious way to do it

Сравнение методов регуляризации - интуиция

Теперь, когда мы выяснили, что представляют собой эти методы регуляризации, давайте наконец ответим на вопрос: в чем разница между Ridge Regression, LASSO и ElasticNet?

Интуиция такая:

Рассмотрим графики функций abs и square.

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

Поначалу L2 кажется более серьезным, но оговорка в том, что при приближении к нулю вырисовывается иная картина:

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

Добавив к рисунку ElasticNet (по 0,5 каждого L1 и L2), мы увидим, что он функционирует как компромисс между ними. Можно представить изгиб желтой кривой в сторону красной или синей путем настройки гиперпараметра j.

Сравнение методов регуляризации - на практике

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

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

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

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

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

Заключение

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

Спасибо Карен Сакс за объяснение интуиции, лежащей в основе этих норм много лет назад.

Спасибо также разработчикам scikit-learn. Несмотря на то, что иногда API-интерфейсы не интуитивно понятны, предоставляемый вами код бесценен для таких ученых, как я.