集群场景:2 个点的计算成本之间的差异用作点之间的相似性度量。适用吗?

Cluster Scenario: Difference between the computedCost of 2 points used as similarity measure between points. Is it applicable?

我想测量聚类中两点之间的相似性。 以这种方式计算的相似度是否是两个数据点之间可接受的相似度度量?

假设我必须使用向量:vector A and vector B,它们 在同一簇中 。我已经训练了一个由 model 表示的集群,然后 model.computeCost() 计算输入点和相应集群中心之间的平方距离。

(我正在使用 Apache Spark MLlib)

val costA = model.computeCost(A)
val costB = model.computeCost(B)

val dissimilarity = |cost(A)-cost(B)|

差异性,即值越高,它们之间就越不相似。

如果您只是问这是一个有效的指标,那么答案是几乎,它是一个有效的 pseudometric 如果只有 .computeCost 是确定性的。

为简单起见,我表示 f(A) := model.computeCost(A)d(A, B) := |f(A)-f(B)|

简短证明:d 是应用于某个函数的图像的 L1,因此本身就是伪度量,如果 f 单射 (一般来说,你的是不是)。

长(呃)证明:

  • d(A,B) >= 0 ,因为|f(A) - f(B)| >= 0
  • d(A,B) = d(B,A) ,因为|f(A) - f(B)| = |f(B) - f(A)|
  • d(A,B) = 0 iff A=B, no, 这就是为什么它是 pseudometric,因为你可以有很多 A != B 这样 f(A) = f(B)
  • d(A,B) + d(B,C) <= d(A,C),直接来自绝对值的相同不等式。

如果您问它能解决您的问题,那么答案是可能,取决于问题。如果不分析您的问题和数据,就无法回答这个问题。如上所示,这是一个有效的伪度量,因此它将从数学角度衡量表现得体的东西。它是否适用于您的特定情况是完全不同的故事。好消息是大多数适用于度量的算法也适用于伪度量。唯一的区别是你只是 "glue together" 具有相同图像的点 (f(A)=f(B)),如果这不是你的问题所在——那么你可以在任何基于度量的推理中应用这种伪度量没有任何问题。实际上,这意味着如果您的 f

computes the sum of squared distances between the input point and the corresponding cluster center

这意味着这实际上是到最近中心的距离(考虑单个点时不涉及求和)。这意味着,当两个独立的集群中的 2 个点与它们自己的集群中心的距离相同时,它们被认为 相同 。因此,您的措施捕获 "how different are relations of points and their respective clusters"。这是一个定义明确的间接相异性计算,但是在应用它之前您必须充分了解正在发生的事情(因为它会产生特定的后果)。

你的"cost"实际上是到中心的距离。

到中心的距离相同的点被认为是相同的(距离为 0),这会产生一个非常奇怪的伪网络,因为它忽略了该距离点在圆上的位置。

这不太可能解决您的问题。