Евклидово расстояние против корреляции Пирсона против сходства косинусов? - PullRequest
42 голосов
/ 03 декабря 2009

Их цели одинаковы: найти похожие векторы. Что вы используете в какой ситуации? (какие-нибудь практические примеры?)

Ответы [ 3 ]

49 голосов
/ 03 декабря 2009

Корреляция Пирсона и косинусное сходство инвариантны к масштабированию, то есть умножению всех элементов на ненулевую константу. Корреляция Пирсона также инвариантна к добавлению любой константы ко всем элементам. Например, если у вас есть два вектора X1 и X2, и ваша корреляционная функция Пирсона называется pearson(), pearson(X1, X2) == pearson(X1, 2 * X2 + 3). Это довольно важное свойство, потому что вам часто все равно, что два вектора одинаковы в абсолютном выражении, только что они одинаково изменяются.

28 голосов
/ 10 декабря 2014

Разницу между коэффициентом корреляции Пирсона и косинусным сходством можно увидеть по их формулам:

enter image description here

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

Для практического использования давайте рассмотрим возврат двух активов x и y:

In [275]: pylab.show()

In [276]: x = np.array([0.1, 0.2, 0.1, -0.1, 0.5])

In [277]: y = x + 0.1

enter image description here

Доходность этих активов имеет точно такую ​​же изменчивость, которая измеряется коэффициентом корреляции Пирсона (1), но они не совсем похожи, что измеряется по косинусному подобию (0,971).

In [281]: np.corrcoef([x, y])
Out[281]: 
array([[ 1.,  1.],   # The off diagonal are correlations 
       [ 1.,  1.]])  # between x and y

In [282]: from sklearn.metrics.pairwise import cosine_similarity

In [283]: cosine_similarity(x, z)
Out[283]: array([[ 0.97128586]])
2 голосов
/ 06 июля 2016

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

...