如何将成对距离矩阵中的大值转换为小值?

时间:2016-09-05 18:47:58

标签: matlab distance

D成为两组观测值之间的成对距离。我使用自定义距离函数来表示相似性。与大多数相似性度量不同,我选择用于计算距离的方式为类似对提供了很大的价值。

    0 1 2

0   0 4 6
1   5 9 7
2   2 1 4

在正常情况下,我们会认为00点是最相似的一对,因为它们之间的距离值为0。在我的情况下,11是最相似的一对,因为它们具有最大值9。我需要使用成对距离矩阵来执行聚类。我需要一种方法将大值转换为可由聚类方法使用的小值。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您只需要反转元素的排序顺序。以下等式将最大元素转换为新矩阵的最小元素,反之亦然:

distance = max(max(D))*ones(size(D)) - D

其中D是自定义距离函数的矩阵。对于上面的示例,这将导致

9 9 9   0 4 6   9 5 3
9 9 9 - 5 9 7 = 4 0 2
9 9 9   2 1 4   7 8 5

如果你知道你的自定义距离矩阵中没有负数,你可以改为使用下面的等式,它只是偏移矩阵的所有元素(以避免被零除),然后它们将它们反转:

distance = 1./(D+1)