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

машинное обучение искусственный интеллект Python
Статистическая терминология: коэффициент корреляции

Общественный номер: You Er Hut
Автор: Питер
Редактор: Питер

Всем привет, меня зовут Питер~

Последние две недели я читал книгу «Введение и практика разработки признаков», которая меня очень вдохновляет.

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

В этой книге упоминается коэффициент корреляции, я прочитал много информации и составил эту статью, надеясь всем помочь.

Что такое коэффициент корреляции

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

Коэффициент корреляции принимает значения от -1 до 1:

  • -1 означает, что две переменные имеют отрицательную корреляцию
  • 0 означает отсутствие корреляции между двумя переменными
  • 1 означает, что две переменные положительно коррелированы

Наконец, коэффициент корреляциистатистикаКонцепция в статистике, с чего начать? Питер рекомендует вам обратиться к этой картинке ниже:

3 общих коэффициента корреляции

** Pearsonкоэффициент корреляции,Spearmanкоэффициент корреляции,KendallКоэффициент корреляции также называют тремя основными коэффициентами корреляции в статистике.

При анализе характеристик чаще всего используется метод Pandas.DataFrame.corr:

DataFrame.corr(self, method=’pearson’, min_periods=1)

В основном включены следующие методы:

  • pearson: коэффициент корреляции Пирсона
  • Спирмен: коэффициент ранговой корреляции Спирмена
  • kendall: коэффициент ранговой корреляции Кендалла

Коэффициент корреляции лиц

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

Общий коэффициент корреляции человека равенρ\rhoзначит формула расчета

ρx,y=cov(x,y)оxоy=E[(xμx,yμy)]оxоy\rho_{x, y}=\frac{\operatorname{cov}(\boldsymbol{x}, \boldsymbol{y})}{\sigma_{x} \sigma_{y}}=\frac{E\left[\left(\boldsymbol{x}-\mu_{x}, \boldsymbol{y}-\mu_{y}\right)\right]}{\sigma_{x} \sigma_{y}}

или как:

ρX,Y=E(XY)E(X)E(Y)E(X2)(E(X))2E(Y2)(E(Y))2\rho_{X, Y}=\frac{E(X Y)-E(X) E(Y)}{\sqrt{E\left(X^{2}\right)-(E(X))^{2}} \sqrt{E\left(Y^{2}\right)-(E(Y))^{2}}}

Коэффициент корреляции человека выборки представлен буквой r, которая используется для измерения линейной зависимости между двумя переменными Формула расчета:

r(X,Y)=Cov(X,Y)Var[X]Var[Y]r(X, Y)=\frac{\operatorname{Cov}(X, Y)}{\sqrt{\operatorname{Var}[X] \operatorname{Var}[Y]}}

Это означает: с двумя переменнымиКовариацияразделить на две переменныесреднеквадратичное отклонениепродукт

  • Cov(X,Y): представляет ковариацию
  • Var[X]: представляет дисперсию, которая становится стандартным отклонением после квадратного корня

⚠️Вывод: Коэффициент корреляции Пирсона между двумя переменными определяется как разница между двумя переменными.Ковариацияисреднеквадратичное отклонениечастное

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

Коэффициент корреляции Спирмена определяется выражениемЧарльз Эдвард СпирманназванныйКоэффициент ранговой корреляции Спирмена. обычно греческими буквамиρ\rhoозначает, что коэффициент корреляции Спирмена также определяется как коэффициент корреляции человека между ранговыми переменными.

Формула расчета:

ρ=i(xixˉ)(yiyˉ)i(xixˉ)2i(yiyˉ)2\rho=\frac{\sum_{i}\left(x_{i}-\bar{x}\right)\left(y_{i}-\bar{y}\right)}{\sqrt{\sum_{i}\left(x_{i}-\bar{x}\right)^{2} \sum_{i}\left(y_{i}-\bar{y}\right)^{2}}}

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

ρ=16di2n(n21)\rho=1-\frac{6 \sum d_{i}^{2}}{n\left(n^{2}-1\right)}

