maxmin聚类算法

时间:2014-10-10 19:41:21

标签: algorithm cluster-analysis

我读了一篇提到最大最小聚类算法的论文,但我真的不太明白这个算法是做什么的。谷歌搜索“最小最小聚类算法”不会产生任何有用的结果。有谁知道这个算法是什么意思?这是该论文的摘录:

通过随机选择观察作为第一个质心c1,并通过将质心的集合C设置为{c1}来进行最大最小聚类。 在第i次迭代期间,选择ci使得它最大化ci与C 中的观测值之间的最小欧几里德距离。 Max-min聚类优于基于密度的聚类算法(例如k-means),它倾向于从密集的非癫痫发作数据点中选择许多例子。

我不太了解粗体部分。 链接到论文是here

2 个答案:

答案 0 :(得分:0)

我们选择每个新的质心尽可能远离现有的质心。这是一些Python代码。

def maxminclustering(observations, k):
    observations = set(observations)
    if k < 1 or not observations: return set()
    centroids = set([observations.pop()])
    for i in range(min(k - 1, len(observations))):
        newcentroid = max(observations,
                          key=lambda observation:
                                  min(distance(observation, centroid)
                                      for centroid in centroids))
        observations.remove(newcentroid)
        centroids.add(newcentroid)
    return centroids

答案 1 :(得分:0)

这听起来很像播种 k-means的最远点启发式,但之后根本没有执行任何k-means迭代。

这是一个非常简单但非常有效的策略。基本上它会找到很多分散的数据点,这可以使k-means快速收敛。通常,人们会丢弃第一个(随机)数据点。

它只适用于较低的k值(它避免将质心放在数据集的中心!),并且它不是非常有利于多次运行 - 它往往会再次选择相同的初始质心。

K-means ++可以看作是一个更随意的版本。它不是总是选择farthes对象,而是选择具有增加的可能性的远端对象,但也可以随机选择近邻。这样,多次运行时会得到更多样化的结果。

您可以在ELKI中试用它,它名为FarthestPointsInitialMeans。如果选择算法SingleAssignmentKMeans,那么它将不执行k-means迭代,而只执行初始赋值。这可能会给你这个&#34; MaxMin聚类&#34;算法