Статистика под капотом LinearRegression: почему мы минимизируем именно квадрат ошибки?. линейная регрессия.. линейная регрессия. Максимальное правдоподобие.. линейная регрессия. Максимальное правдоподобие. Машинное обучение.. линейная регрессия. Максимальное правдоподобие. Машинное обучение. статистика.

Введение

Все ML-инженеры знают о линейной регрессии. Это та самая база, с которой начинает изучение алгоритмов любой новичок. Но вот парадокс: даже многие «прожженные» инженеры не всегда до конца понимают ее истинную работу под капотом.

А именно — какая у «линейки» статистическая связь с Методом Максимального Правдоподобия (MLE) и почему она так сильно «любит» MSE и нормальное распределение. В этой статье мы как раз в этом и разберемся.

Освежаем в памяти Линейную регрессию

Линейная регрессия это как “Hello world” в мире классического машинного обучения.
Ее задача — предсказать целевую переменную (таргет) y как линейную комбинацию признаков (фичей) X.

hat{y}=w_0 + w_1x_1 + w_2x_2 + ... + w_nx_n

Что бы все это работало модель делает два довольно сильных (и почти всегда невыполнимых на практике) предположения:

  • Линейность: Каждый признак x_i влияет на таргет y линейно

  • Независимость: Признаки влияют на таргет независимо друг от друга.

Плюсы:

  • Простота и интерпретируемость: Модель легко объяснить. «Увеличиваем фичу x_1на 1, таргет y меняется на w_1».

  • Скорость и минимум гиперпараметров: В ее классическом виде она не требует подбора гиперпараметров и имеет аналитическое решение. А с градиентным спуском обычно 1 гиперпараметр.

Минусы:

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

  • Проблема нелинейности: Эту проблему можно “поправить”, если вручную добавлять нелинейные признаки (x^2, x_1 cdot x_2, log(x)), но это уже ручная работа.

Причина по которой используют не аналитическое решение, а только с градиентными методами, уже другая история

Метод максимального правдоподобия (Maximum Likelihood Estimation)

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

В случае линейки это выглядит вот так y_i=mathbf{w}^T mathbf{x}_i + epsilon_i.

А теперь — главное предположение, на котором держится вся классическая регрессия
Мы предполагаем, что этот шум epsilon_i распределен нормально.

То есть, мы верим, что ошибки epsilon_i независимы, в среднем равны нулю

А раз линейное преобразование (y_i=(w_0 + w_1x_i) + epsilon_i) — это просто сдвиг и масштабирование, а шум — «нормальный», то и наш таргет y_i тоже распределен нормально (вокруг предсказанной линии)

Откуда растут ноги?

У нас есть данные (X, Y) и крутое предположение о нормальности шума.
Теперь нам нужно каким – то образом подобрать лучшие параметры w_0 и w_1.

Тут-то нам и нужен “Метод максимального правдоподобия

Этот метод позволяет найти такие параметры w, при которых вероятность(правдоподобие) наблюдать именно наши данные (X, Y) была бы максимальной.

Записывается это как функция правдоподобия L(mathbf{w} | X, Y)

L(mathbf{w} | X, Y)=P(X, Y | mathbf{w})

Так как мы считаем, что все наши наблюдения (y_i) независимы друг от друга, мы можем расписать это «общее» правдоподобие как произведение правдоподобий для каждого отдельного объекта:

L(mathbf{w} | X, Y)=prod_{i} P(x_i, y_i | mathbf{w})

Трюк с логарифмом

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

И по свойству логарифмов мы можем заменить произведение суммой логарифмов, а производную от суммы искать сильно легче)

Это называется Логарифм Правдоподобия (Log-Likelihood):

log L(mathbf{w} | X, Y)=sum_{i} log P(x_i, y_i | mathbf{w}) rightarrow max

Так причем тут MSE

Чтобы это понять нам придется расписать по шагам все преобразования ММК.

Давайте распишем, чему равно P(x_i, y_i | mathbf{w}). Выше мы предположили, что y_i распределен нормально. Вероятность P(y_i | ...)— это просто формула плотности нормального распределения

P(y_i | x_i, mathbf{w})=frac{1}{sqrt{2pisigma^2}} expleft(-frac{(y_i - (w_0 + w_1x_i))^2}{2sigma^2}right)

Теперь подставляем это в нашу формулу общего правдоподобия (произведение):

L(w_0, w_1, sigma^2; Y)=prod_{i=1}^{n} frac{1}{sqrt{2pisigma^2}} expleft(-frac{(y_i - (w_0 + w_1x_i))^2}{2sigma^2}right)

Не забываем про трюк с логарифмом, применяем логарифм на всю функцию, и в итоге получим:

ell(mathbf{w})=-frac{n}{2}log(2pi) - frac{n}{2}log(sigma^2) - frac{1}{2sigma^2}sum_{i=1}^{n}(y_i - (w_0 + w_1x_i))^2

Финал: Максимизация правдоподобия

Мы хотим найти w_0 и w_1, которые максимизируют эту штуку ell(mathbf{w}).
Чтобы найти точку максимума (или минимума) функции, нужно взять ее производную и приравнять к нулю
В нашем случае мы ищем argmax по mathbf{w}, поэтому мы берем частные производные по w_0 и w_1 (или просто по вектору mathbf{w}), то есть те члены где нет w производная будет равна нулю.

Что мы видим глядя на нашу фунцию?

  • Первый член (-frac{n}{2}log(2pi)): Это константа. На поиск максимума не влияет. Выкидываем.

  • Второй член (-frac{n}{2}log(sigma^2)): Это тоже константа (мы ищем mathbf{w}, а не sigma). Выкидываем.

  • Третий член (-frac{1}{2sigma^2}sum_{i=1}^{n}(y_i - (w_0 + w_1x_i))^2): А вот он зависит от наших mathbf{w}!

Смотрите: frac{1}{2sigma^2} — это просто положительная константа. Значит, чтобы максимизировать все выражение (которое стоит со знаком «минус»), нам нужно минимизировать то, что осталось:

sum_{i=1}^{n}(y_i - (w_0 + w_1x_i))^2

У нас получилась SSE – сумма квадратов ошибок.
А минимизация SSE это тоже самое что и минимизация MSE так как MSE=frac{1}{n} SSE

Вот и вся связь. Минимизировать MSE — это математически то же самое, что максимизировать правдоподобие (MLE), при условии, что мы изначально предположили, что ошибки в наших данных распределены по Гауссу (нормально).

Заключение

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

Автор: Nikarashi

Источник

Rambler's Top100