我读了一篇提到最大最小聚类算法的论文,但我真的不太明白这个算法是做什么的。谷歌搜索“最小最小聚类算法”不会产生任何有用的结果。有谁知道这个算法是什么意思?这是该论文的摘录:
通过随机选择观察作为第一个质心c1,并通过将质心的集合C设置为{c1}来进行最大最小聚类。 在第i次迭代期间,选择ci使得它最大化ci与C 中的观测值之间的最小欧几里德距离。 Max-min聚类优于基于密度的聚类算法(例如k-means),它倾向于从密集的非癫痫发作数据点中选择许多例子。
我不太了解粗体部分。 链接到论文是here
答案 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;算法