Algorithm 一种接受任意距离函数的聚类算法

Algorithm 一种接受任意距离函数的聚类算法,algorithm,cluster-analysis,Algorithm,Cluster Analysis,我在笛卡尔平面(2D)上有大约200个点。我想根据任意距离函数(不是矩阵)将这些点聚类为k个簇,并得到所谓的质心或这些簇的代表。我知道kmeans对一些特殊的距离函数,如欧几里德函数、曼哈顿函数、余弦函数等会这样做。但是,kmeans不能处理任意的距离函数,因为例如在kmeans对欧几里德距离函数的质心更新阶段,每个簇中点的平均值为LSE,并最小化簇中节点到其质心的距离之和(平均值);然而,当距离函数是任意的时,点的平均值可能不会使抖动最小化。你能帮我一下吗?告诉我你是否知道任何能为我工作的聚类

我在笛卡尔平面(2D)上有大约200个点。我想根据任意距离函数(不是矩阵)将这些点聚类为k个簇,并得到所谓的质心或这些簇的代表。我知道kmeans对一些特殊的距离函数,如欧几里德函数、曼哈顿函数、余弦函数等会这样做。但是,kmeans不能处理任意的距离函数,因为例如在kmeans对欧几里德距离函数的质心更新阶段,每个簇中点的平均值为LSE,并最小化簇中节点到其质心的距离之和(平均值);然而,当距离函数是任意的时,点的平均值可能不会使抖动最小化。你能帮我一下吗?告诉我你是否知道任何能为我工作的聚类算法?

如果你用“聚类中的最中心点”替换“均值”,那么你就得到了算法。Wikipedia声称需要一个度量,但我认为这是不正确的,因为我看不出多数最小化证明哪里需要三角形不等式,甚至对称性。

如果你用“群中最中心点”替换“均值”,那么你就得到了算法。Wikipedia声称需要一个度量,但我认为这是不正确的,因为我看不出多数最小化证明哪里需要三角形不等式甚至对称性。

有各种聚类算法可以处理任意距离函数,特别是:

  • 层次聚类
  • k-甲酰胺(PAM)
  • DBSCAN
  • 光学元件
  • 更多-获得一些好的集群书籍和/或软件

但唯一实施
k
集群并使用“集群代表”模型的是k-medoid。您可能对群集模型施加了太多的约束,无法获得更广泛的选择。

有多种群集算法可用于任意距离函数,特别是:

  • 层次聚类
  • k-甲酰胺(PAM)
  • DBSCAN
  • 光学元件
  • 更多-获得一些好的集群书籍和/或软件

但唯一实施
k
集群并使用“集群代表”模型的是k-medoid。您可能对集群模型施加了太多的约束,以获得更广泛的选择。

因为您需要表示质心但不是数据点之一的东西,我曾经使用的一种技术是对N个随机样本执行类似Kmedoids的操作,然后我将每个集群的所有成员作为样本,构建一个分类器,该分类器返回一个类标签。。。最后,从分类器返回的每个类标签都是一组簇/质心的抽象概念。我这样做是出于一个非常具体和微妙的原因,我知道其中的缺陷。
如果你不想指定K,而且你的向量不是巨大的和超稀疏的,那么我会看看JavaML中的蛛网聚类,JavaML也有一个不错的KMedoids。

因为你想要的东西代表质心,但不是数据点之一,我曾经使用的一种技术是对N个随机样本执行类似Kmedoids的操作,然后我提取每个集群的所有成员,并将它们用作样本来构建一个分类器,该分类器返回一个类标签。。。最后,从分类器返回的每个类标签都是一组簇/质心的抽象概念。我这样做是出于一个非常具体和微妙的原因,我知道其中的缺陷。
如果你不想指定K,并且你的向量不是巨大和超稀疏的,那么我会看看JavaML中的蛛网聚类,JavaML也有一个不错的KMedoids。

首先,请注意,在文献中,“距离”的意思是:(1)
d(x,y)=d(y,x)
,(2)
d(x,y)谢谢你的考虑。不,事实上1和3在我们的例子中成立,但不是2。可能有d(x,y)>d(x,z)+d(z,y)的x,y和z。首先,请注意,在文献中,“距离”的意思是:(1)
d(x,y)=d(y,x)
,(2)
d(x,y)感谢您的考虑。不,事实上1和3在我们的例子中成立,但不是2。可能有x,y和z,其中d(x,y)>d(x,z)+d(z,y)。谢谢您的考虑。我想要的是类似于kmeans中的质心或代表性的东西,它与节点本身不同。但是,kmedoids给了我一个节点作为每个集群的代表(medoid)。@user3314148没有更多的结构,可能唯一的答案是让“质心”的候选节点是点的抽象凸组合(即,200个元素的非负向量和为1,其中每个点用其标准基向量标识)。然后,定义质心和点之间的距离(例如,加权平均距离)、中心性标准(例如,到簇点的最大加权平均距离)以及找到质心的方法(例如,线性规划).你的想法的第一部分是可以的;但是,问题是:我如何定义未知质心和点之间的距离?任何点可以得到的权重应该是多少?实际上,我的距离函数的结构是,节点A和节点B之间的距离是通过考虑路径中一个人面对的障碍,它们对应的ng成本,以及两点之间的欧几里德距离。@user3314148如果你已经有了一个关于中间点的有意义的概念,那么需要解决的问题是找到一种方法,在给定簇的成员资格的情况下,提高代表簇的点的中心性。谢谢。这是有意义的。但是,问题是中间点的概念可以是,以及如何提高代表集群的未知点的中心性。你能告诉我更多关于它的信息吗?或者你知道我能在哪些论文或报告中找到关于这些事情的信息吗