通过数据集的随机子样本初始化K均值中心吗?


13

如果我有某个数据集,那么使用该数据集的随机样本来初始化聚类中心有多么聪明?

例如,假设我要5 clusters。我可以5 random samplessize=20%是原始数据集。然后,我可以对这5个随机样本中的每个样本取平均值,然后将这些均值用作我的5个初始聚类中心吗?我不知道我在哪里读这本书,但我想知道你们对这个想法的看法。


更新:请参阅此线程初始化K-means聚类:现有的方法有哪些?有关各种初始化方法的一般讨论。


11
如果将样本随机分为5个子样本,则5个均值几乎会重合。将这样的接近点作为初始聚类中心有什么意义?在大多数K-means实现中,初始聚类中心的默认选择是基于相反的想法:找到相距最远的5个点,并将它们设为初始中心。
ttnphns 2012年

2
@ttnphns这将是一个不错的答案。

2
我认为最好选择整体均值作为一个点,然后选择在各个方向上都远离该中心的其他均值。
Michael R. Chernick 2012年

1
说得通。如何找到这5个相距甚远的点?谢谢!
JEquihua 2012年

@JEquihua,我将我的评论作为答案并添加了您所要求的详细信息。
ttnphns 2012年

Answers:


16

如果将样本随机分为5个子样本,则5个均值几乎会重合。将这样的近点作为初始聚类中心有什么意义?

在许多K均值实现中,初始聚类中心的默认选择是基于相反的想法:找到相距最远的5个点,并将它们作为初始中心。您可能会问,找到那些遥远的点的方式可能是什么?这是SPSS的K-means为此所做的:

将数据集的任何k个案例(点)作为初始中心。正在通过以下条件检查所有其余案例是否有能力替代它们作为初始中心:

  • a)如果案例离最接近它的中心比两个最接近的中心之间的距离更远,则案例替换后两个中心的中心。
  • b)如果表壳离最靠近它的第二中心的距离大于最接近它的中心与最接近后者的中心之间的距离,则该壳替换最接近它的中心。

如果不满足条件(a),则检查条件(b)。如果不满意,则案件也不会成为中心。这样运行的通过情况下,结果我们得到ķ在云计算最大的案件成为了最初的中心。这种算法的结果尽管足够健壮,但对“任何k个案例” 的开始选择和数据集中案例的排序顺序并不完全不敏感。所以,几个随机启动尝试仍然欢迎,因为它总是与K-手段的情况下。

请参阅我的答案,并列出一些流行的k均值初始化方法。分裂为随机子样本的方法(我和其他人在这里也批评过)以及SPSS使用的描述方法-也在列表中。


1
完成您描述的内容后,可以使用什么统计信息来确定哪个初始化点可以导致更好的分区?感谢你所做的一切。
JEquihua 2012年

曾经使用最大点作为初始中心并不能保证最终获得最佳分割,因为认为它们(与随机初始中心相比)确实减少了陷入“局部最优”的机会,并且加快了收敛过程。根据情况的不同顺序,将整个k均值分割2-5次,保存获得的最终中心,将它们取平均值并输入作为一个最终聚类的初始中心。这个分区肯定是最好的。实际上,您不需要任何特殊的统计信息即可进行检查,除非您要比较不同 k的部分。
ttnphns 2012年

1
我确实想比较不同k的分区。我可以使用什么?有什么好主意?非常感谢您对我的帮助。@ttnphns。
JEquihua 2012年

存在一个很大的数字“内部”的聚类准则。最适合k均值的方法之一是Calinski-Harabasz(多元Fisher F)。Google或其他。
ttnphns 2012年

7

手段太相似了。您也可以找到数据集平均值,然后将初始质心放在该平均值周围的小圆圈/球体中。

如果您想了解k-means的更多声音初始化方案,请查看k-means ++。他们设计了一种相当聪明的k均值播种方法。

  • 亚瑟·D(Arthur D.)和瓦西里维斯基(Vassilvitskii,S.)(2007)。
    k-means ++:谨慎播种的优势”。
    第十八届ACM-SIAM年度离散算法研讨会论文集

作者幻灯片:http : //www.ima.umn.edu/~iwen/REU/BATS-Means.pdf


我读到了这篇文章,它看起来很直观,但我认为尚有待证明,它比简单地获取大量随机初始化点要好得多。我发现了这个简单的代码,以备您尝试:kmpp <-function(X,k){n <-nrow(X)C <-numeric(k)C [1] <-sample(1:n, 1)对于(i in 2:k){dm <-distmat(X,X [C,])pr <-apply(dm,1,min); pr [C] <-0 C [i] <
-sample

众所周知,可以显着减少迭代次数直到收敛为止,并平均产生更好的结果。我可以证实,在我自己的实验中,kmeans ++是必经之路。我正在使用ELKI实现。
已退出–Anony-Mousse 2012年

什么是ELKI实施?我在哪里可以找到它?问候!
JEquihua 2012年


4

ttnphns在其评论中指出,使用随机样本的方法将使您获得所需的相反结果。我们需要的是一种找到彼此相距很远的数据点的方法。

理想情况下,您可以遍历所有点,找到它们之间的距离,确定距离最大的位置...

不要回避OP的意图,但我认为“解决方案”已内置在k-means算法中。我们执行多次迭代,并根据之前的迭代重新计算聚类质心。我们通常还会多次运行kmeans算法(使用随机初始值),然后比较结果。

如果一个人具有先验知识,领域知识,那么这可能会导致一种更好的方法来识别初始聚类中心应该在哪里。否则,可能需要选择随机数据点作为初始值,然后每次运行利用多次运行和多次迭代。


完成您描述的内容后,可以使用什么统计信息来确定哪个初始化点可以导致更好的分区?感谢你所做的一切。
JEquihua 2012年

2

k


很有道理。我能问你同样的问题吗?假设我随机获取了不计其数的初始点。我可以用什么来确定哪个分区是最好的?问候!@gmacfarlane
JEquihua 2012年

k

k
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.