Во многих реальных проектах по науке о данных мы обнаруживаем наличие сложных и неизвестных взаимосвязей между переменными данных. Это становится более критической ситуацией из-за меньшего знания предметной области. Знание этих взаимосвязей помогает лучше понимать данные и соответствовать лучше смоделированным алгоритмам машинного обучения.

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

Содержание

  • Что такое корреляция?
  • Ковариация
  • Коэффициент корреляции Пирсона
  • Коэффициент корреляции Спирмена

Начнем с понимания корреляции.

Что такое корреляция?

Обычно переменные могут быть связаны по многим причинам, например, из-за того, что одна переменная генерирует значение второй переменной, ассоциации переменных. Две переменные могут зависеть от любой третьей переменной и т. д.

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

Корреляция может быть трех видов:

  • Положительная корреляция: когда переменные изменяются в одном направлении из-за их статистической взаимосвязи.
  • Отрицательная корреляция. Когда переменные изменяются в противоположном направлении из-за их статистической взаимосвязи.
  • Нейтральная или нулевая корреляция: когда переменные не зависят друг от друга.

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

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

  • Тип отношений
  • Распределение данных и переменных.
  • Различные оценки корреляции

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

Набор данных

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

импортировать numpy как np

var_1 = 20 * np.random.randn(1000) + 100

var_2 = var_1 + (10 * np.random.randn(1000) + 50)

В приведенных выше кодах мы сгенерировали две переменные. Где в первой переменной генерируются случайные числа с использованием стандартного отклонения почти 20 и среднего значения примерно 100. Во второй переменной мы добавили шум и переменную. Давайте построим данные, чтобы рассказать нам, как эти две переменные коррелируют.

импортировать matplotlib.pyplot как plt

plt.scatter(var_1, var_2)

plt.title(print('variable_1: mean=%.3f stdv=%.3f' % (np.mean(var_1), np.std(var_1))),

print('variable_2: mean=%.3f stdv=%.3f' % (np.mean(var_2), np.std(var_2))))

Выход:

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

Ковариация

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

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

ковариация (X, Y) = (сумма (x - среднее (X)) * (y - среднее (Y)) ) * 1/(n-1)

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

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

Используя NumPy, мы можем вычислить ковариацию в python.

импортировать numpy как np

ковариация = np.cov(var_1, var_2)

печать(ковариация)

Выход:

Примечание. Используя приведенную ниже матрицу, мы можем рассчитать точную корреляцию.

Cov( X, X ) Cov( X, Y )

Cov( Y, X ) Cov( Y, Y )

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

  • Точки данных следуют распределению Гаусса.
  • Переменные линейно коррелированы.

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

Корреляция Пирсона

Этот метод назван в честь Карла Пирсона и сообщает нам сводные отчеты о силе линейной зависимости между двумя переменными.

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

Коэффициент корреляции Пирсона = ковариация (X, Y) / (стандартное значение (X) * стандартное значение (Y))

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

Здесь отрицательные значения представляют отрицательную корреляцию, а положительные значения представляют положительную корреляцию. Часто значения этого коэффициента ниже -0,5 и выше +0,5 интерпретируются высокой или заметной корреляцией.

Используя NumPy, мы можем рассчитать корреляцию Пирсона.

импортировать numpy как np

PCC = np.corrcoef(var_1, var_2)

печать(PCC)

Выход:

Здесь мы видим, что, как обсуждалось выше, эти две переменные сильно коррелированы.

Корреляция Спирмена

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

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

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

Коэффициент корреляции Спирмена = ковариация (ранг (X), ранг (Y)) / (станд. (ранг (X)) * станд. (ранг (Y)))

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

Мы можем использовать панд для расчета коэффициента корреляции Спирмена.

#объединение массивов в pandas DataFrame

импортировать панд как pd

data = pd.DataFrame({‘var_1’: var_1, ‘var_2’: var_2})

#расчет коэффициента корреляции Спирмена

SCC = data.corr(method = ‘spearman’)

печать(SCC)

Выход:

Здесь мы видим, что мы получаем значения этого коэффициента 1 или ниже 1. Значение этого коэффициента также варьируется от 1 до -1 и интерпретирует отношение, подобное коэффициенту корреляции Пирсона.

Заключительные слова

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