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

时间:2016-09-28 21:26:30

标签: apache-spark machine-learning cluster-analysis apache-spark-mllib cosine-similarity

我希望在群集中的两个点之间具有相似性的度量。 以这种方式计算的相似性是否是两个数据点之间相似性的可接受度量?

假设我必须在同一群集中使用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)|

相异性,即值越高,它们彼此越不相同。

2 个答案:

答案 0 :(得分:1)

如果你只是要求这是一个有效的指标,那么答案是几乎,只有{{1}它才是有效的伪测量是确定性的。

为简单起见,我表示.computeCostf(A) := model.computeCost(A)

简短证明:d(A, B) := |f(A)-f(B)|是应用于某个函数图像的L1,因此是伪测量本身,如果d内射,则为指标(通常情况下,你的)。

长(呃)证明:

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

如果您对问题提出会运作,那么答案是它可能会取决于问题。如果不分析您的问题和数据,就无法回答这个问题。如上所示,这是一个有效的伪测量,因此它将从数学角度测量正常行为。它适用于你的特定情况是完全不同的故事。好处是,大多数适用于指标的算法也适用于伪计量。唯一的区别是你只是简单地粘在一起&#34;具有相同图像(d(A,B) + d(B,C) <= d(A,C))的点,如果这不是您的问题的问题 - 那么您可以在任何基于度量的推理中应用这种伪测量而没有任何问题。在实践中,这意味着如果您的f(A)=f(B)

  

计算输入点与相应聚类中心之间的平方距离总和

这意味着这实际上是距离最近中心的距离(当您考虑单点时,不会涉及总和)。这意味着,当它们距离它们自己的聚类中心相同的距离时,两个单独聚类中的2个点被认为是相同。因此,您的衡量标准可以捕捉到点与其各自的集群之间的关系有多么不同&#34;。这是一个定义明确的间接差异计算,但是在应用之前你必须完全了解发生的事情(因为它会产生特定的后果)。

答案 1 :(得分:1)

你的成本&#34;实际上是到中心的距离。

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

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