Поясняющая статья на эти темы

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

При подходе к науке о данных и машинному обучению есть темы статистики, которые нужно понять; пара из этих тем - корреляция и регрессия. В этой статье я объясню разницу между этими двумя темами на примерах, и мы даже затронем вечнозеленое: «корреляция — это не причинно-следственная связь!».

1. Корреляция

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

Это просто так. Но, знаете ли, определения приходится применять на практике (в том числе и для лучшего понимания изучаемых нами тем).

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

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

Давайте сделаем пример:

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

Вы пробуете горы разной высоты, измеряете температуру и строите график; вы обнаружите, что с увеличением высоты горы температура снижается, и вы можете увидеть линейный тренд. Что это значит? Это означает, что температура связана с высотой; это не означает, что высота горы вызвала снижение температуры (какую температуру вы бы измерили, если бы поднялись на ту же высоту и на ту же широту на воздушном шаре? :) ) .

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

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

Коэффициент корреляции использует статистическую концепцию ковариации, которая представляет собой численный способ определить,как две переменные изменяются вместе. Оставим математику и поговорим только о концепциях. Коэффициент корреляции — это числовое значение, которое варьируется от -1 до +1. Если коэффициент корреляции равен -1, две переменные будут иметь идеальную отрицательную линейную корреляцию; если коэффициент корреляции равен +1, две переменные будут иметь идеальную положительную линейную корреляцию; если коэффициент корреляции равен 0, это означает, что между двумя переменными нет линейной корреляции.

Я сказал, что мы оставим математику саму по себе, но я не сказал, что мы оставим код, так как мы занимаемся наукой о данных. Итак, как же рассчитать коэффициент корреляции в Python? Ну, мы вообще рассчитываем корреляционную матрицу. Предположим, что у нас есть две переменные, хранящиеся во фрейме данных с именами «df», «Переменная 1» и «Переменная 2», мы можем построить корреляционную матрицу, например, в Seaborn:

import seaborn as sns
#heat map for correlation coefficient
sns.heatmap(df.corr(), annot=True, fmt="0.2")

И мы получаем:

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

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

В этом случае, если мы вычислим коэффициент корреляции, мы получим 0:

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

2. Регрессия

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

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

Конечно, кривая, которая лучше всего соответствует данным, может быть линией; но она может быть какой угодно кривой, в зависимости от отношения!

Итак, что мы обычно делаем, так это вычисляем коэффициент корреляции, и если он имеет значения около 1, мы можем ожидать линию при изучении регрессии; в противном случае… мы должны попробовать полиномиальную регрессию (или что-то еще, например, экспоненциальную или что-то в этом роде)!

На самом деле, если мы вычислим линию регрессии между данными, которые мы видели ранее («Переменная_1 и Переменная_2» с коэффициентом корреляции 0,96), мы получим:

import seaborn as sns
import matplotlib.pyplot as plt
#plotting the time series analysis with a red regression line
sns.regplot(data=df, x="Variable_1", y="Variable_2", line_kws={"color": "red"})
plt.xlabel('Variable 1', size=14)
plt.ylabel('Variable 2', size=14)
plt.title('(LINEAR) REGRESSION BETWEEN TWO VARIABLES')

Как и ожидалось, поскольку матрица корреляции равна 0,96, мы получаем линию с положительным наклоном как кривую, которая лучше всего соответствует данным.

Наконец, я хочу сказать, что существует множество способов найти кривую, которая наилучшим образом соответствует данным; одним из наиболее часто используемых является метод «Обычных наименьших квадратов», но, как я уже сказал, я не вдаюсь в математику: просто поверьте мне, потому что цель этой статьи — распространить знания о концепциях.

Спасибо за прочтение. Я надеюсь, вы поняли концепции, если вы не знали (если нет, дайте мне знать с комментарием!); и если бы вы знали концепции… надеюсь, я не допустил ошибок!

Давайте объединимся!

СРЕДНЯЯ

LINKEDIN (отправьте мне запрос на подключение)

При желании вы можете подписаться на мою рассылку, чтобы всегда оставаться в курсе!

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