Понятное объяснение линейной регрессии

Объяснение линейной регрессии

Математические основы модели: от аддитивных предположений до псевдообратных матриц

Фото от Saad Ahmad на Unsplash

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

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

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

Мир машинного обучения полон удивительных связей: экспоненциальное семейство, регуляризация и априорные предположения, метод k-ближайших соседей и метод опорных векторов, максимальное правдоподобие и теория информации — все связано! (Я люблю Dark). На этот раз мы рассмотрим, как получить еще одного участника экспоненциального семейства: модель линейной регрессии, и в процессе увидим, что потеря среднеквадратического отклонения теоретически обоснована. Как и любая модель регрессии, мы сможем использовать ее для прогнозирования числовых, непрерывных целей. Это простая, но мощная модель, которая является одной из основных инструментов статистического вывода и экспериментального проектирования. Однако нас будет интересовать только использование модели в качестве инструмента прогнозирования. Здесь нет никаких надоедливых выводов (и, Боже упаси, причинной связи).

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

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

У нас по-прежнему есть предсказанное значение (y), и что-то еще, что мы используем для его прогнозирования (x). Мы признаем, что некоторый шум неизбежен (будь то из-за неполного измерения или нашей собственной слепоты), и лучшее, что мы можем сделать, – предположить, что модель, стоящая за данными, которые мы наблюдаем, является стохастической. В результате этого мы можем видеть незначительные отклонения для одинаковых входных данных, поэтому вместо четких точечных оценок мы «застреваем» с вероятностным распределением результатов (y) при условии входных данных (x):

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

Предполагая, что все эти колокольные кривые на самом деле являются нормальными распределениями, и их средние значения (точки данных в y) независимы друг от друга, (совместная) вероятность наблюдать набор данных равна

Логарифмы и некоторая алгебра спасают нас:

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

Хорошо, это то же самое, что

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

Итак, что теперь? Эту задачу минимизации можно решить точно с помощью производных. Мы воспользуемся тем, что функция потерь является квадратичной, что означает, что она выпуклая, что означает наличие одного глобального минимума; это позволяет нам взять ее производную, приравнять ее к нулю и решить для тета. Сделав это, мы найдем значение параметров тета, при котором производная функции потерь равна нулю. А почему? Потому что именно в той точке, где производная равна нулю, функция потерь достигает своего минимума.

Чтобы все было немного проще, давайте выразим функцию потерь в векторной нотации:

Здесь X – это матрица NxM, представляющая наш набор данных из N примеров и M признаков, а y – вектор, содержащий ожидаемые ответы для каждого обучающего примера. Взяв производную и приравняв ее к нулю, мы получим

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

Если вам кажется, что последнее выражение очень похоже на решение линейной системы,

это потому что так оно и есть. Дополнительная информация появляется из-за того, что для того, чтобы наша проблема была эквивалентна обычной линейной системе, нам бы понадобилось одинаковое количество признаков и обучающих примеров, чтобы мы могли инвертировать X. Поскольку это редко бывает так, мы можем только надеяться на “наилучшее решение” — в некотором смысле — прибегая к псевдообратной матрице Мура-Пенроуза X, которая является обобщением обратной матрицы. Связанная статья в Википедии представляет собой интересное чтение.

Небольшое вторжение в регуляризацию

С этого момента я предполагаю, что вы, возможно, слышали термин “регуляризация” где-то и, возможно, знаете, что это значит. В любом случае, я расскажу, как я это понимаю: регуляризация – это все, что вы делаете с моделью, чтобы улучшить ее производительность на тестовой выборке за счет ухудшения производительности на обучающей выборке. Почему это важно? Потому что в конце концов, производительность на тестовой выборке (т.е. в реальной жизни) имеет значение – никому не будет важно, насколько низкая ошибка обучения вашей модели или какой у вас удивительный показатель AUC на обучающем наборе данных, если ваша модель не проявляет себя сравнительно хорошо в производственной среде. Мы также знаем, что есть баланс между сложностью модели и производительностью на тестовой выборке (статистическая теория обучения Вапника), и регуляризация может рассматриваться как попытка контролировать сложность модели в надежде достичь лучших обобщающих способностей (здесь обобщение – это другое имя для производительности на тестовой выборке).

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

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

Что это делает, вы можете спросить. Я скажу вам – мы только что ввели стимул, чтобы сохранить величину параметров как можно ближе к нулю. Другими словами, мы хотим минимизировать сложность. Теперь вместо одной цели (минимизация ошибок предсказания) у нас есть еще одна (минимизация сложности), и решение для общей проблемы должно учитывать оба аспекта. Мы можем влиять на то, как это баланс выглядит, с помощью этого нового сияющего коэффициента λ: чем он больше, тем больше важности мы придаем низкой сложности.

Это много разговоров. Давайте посмотрим, что дополнительный член делает с оптимальным значением theta. Новая потеря в векторизованной форме:

возьмем ее производную, приравняем к нулю и решим для theta:

Оказывается, что новое решение не слишком отличается от предыдущего. У нас есть дополнительная диагональная матрица, которая будет заботиться о любых проблемах ранга, которые могли бы помешать нам инвертировать матрицу XTX, добавляя некоторую “шумность” в смесь. Это освещает еще один способ введения ненужной сложности: коллинеарные функции, то есть функции, которые являются линейными преобразованиями (масштабированными и сдвинутыми версиями) других функций. Для линейной регрессии две коллинеарные функции являются одной и той же функцией, считаются только одним столбцом, и дополнительная функция не добавляет новой информации, чтобы помочь обучить нашу модель; делая матрицу XTX неполностью обратимой, то есть невозможной для инверсии. С помощью регуляризации в каждой строке XTX разный столбец подвержен влиянию лямбда, шумности, предотвращая любую возможную коллинеарность и делая ее полным рангом. Мы видим, что добавление случайного мусора в качестве предикторов на самом деле может испортить весь процесс обучения. К счастью, регуляризация здесь, чтобы спасти день (пожалуйста, не понимайте мое похвалу регуляризации как приглашение быть небрежным при выборе ваших предикторов – это не так).

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