Наука о данных с нуля

Основы: логистическая регрессия и регуляризация

Расширения линейной модели

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

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

Логистическая регрессия по существу адаптирует формулу линейной регрессии, чтобы позволить ей действовать как классификатор. Почему обычная линейная регрессия OLS не может действовать как классификатор? Рассмотрим пример. Ниже приведен простой пример классификации по одному параметру. Переменная x является непрерывной, но переменная y категориальна и равна нулю или единице:

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

С одной стороны, эта линия в некотором смысле успешно фиксирует положительную связь между двумя переменными, но вывод этой строки не имеет большого смысла. Если я проконсультируюсь с этой линией при значении x, скажем, 0,25, мы обнаружим, что линия предсказывает значение 0,71. Поскольку мы пытаемся предсказать переменную, которая принимает только значения 0 или 1, прогноз 0,71 немного странный; наша двоичная переменная на самом деле не может принимать это значение, так что вообще может означать это предсказание?

Один из способов интерпретировать дробные значения в такой ситуации - это немного переосмыслить наш вопрос. Вместо того, чтобы просить нашу модель предсказать значение нашей независимой переменной, мы можем попросить ее дать нам вероятность того, что наша переменная будет иметь значение, равное единице. По мере того, как результаты модели растут, мы можем сказать, что шансы на то, что переменная равна единице, возрастают. Дробные значения в этой структуре имеют немного больше смысла. Что будет означать значение вроде 0,71? Что ж, результат более вероятен, чем если бы модель дала нам меньшее число и менее вероятно, чем если бы она дала нам более высокое!

Однако предстоит еще немного поработать, чтобы превратить нашу простую линейную регрессию в такую ​​модель. Во-первых, интуитивно кажется, что вероятность того, что наша модель должна выводить, нелинейна. В нынешнем виде наша линейная регрессия иногда дает нам значения выше единицы или отрицательные значения, что, опять же, не имеет смысла. Наше решение в этом случае - передать нашу линейную модель через сигмовидную функцию. «Сигмоид» здесь просто означает «S-образный», и есть несколько функций, которые мы могли бы использовать, но наиболее распространенной является логистическая функция. Логистическая функция имеет следующий общий вид:

Это может показаться немного устрашающим, но стоит немного подумать. Показатель степени e в нижней части дроби выглядит как наше предыдущее уравнение линейной регрессии, за исключением того, что все это было сделано отрицательным. По мере того, как выход этого «уравнения регрессии» становится очень большим, показатель степени становится соответственно отрицательным, а значение e, возведенное в эту степень, становится равным нулю; поэтому значение всего выражения приближается к 1 / (1 + 0), что равно единице. Если результат этого уравнения регрессии очень отрицательный, то e увеличивается до положительного значения, и нижняя часть дроби становится очень большой; значение всего выражения приближается к 0.

В нашем предыдущем примере подобранная логистическая кривая выглядит так:

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

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

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

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

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

Регуляризация (гребень и лассо)

Регуляризации Риджа и Лассо также известны как методы «сжатия», поскольку они уменьшают или уменьшают коэффициенты в результирующей регрессии. Это уменьшает дисперсию в модели: при изменении входных переменных прогноз модели меняется меньше, чем это было бы без регуляризации. Почему вы хотите уменьшить дисперсию модели? Чтобы избежать переобучения.

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

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

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

Сколько функций - это слишком много? И какие функции наиболее важны для включения? Регуляризация может помочь. Регуляризация Риджа и Лассо работают за счет добавления нового члена к функции стоимости, используемой для вывода формулы регрессии. Напомним, что регрессия OLS находит коэффициенты и перехват, минимизируя квадратичные ошибки прогнозирования для ваших обучающих данных, представленные формулой, подобной этой:

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

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

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

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

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