Подтвердить что ты не робот

Евклидовое расстояние против корреляции Пирсона против косинусного сходства?

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

4b9b3361

Ответ 1

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

Ответ 2

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

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]])

Ответ 3

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