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

问题描述:

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

0 1 2 

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

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

如果我理解正确,您只需要反转元素的排序顺序即可。下面的公式转换最大的元素融入到一个新的矩阵,反之亦然的最小元素:

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)