使用反转距离的K均值聚类

时间:2016-11-11 18:41:26

标签: c++ algorithm k-means

首先,我正在试图弄清楚如何应用此算法来解决家庭作业项目。所以,我不是在寻找家庭作业解决方案,只是帮助我完成解决问题的算法。

我正在尝试使用K-means聚类来聚类大型数组(2 ^ 6)。这些数组是序列[0,1,2 ... 31]的唯一排列。但是,我不需要使用欧氏距离,而是需要使用反转距离。

我在k-means中的第一步是从数据集中选择k = 10个随机点。然后,我计算数据集中每个值与每个随机k点的反转距离。这给出了初始聚类。

现在,我无法弄清楚如何将下一步从欧氏距离转换为反转距离。如何找到每个簇的中心(就反转距离而言),以便重复聚类步骤?



作为伴星问题,欧几里德距离是(或等效的)反演距离的良好近似值吗?我不相信,但我不确定如何去证明它。

提前感谢所有人。

1 个答案:

答案 0 :(得分:1)

通常,不能使用非欧几里德距离的k-means。您可以尝试使用它们运行算法,但是当算法终止时,可以说很少有关于收敛的含义。

正如您在the Wikipedia entry中所看到的,欧几里德距离是算法固有的。它通过在E和M类型的步骤之间交替工作(如在the EM algorithm中),并且对于欧几里德距离,可以显示两个步骤都使相同的目标函数最小化。对于其他距离,尽管代码看起来相同,但一般情况下它并不成立。

另见this question in Cross Validated

如果距离不同,则应使用其他内容,例如hierarchical clusteringk-medoids