使用反转距离的 K 均值聚类
K-means clustering using Inversion Distance
首先,我想弄清楚如何应用此算法来解决家庭作业项目。所以,我不是在寻找作业解决方案,只是帮助完成解决问题的算法。
我正在尝试使用 K 均值聚类来聚类一大组 (2^6) 数组。这些数组是序列 [0,1,2...31] 的唯一排列。但是,我需要使用反演距离而不是欧氏距离。
我在 k-means 中的第一步是从数据集中选择 k=10 个随机点。然后我计算数据集中每个值到每个随机 k 点的反演距离。这给出了初始聚类。
现在,我不知道如何将下一步从欧氏距离转换为反演距离。我怎样才能找到每个簇的中心(根据反转距离),以便我可以重复聚类步骤?
作为一个伴随问题,欧氏距离是(或等效的)反演距离的一个很好的近似值吗?我不相信它是,但我不确定如何去证明它。
在此先感谢大家。
一般来说,您不能使用具有非欧几里德距离的 k-means。你可以尝试用它们运行算法,但是对于算法终止时收敛的意义几乎没有什么可说的。
如您在 the Wikipedia entry, the Euclidean distance is inherent to the algorithm. It works by alternating between E and M types of steps (as in the EM algorithm) 中所见,对于欧氏距离,可以证明这两个步骤都在最小化相同的 objective 函数。对于其他距离,尽管代码看起来相同,但通常不成立。
另见 this question in Cross Validated。
如果你有不同的距离,你应该使用其他东西,例如 hierarchical clustering or k-medoids。
首先,我想弄清楚如何应用此算法来解决家庭作业项目。所以,我不是在寻找作业解决方案,只是帮助完成解决问题的算法。
我正在尝试使用 K 均值聚类来聚类一大组 (2^6) 数组。这些数组是序列 [0,1,2...31] 的唯一排列。但是,我需要使用反演距离而不是欧氏距离。
我在 k-means 中的第一步是从数据集中选择 k=10 个随机点。然后我计算数据集中每个值到每个随机 k 点的反演距离。这给出了初始聚类。
现在,我不知道如何将下一步从欧氏距离转换为反演距离。我怎样才能找到每个簇的中心(根据反转距离),以便我可以重复聚类步骤?
作为一个伴随问题,欧氏距离是(或等效的)反演距离的一个很好的近似值吗?我不相信它是,但我不确定如何去证明它。
在此先感谢大家。
一般来说,您不能使用具有非欧几里德距离的 k-means。你可以尝试用它们运行算法,但是对于算法终止时收敛的意义几乎没有什么可说的。
如您在 the Wikipedia entry, the Euclidean distance is inherent to the algorithm. It works by alternating between E and M types of steps (as in the EM algorithm) 中所见,对于欧氏距离,可以证明这两个步骤都在最小化相同的 objective 函数。对于其他距离,尽管代码看起来相同,但通常不成立。
另见 this question in Cross Validated。
如果你有不同的距离,你应该使用其他东西,例如 hierarchical clustering or k-medoids。