где n — количество точек данных,did_iпредставляет точку данных(xi,yi)(x_i,y_i)классифицировать(rxi,ryi)(r_{xi},r_{yi})разница:di=rxiryid_i=r_{xi}-r_{yi}

С коэффициентом корреляции Человека, почему коэффициент корреляции Спирмена? Коэффициент корреляции лиц имеет определенные ограничения**: первое — переменная должна быть непрерывной, второе — подчиняться нормальному распределению**

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

Быстро понять ранг и сумму рангов:

Ниже приведены два набора данных A и B. Как найти ранг и сумму рангов?

1. Расположите два набора данных ABL по порядку:

2. Отметьте их порядок, то есть ранг. Если два значения одинаковы, возьмите среднее значение порядка

3. Сумма рангов – это сумма рангов:

А: 3,5 + 5 + 8 + 9 + 10 = 35,5

Б: 1 + 2 + 3,5 + 6 + 7 = 19,5

Особый случай: когда две переменные имеют повторяющиеся данные, вычисление коэффициента корреляции Спирмена между переменными заключается в вычислении коэффициента корреляции человека между рангами переменных данных:

ρs=ρrx,ry=cov(rx,ry)оrxоry\rho_{s}=\rho_{r_{x}, r_{y}}=\frac{\operatorname{cov}\left(r_{x}, r_{y}\right)}{\sigma_{r_{x}} \sigma_{r_{y}}}

в:rxr_xПредставляет преобразованный ранг переменной x. Из вышеприведенного определения видно, чтоSpearmanКоэффициент корреляции на самом деле представляет собой ранговое преобразование данных.PearsonКоэффициент корреляции

Коэффициент ранговой корреляции Кендалла

Коэффициент ранговой корреляции Кендалла — это коэффициент ранговой корреляции, используемый для измерения двухпорядковая переменнаямеждуМонотонные отношенияСильный и слабый коэффициент корреляции, диапазон его значений находится в пределах от -1 до 1. Чем больше абсолютное значение, тем сильнее монотонная корреляция, а значение 0 означает полное отсутствие корреляции. Коэффициенты Кендалла обычно пишутся греческими буквами.т\tau(тау) сказал.

Категориальные переменные можно понимать как категориальные переменные, которые могут быть неупорядоченными, например, по полу (мужской и женский), или упорядоченными, например, по оценкам: отлично, хорошо, средне и плохо.

Обычно рассчитывают коэффициент корреляции порядковых категориальных переменных..

Как решить коэффициент корреляции человека

Здесь мы представляем различные методы решения коэффициентов корреляции Person на основе Python или сторонних библиотек. Коэффициент корреляции лиц по-прежнему используется чаще.

библиотека импорта

import pandas as pd
import numpy as np
import math
import random

Данные моделирования

Имитация простых данных с двумя столбцами (переменными)

Способ 1: на основе панд

библиотека pandas имеет функциюcorr(), мы можем напрямую решить коэффициент корреляции между переменными числового типа в переменных.

В результатах ниже мы видим:

  • Коэффициенты главной диагонали все равны 1, а коэффициент корреляции между собой и собой должен быть равен 1
  • Коэффициенты корреляции поддиагоналей определенно одинаковы

Функция corr имеет метод параметров, указывающий разные значения, мы можем решать разные коэффициенты корреляции, по умолчанию используется коэффициент Пирсона, а значения параметров указаны ниже:

Способ 2: на основе пользовательской функции Python

1. Сначала найдите среднее значение двух переменных

2. Найдите ожидаемое значение xy

3, ковариационная разница XY

Найдите коэффициент ковариации xy на основе приведенных выше результатов:

4. Найдите стандартное отклонение xy

5. Решите коэффициент человека

Ковариация, деленная на стандартное отклонение, представляет собой коэффициент человека.

Способ 3: на основе Numpy

