我想在Matlab的knnsearch中使用相关距离。我想知道为什么要使用相关性,“相关性-减去观察值之间的样本线性相关性(视为值序列)”。用来。使用knnsearch我想找到k个最近的邻居。但是,不是完美的相关性(这意味着最接近的匹配)不是相关性而是1相关性吗?
答案 0 :(得分:4)
使用相关性作为“距离”没有多大意义。给定两个向量x1
和x2
,如果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