Apache spark 集群场景:作为点之间相似性度量的2个点的计算成本之间的差异。是否适用?
我想要一个簇中两点之间的相似性度量。 以这种方式计算的相似性是否是两个数据点之间可接受的相似性度量 假设我必须使用向量:Apache spark 集群场景:作为点之间相似性度量的2个点的计算成本之间的差异。是否适用?,apache-spark,machine-learning,cluster-analysis,apache-spark-mllib,cosine-similarity,Apache Spark,Machine Learning,Cluster Analysis,Apache Spark Mllib,Cosine Similarity,我想要一个簇中两点之间的相似性度量。 以这种方式计算的相似性是否是两个数据点之间可接受的相似性度量 假设我必须使用向量:向量A和向量B,它们在同一簇中。我训练了一个由model表示的聚类,然后model.computeCost()计算输入点和相应聚类中心之间的平方距离 (我正在使用Apache Spark MLlib) 差异性,即值越高,它们之间的差异越大。如果你只是问这是一个有效的度量标准吗,那么答案是几乎是,如果是确定性的,这是一个有效的伪度量标准 为了简单起见,我表示f(A):=model
向量A和向量B
,它们在同一簇中。我训练了一个由model
表示的聚类,然后model.computeCost()
计算输入点和相应聚类中心之间的平方距离
(我正在使用Apache Spark MLlib)
差异性,即值越高,它们之间的差异越大。如果你只是问这是一个有效的度量标准吗,那么答案是几乎是,如果
是确定性的,这是一个有效的伪度量标准
为了简单起见,我表示f(A):=model.computeCost(A)
和d(A,B):=|f(A)-f(B)
简短的证明:d
是应用于某个函数的映像的L1,因此它本身就是伪度量,如果f
是内射的则是度量(通常,您的度量是不是)
长(er)证明:
d(A,B)>=0
是,因为|f(A)-f(B)>=0
d(A,B)=d(B,A)
d(A,B)=0
iffA=B
,no,这就是为什么它是伪度量,因为您可以有许多A!=B
使得f(A)=f(B)
d(A,B)+d(B,C)如果你只是问这是一个有效的度量标准那么答案是几乎,它是一个有效的伪度量标准,只要计算成本
是确定性的
为了简单起见,我表示f(A):=model.computeCost(A)
和d(A,B):=|f(A)-f(B)
简短的证明:d
是应用于某个函数的映像的L1,因此它本身就是伪度量,如果f
是内射的则是度量(通常,您的度量是不是)
长(er)证明:
d(A,B)>=0
是,因为|f(A)-f(B)>=0
d(A,B)=d(B,A)
d(A,B)=0
iffA=B
,no,这就是为什么它是伪度量,因为您可以有许多A!=B
使得f(A)=f(B)
d(A,B)+d(B,C)你的“成本”实际上是到中心的距离
与中心具有相同距离的点被视为相同(距离0),这会创建一个非常奇怪的伪网络,因为它忽略了该距离点在圆上的位置
这不太可能解决你的问题。你的“成本”实际上是到中心的距离
与中心具有相同距离的点被视为相同(距离0),这会创建一个非常奇怪的伪网络,因为它忽略了该距离点在圆上的位置
这不太可能解决您的问题。什么是“A”和model.computeCost?当然,它不能被称为相似性,因为当点相同时它是0,否则它会更大,但更具体地说,你必须提供关于这些对象/函数的更多细节。只是添加了更多细节。抱歉说得含糊不清。事实上,这更像是一种不同。值越高,它们就越不相似。“A”和model.computeCost是什么?当然,它不能被称为相似性,因为当点相同时它是0,否则它会更大,但更具体地说,你必须提供关于这些对象/函数的更多细节。只是添加了更多细节。抱歉说得含糊不清。事实上,这更像是一种不同。值越高,它们就越不相似。
val costA = model.computeCost(A)
val costB = model.computeCost(B)
val dissimilarity = |cost(A)-cost(B)|