В библиотеке Numpy есть функцияcorrcoefМожно напрямую решить коэффициент корреляции между двумя переменными, возвращаемый массив массива. Все значения на главной диагонали равны 1 (корреляция между собой и самой собой равна 1), а поддиагонали — это коэффициенты корреляции между двумя разными переменными:

Способ 4: на основе Scipy

Scipy также является мощной библиотекой для обработки данных для Python, в ней есть функция pearsonr, которая также может вычислять коэффициент корреляции Пирсона.

Функция возвращает два значения: первое представляет собой коэффициент корреляции Person, а второе — p-значение.

Если значение p меньше 0,05, что меньше уровня значимости, две переменные считаются связанными.

Дело боевое

1. Давайте сначала смоделируем часть данных: ABCDE — это 5 переменных, кошка — последняя категория (выберите значение от 0 до 1).

import random

# 模拟一份数据:5个类+1个特征
df1 = pd.DataFrame({"A":np.random.randint(1,5,20),
                    "B":np.random.randint(4,10,20),
                    "C":np.random.randint(3,6,20),
                    "D":np.random.randint(22,50,20),
                    "E":np.random.randint(15,60,20),
                    "cat":np.random.randint(0,2,20),
                   },index=list(range(20)))
df2 = np.array(df1)

2. Рассчитайте среднее значение функций и классов

 # 计算数据中特征和类的平均值
  
def calcMean(x,y):
    """
    作用:计算特征和类的平均值
    参数:
        x:类的数据
        y:特征的数据
    返回值:特征和类的平均值
    """
    x_sum = sum(x)
    y_sum = sum(y)
    n = len(x)
    x_mean = float(x_sum) / n
    y_mean = float(y_sum) / n  
    return x_mean,y_mean  # 返回均值

3. Рассчитайте коэффициент Пирсона

def calcPearson(x,y):
    x_mean, y_mean = calcMean(x,y)  # 调用上面的函数返回均值
    n = len(x)
    sumTop = 0.0
    sumBottom = 0.0
    x_pow = 0.0
    y_pow = 0.0
    
    # 计算协方差
    for i in range(n):
        sumTop += (x[i] - x_mean) * (y[i] - y_mean) 
    # 计算标准差
    for i in range(n):
        x_pow += math.pow(x[i] - x_mean, 2)
    for i in range(n):
        y_pow += math.pow(y[i] - y_mean ,2)
    sumBottom = np.sqrt(x_pow * y_pow)  
    p = sumTop / sumBottom  # 协方差 / 标准差
    return p

4. Рассчитайте вклад каждого атрибута

def calcAttribute(dataSet):
    prr = []  # 空列表待追加数据
    n,m = np.shape(dataSet)  # 获取行数和列数
    x = [0] * n  # 初始化特征x和类别向量y
    y = [0] * n
    for i in range(n):
        y[i] = dataSet[i][m-1]  # 得到全部的类别向量
    for j in range(m-1):
        for k in range(n):
            x[k] = dataSet[k][j]
        prr.append(calcPearson(x,y))  # 计算每个特征和类别y的相关系数,存入列表
    return prr

5. Результаты расчета

prr = calcAttribute(df2)
prr

# 结果
[-0.12335134242111898,
 -0.05860090386731199,
 -0.39038619785678985,
 -0.14989060907230156,
 -0.03952841713829405]

Ниже описана величина коэффициента корреляции между каждой переменной и категорией кошка:

6. Коэффициент корреляции Пирсона можно напрямую отобразить с помощью функции corr в pandas, а возвращаемым значением будет таблица DataFrame коэффициента корреляции между переменными.

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

В то же время мы также можем посмотреть на корреляцию между любыми двумя переменными:

использованная литература

1. Коэффициент корреляции Пирсона часто используемых методов выбора признаков:Гу Юэ посетила конференцию.GitHub.IO/2019/07/20/…

2. Как понять порядок рангов и сумму рангов:blog.CSDN.net/WeChat_4215…

3. Корреляционный анализ: Пирсон, Кендалл, Спирмен:woohoo.Punctuation.com/Pearson-Ken…