聚类场景:作为点之间相似性度量的两个点的计算成本之间的差异。这是否适用?

我想在聚类中的两个点之间有一个相似性的度量。这样计算出来的相似性是否可以作为两个数据点之间相似性的可接受度量?

假设我有两个向量:向量 A 和向量 B,它们位于同一个聚类中。我已经训练了一个聚类,标记为model,然后model.computeCost()计算输入点与相应聚类中心之间的平方距离。

(我使用的是Apache Spark MLlib)

val costA = model.computeCost(A)val costB = model.computeCost(B)val dissimilarity = |cost(A)-cost(B)|

差异性,即数值越高,它们之间的差异就越大。


回答:

如果你只是在问这是否是一个有效的度量,那么答案是几乎是,如果.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 当且仅当A=B不是,这就是为什么它是度量,因为你可以有很多A != B使得f(A) = f(B)
  • d(A,B) + d(B,C) <= d(A,C)是的,直接从绝对值的相同不等式得出。

如果你在问它是否适用于你的问题,那么答案是可能的,取决于问题。没有对你的问题和数据进行分析,就无法回答这个问题。如上所示,这是一个有效的伪度量,因此从数学角度来看,它将测量一些行为良好的东西。它是否适用于你的特定情况完全是另一回事。好的一面是,大多数适用于度量的算法也适用于伪度量。唯一的区别是,你只是将具有相同图像的点“粘合在一起”(f(A)=f(B)),如果这不是你问题中的问题——那么你可以将这种伪度量应用于任何基于度量的推理中,而不会有任何问题。在实践中,这意味着如果你的f

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

这意味着这实际上是到最近中心的距离(当你考虑单个点时,不涉及求和)。这将意味着,两个位于两个不同聚类中的点在它们离各自聚类中心的距离相同时被认为是相同的。因此,你的度量捕捉到的是“点与其各自聚类之间的关系有多不同”。这是一种定义明确的间接差异计算方式,但你在应用之前必须完全了解正在发生的事情(因为它会产生特定的后果)。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注