Все ML-инженеры знают о линейной регрессии. Это та самая база, с которой начинает изучение алгоритмов любой новичок. Но вот парадокс: даже многие «прожженные» инженеры не всегда до конца понимают ее истинную работу под капотом.
А именно — какая у «линейки» статистическая связь с Методом Максимального Правдоподобия (MLE) и почему она так сильно «любит» MSE и нормальное распределение. В этой статье мы как раз в этом и разберемся.
Освежаем в памяти Линейную регрессию
Линейная регрессия это как “Hello world” в мире классического машинного обучения.
Ее задача — предсказать целевую переменную (таргет) y как линейную комбинацию признаков (фичей) X.
Что бы все это работало модель делает два довольно сильных (и почти всегда невыполнимых на практике) предположения:
Линейность: Каждый признак
влияет на таргет
линейно
Независимость: Признаки влияют на таргет независимо друг от друга.
Плюсы:
Простота и интерпретируемость: Модель легко объяснить. «Увеличиваем фичу
на 1, таргет
меняется на
».
Скорость и минимум гиперпараметров: В ее классическом виде она не требует подбора гиперпараметров и имеет аналитическое решение. А с градиентным спуском обычно 1 гиперпараметр.
Минусы:
Наивность: На практике предположения о линейности и независимости почти никогда не выполняются. Задачи нелинейны (цена квартиры зависит не только от района И метро, но и от их комбинации), а признаки часто зависят друг от друга.
Проблема нелинейности: Эту проблему можно "поправить", если вручную добавлять нелинейные признаки (
,
,
), но это уже ручная работа.
Причина по которой используют не аналитическое решение, а только с градиентными методами, уже другая история
Метод максимального правдоподобия (Maximum Likelihood Estimation)
Важное уточнение, в любой ситуации с данными и прогнозами, всегда нужно держать в голове что есть какой - то шум . Обычно туда входит все то, что мы не учли при прогнозе.
В случае линейки это выглядит вот так .
А теперь — главное предположение, на котором держится вся классическая регрессия
Мы предполагаем, что этот шум распределен нормально.
То есть, мы верим, что ошибки независимы, в среднем равны нулю
А раз линейное преобразование — это просто сдвиг и масштабирование, а шум — «нормальный», то и наш таргет
тоже распределен нормально (вокруг предсказанной линии)
Откуда растут ноги?
У нас есть данные и крутое предположение о нормальности шума.
Теперь нам нужно каким - то образом подобрать лучшие параметры и
.
Тут-то нам и нужен "Метод максимального правдоподобия"
Этот метод позволяет найти такие параметры , при которых вероятность(правдоподобие) наблюдать именно наши данные
была бы максимальной.
Записывается это как функция правдоподобия
Так как мы считаем, что все наши наблюдения независимы друг от друга, мы можем расписать это «общее» правдоподобие как произведение правдоподобий для каждого отдельного объекта:
Трюк с логарифмом
Тут возникает проблемка. Искать производную произведения очень тяжело и дорого. По этому мы делаем хитрый трюк, нам не нужно само значение, нам нужна максимизация. А argmax функции совпадает с argmax-ом логарифма этой функции, потому что логарифм - монотонное преобразование.
И по свойству логарифмов мы можем заменить произведение суммой логарифмов, а производную от суммы искать сильно легче)
Это называется Логарифм Правдоподобия (Log-Likelihood):
Так причем тут MSE
Чтобы это понять нам придется расписать по шагам все преобразования ММК.
Давайте распишем, чему равно . Выше мы предположили, что
распределен нормально. Вероятность
— это просто формула плотности нормального распределения
Теперь подставляем это в нашу формулу общего правдоподобия (произведение):
Не забываем про трюк с логарифмом, применяем логарифм на всю функцию, и в итоге получим:
Финал: Максимизация правдоподобия
Мы хотим найти и
, которые максимизируют эту штуку
.
Чтобы найти точку максимума (или минимума) функции, нужно взять ее производную и приравнять к нулю
В нашем случае мы ищем argmax по , поэтому мы берем частные производные по
и
(или просто по вектору
), то есть те члены где нет
производная будет равна нулю.
Что мы видим глядя на нашу фунцию?
Первый член
: Это константа. На поиск максимума не влияет. Выкидываем.
Второй член
: Это тоже константа (мы ищем
, а не
). Выкидываем.
Третий член
: А вот он зависит от наших
!
Смотрите: — это просто положительная константа. Значит, чтобы максимизировать все выражение (которое стоит со знаком «минус»), нам нужно минимизировать то, что осталось:
У нас получилась SSE - сумма квадратов ошибок.
А минимизация SSE это тоже самое что и минимизация MSE так как
Вот и вся связь. Минимизировать MSE — это математически то же самое, что максимизировать правдоподобие (MLE), при условии, что мы изначально предположили, что ошибки в наших данных распределены по Гауссу (нормально).
Заключение
Буду рад выслушать ваши замечания, предложения и конструктивную критику. Также приглашаю подписаться на мой телеграм-канал, где я делюсь своими знаниями и обзорами в области машинного обучения.