Matlab为什么使用1-d作为相关距离

时间:2019-01-08 22:16:34

标签: matlab correlation

我想在Matlab的knnsearch中使用相关距离。我想知道为什么要使用相关性,“相关性-减去观察值之间的样本线性相关性(视为值序列)”。用来。使用knnsearch我想找到k个最近的邻居。但是,不是完美的相关性(这意味着最接近的匹配)不是相关性而是1相关性吗?

1 个答案:

答案 0 :(得分:4)

使用相关性作为“距离”没有多大意义。给定两个向量x1x2,如果x1等于x2,则期望距离为0。但是,向量与自身的相关性(系数)为1。如果您计算1 - correlation,您将得到相等向量的0

通常,向量的“距离”越近(距离越小),它们之间的相关性越强(相关性越高)。因此,1 - correlation可以作为一种相似性度量。

但是请注意,尽管1 - correlation是相似性的度量,但实际上不是distance ,因为它不满足triangle inequality。作为反例,请考虑以下向量:

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