10.2. Линейная регрессия, метод наименьших квадратов

Статистические тесты, о которых мы говорили до этого (T-тест, ANOVA и другие) в основном проверяли связь не больше, чем между двумя переменными одновременно.

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

Прежде чем мы начнём, два важных нюанса:

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

Суть линейной регрессии

Сначала посмотрим на точечный график распределения двух переменных.

10

Интуитивно мы видим, что между ними есть связь — все они визуально складываются в линию. И тут возникает хитрый вопрос: «А как это доказать?»

Решение простое:

  • провести несколько линий;
  • придумать какой-то критерий для сравнения;
  • сравнить их между собой и выбрать ту, которая будет максимально близка к этому критерию.

Собственно, эта линия и есть линейная регрессия — описание соответствия между случайными переменными. Далее мы разберём это решение подробнее и расскажем, как вычислить линейную регрессию. Спойлер — это тоже статистический тест.

Уравнение линейной регрессии

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

Итак, начнём с первого шага — провести несколько линий. В этом нам поможет уравнение линейной функции (привет, шестой класс).

Кратко напомним, что если подставить разные значения x, то мы вычислим разные значения y — и если разложить точки по оси координат и соединить, то получится прямая линия (при условии, что k и b не меняются).

В статистике при записи линейной регрессии используются другие буквы (это ещё одна конвенция).

Здесь у нас появились коэффициенты b_0 и b_1.

b_0 — точка пересечения с осью координат Y. Это значение, которое принимает y в том случае, если x равен нулю.

b_1 показывает, на какое значение изменится y, если x изменится на единицу.

С уравнением разобрались. Теперь выберем критерий для сравнения линий (шаг 2). Для этого можно использовать метод наименьших квадратов.

🔍 Метод наименьших квадратов — такой способ проведения регрессионной линии, чтобы сумма квадратов отклонений отдельных значений зависимой переменной от неё была минимальной.

Суть такая — для каждой точки на графике мы измеряем расстояние по оси y до каждой проведённой линии.

Давайте расшифруем: y — координата точки по оси y, а y_res – расстояние до линии по оси y.

Коротко остановимся тут и расскажем, что к чему. Здесь мы вычисляем разницу между фактическим (y) и предсказанным (y_pred) значением зависимой переменной для каждого значения независимой переменной. Если фактическое и предсказанное значение совпадают (y - y_pred == 0), то наша модель предсказала значение идеально. А чем больше разница, тем хуже предсказание модели для этого единственного наблюдения.

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

Как только мы сделали это, мы можем суммировать y_res ** 2 для всех точек. В результате мы вычислили дисперсию остатков регрессии. Полная формула:

RSS — расшифровывается как Residual Sum of Squares (сумма квадратов остатков регрессии) — так дисперсия остатков регрессии называется в англоязычной литературе.

🔍 Дисперсия остатков регрессии — сумма квадратов разниц между фактическими и предсказанными линейной регрессией значениями зависимой переменной.

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

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

Выбор наилучшей модели

Важное отличие линейной регрессии от других тестов в том, что она может учитывать одновременное влияние нескольких независимых переменных на одну зависимую. Вернёмся к вопросу из введения: какие факторы связаны с количеством просмотров у песен на YouTube?

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

  • громкие песни более популярны (вот тут можно почитать о войне громкостей);
  • танцевальные песни более популярны;
  • если в песне есть слова, то она более популярна;
  • позитивные песни более популярны.

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

Дело вот в чём: провести линию в пространстве можно вне зависимости от того, сколько у этого пространства размерностей. Выше мы проводили линию в двухмерном пространстве (одно измерение для зависимой, другое — для независимой переменной). Но мы точно так же могли бы провести линию в трёхмерном пространстве (одно измерение для зависимой переменной и два для независимых). И так далее. Мы не сможем это визуализировать и представить, но это тот случай, когда математическая абстракция о том, что мы можем представить пространство с произвольным числом измерений, оказывается весьма полезна практически.

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

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

Если мы запишем уравнения, то выглядеть это будет так:

Добавлять новые переменные стоит от «сильных» по вашему мнению к «слабым». Например, в нашем примере нам кажется, что порядок должен быть следующим:

  • есть ли слова;
  • позитивность;
  • «танцевальность»;
  • громкость.

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

  • если p-valueменьше 0.05, то мы можем оставить коэффициент, если нет — то его нужно исключить;
  • если коэффициент значимый, но изменение, которое он оказывает субъективно маленькое, то его можно исключить. Пример — допустим, наличие слов в песне увеличивает количество просмотров на 100. Но среднее количество просмотров у видео 100 тысяч — получается, он незначим.
  • если коэффициент детерминации (о нём ниже) изменился незначительно, то коэффициент можно исключить.

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

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

Чтобы вычислить коэффициент детерминации, мы возьмём среднее значение зависимой переменной (середина оси y) и проведём горизонтальную линию. Для этой линии нам тоже нужно высчитать RSS (в этом случае мы назовём его TSS). Затем сравнить его с RSS каждой линии и решить пропорцию:

RSS_L1/TSS = x%/100%
RSS_L2/TSS = x%/100%
RSS_L3/TSS = x%/100%
RSS_L4/TSS = x%/100%

То есть, мы найдём x для каждого уравнения и сравним их между собой. Чем он выше, тем лучше наша модель объясняет изменчивость зависимой переменной.

🔍 Коэффициент детерминации — доля дисперсии зависимой переменной, объясняемая рассматриваемой моделью.

И последнее, что тут стоит сказать — на практике коэффициент детерминации редко превышает 8%. А ещё у него есть второе имя — «Эр-квадрат».

Допущения линейной регрессии

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

Название допущения

Краткое описание

Линейная зависимость

Между независимой и зависимой переменной есть линейная связь

Тип переменных

Должны быть непрерывными или категориальными

Наличие вариации

Без вариации не может быть модели

Отсутствие мультиколлинеарности

Независимые переменны не должны быть связаны друг с другом

Отсутствие внешних переменных

Не должно быть переменных, которые коррелируют одновременно с двумя независимыми переменными в модели

Гомоскедастичность

Дисперсия остатков должна быть постоянной

Независимость наблюдений

Наблюдения должны быть независимы друг от друга

Линейная зависимость

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

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

10

Но она может быть, и чтобы убедиться в этом, нужно построить линейную регрессию.

Тип переменных

Переменные должны быть либо непрерывными, либо категориальными.

Наличие вариации

Без вариации мы не можем показать связь между изменениями двух переменных. Если одна или две из них не меняются, то модель не будет содержательно полезной, так как просто не сможет зафиксировать изменения.

Отсутствие мультиколлинеарности

Переменные, которые добавлены в модель, не должны быть мультиколлинеарными. То есть независимые переменные не должны быть взаимосвязаны между собой. Например, «танцевальные» песни обычно и «энергичные».

🔍 Мультиколлинеарность — наличие линейной зависимости между независимыми переменными.

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

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

Отсутствие внешних переменных

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

Гомоскедастичность

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

🔍 Гомоскедастичность — непостоянная дисперсия случайной ошибки для разных наблюдений.

Есть две причины, почему это важно:

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

Независимость наблюдений

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

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

Отмечайте параграфы как прочитанные чтобы видеть свой прогресс обучения

Вступайте в сообщество хендбука

Здесь можно найти единомышленников, экспертов и просто интересных собеседников. А ещё — получить помощь или поделиться знаниями.
Вступить
Сообщить об ошибке
Предыдущий параграф10.1. Обогащение данных, этика обогащения данных
Следующий параграф10.3. Линейная регрессия в Python