Почему Matlab использует 1-й для расстояния корреляции - PullRequest
0 голосов
/ 09 января 2019

Я хочу использовать корреляционное расстояние в knnsearch в Matlab. Мне интересно, почему для корреляции «корреляция» - один минус выборочная линейная корреляция между наблюдениями (рассматривается как последовательность значений) ». используется. С помощью knnsearch я хочу найти k ближайших соседей. Но не является ли идеальная корреляция (которая будет означать наиболее близкое совпадение) корреляцией, а не 1-корреляцией?

1 Ответ

0 голосов
/ 09 января 2019

Использование корреляции в качестве «расстояния» не имеет большого смысла. Учитывая два вектора x1 и x2, если x1 равно x2, можно ожидать, что расстояние будет 0. Однако корреляция (коэффициент) вектора с самим собой составляет 1. Если вы вычислите 1 - correlation, вы получите 0 для равных векторов.

В общем случае, чем «ближе» векторы (чем меньше расстояние), тем более они коррелированы (чем выше корреляция). Так что 1 - correlation имеет смысл как мера сходства.

Обратите внимание, однако, что хотя 1 - correlation является мерой сходства, оно на самом деле не является расстоянием , поскольку оно не удовлетворяет неравенству треугольника, В качестве контрпримеров рассмотрим следующие векторы:

x1 = [1 9 8 5];
x2 = [0 7 6 9];
x3 = [9 3 2 6];

Тогда

>> pdist([x1; x2], 'correlation') + pdist([x2; x3], 'correlation')
ans =
   1.919533190739275
>> pdist([x1; x3], 'correlation')
ans =
   1.967870959140932
...