如何将成对距离矩阵中的大值转换为小值?
How to convert a large value within a pairwise distance matrix into a small value?
设D
为两组观察值之间的成对距离。我使用自定义距离函数来表示相似性。与大多数相似性度量不同,我选择的计算距离的方法为相似对提供了很大的价值。
0 1 2
0 0 4 6
1 5 9 7
2 2 1 4
在正常情况下,我们会认为0
和0
点是最相似的一对,因为它们之间的距离值为0
。在我的例子中,1
和 1
是最相似的一对,因为它们具有最大值 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)
设D
为两组观察值之间的成对距离。我使用自定义距离函数来表示相似性。与大多数相似性度量不同,我选择的计算距离的方法为相似对提供了很大的价值。
0 1 2
0 0 4 6
1 5 9 7
2 2 1 4
在正常情况下,我们会认为0
和0
点是最相似的一对,因为它们之间的距离值为0
。在我的例子中,1
和 1
是最相似的一对,因为它们具有最大值 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)