初始化K均值聚类的方法


Answers:


12

请允许我简单地从我自己的函数(SPSS的宏)中复制并粘贴选项列表,该函数!kmini此处的 “集群”集合中找到。

创建或选择初始群集中心的方法。选择:

  • 随机子样本的 RGC 重心。通过不重叠,成员资格,组将数据随机划分k,并将这些组的质心指定为初始中心。因此,将计算中心,而不是从现有的数据集案例中选择中心。此方法产生的中心彼此靠近,并且位于数据的一般质心附近。
  • RP- 随机选择的点k随机选择数据的不同情况作为初始中心。
  • RUNFP- 最远的点(运行选择)。首先以k个案为中心,然后在运行数据集其余个案的过程中,逐步进行中心之间的替换。替换的目的是k在可变空间中获得彼此最远离的端点。这些在数据云中占据外围位置的点(案例)是产生的初始中心。(该方法在SPSS k-means过程中用作默认方法QUICK CLUSTER。请参见SPSS算法中的详细信息。另请参见此处的说明)。
  • SIMFP- 最远的点(简单选择)。从数据集中选择第一个中心作为随机案例。选择第二个中心作为与该中心最大距离的情况。选择第三个中心作为与这两个(与两个中的最近者)最大距离的情况-依此类推。
  • KMPP- 随机最远点,或k-means ++。从数据集中选择第一个中心作为随机案例。第二个中心也是随机选择的,但是选择一个案例的概率与它到该(第一个)中心的距离(平方欧几里得)成正比。还随机选择第三个中心,其选择概率与案例到这两个中心中最接近的中心的距离成正比,依此类推。(Arthur,D.,Vassilvitskii,S .. K-means ++:谨慎播种的优势。//第18届ACM-SIAM离散算法年度研讨会论文集。2007.,1027-1035。)
  • GREP 组代表点。方法的想法–以中心为中心k最有代表性的“副案”。以第一个中心为最接近常规数据质心的情况。然后从数据点中选择其余的中心,这样就可以考虑每个点是否比一组点离一组点更近(以及在欧几里德距离的平方上多少)。到任何现有的中心。即,将每个点作为候选者进行检查,以代表由已经收集的中心所代表的某些点组。在这方面最具代表性的要点被选为下一个中心。(Kaufman,L.Rousseeuw,PJ,1990年,在数据中寻找群体:聚类分析入门。另见:Pena,JM等人.K-means算法的四种初始化方法的经验比较//模式识别字母。 20(10),1999,
  • [还有一种不错的方法,我还没有在宏中实现,k它可以从随机的统一但在随机和贪婪之间的某个地方生成点,这些点是随机的,但是“随机性小于随机性”;看到该方法的潜在理论基础]
  • 另一种方法是使用Ward方法进行层次聚类。如果样本太大,则可以对对象的子样本进行处理。然后,k由它产生的簇的均值是k均值程序的初始种子。与其他层次聚类方法相比,沃德方法更可取,因为沃德方法与k均值具有相同的目标目标。

方法RGC,RP,SIMFP,KMPP取决于随机数,并且可能在每次运行中更改其结果。

方法RUNFP可能对数据集中的案例顺序敏感;但是方法GREP则不是(除了在数据中存在许多相同情况,联系的情况之外)。k如果k数据(n)中的案例数相对较大,则GREP方法可能无法收集所有中心,尤其是当时k>n/2。[宏将通知数据是否不允许该方法收集k中心]。GREP方法是最慢的一种,它在所有情况下计算[在我的实现中]距离矩阵,因此,如果有成千上万个案例,则不适合。但是,您可以对数据的随机子样本执行此操作。

我目前不在讨论哪种方法“更好”以及在什么情况下使用,因为到目前为止,我还没有对该问题进行广泛的模拟研究。我的初步印象和肤浅印象是,GREP特别值得(但价格昂贵),如果您希望真正便宜的方法仍然具有足够的竞争力,那么随机k点RP是一个不错的选择。



我很高兴看到您对类似-确定性但有效的初始化K-Means方法的回答。
罗伊

@Royi,如果您对此有疑问,为什么不发布问题?
ttnphns

您有很多分享方法吗?我创建了一些“查找最远的样本”技巧,但是是否有很多值得探讨的好技巧?
罗伊

如果您认为自己有价值,请以问题的形式分享,如果问题可以提出一些有价值的问题。
ttnphns

5

我上一次对此进行了全面的文献综述(这是将近20年前的时候),其中两个主要建议是:

  1. 要使用沃德方法(这是标准的层次聚类分析算法)来查找初始中心。
  2. 使用随机开始。

在大数据应用中,沃德的方法虽然可以应用于子样本,但效果并不理想。

我做了一些模拟,但从未尝试过进行发布,结果发现:

  • 100 Random开始始终胜过Ward方法。
  • 查找起点默认SPSS算法优于100个随机起点。
  • 在1,000个随机起始点,随机化始终是最好的方法。

我从中得出的主要结论是,SPSS算法出奇地好,但是如果有资源,那么要使用1000+个随机起点。


在模拟中,您是否注意到高维数据的行为有任何变化?
阿林·乔杜里

并非我能记得。但是,我的模拟使用的变量不会超过20个。但是,维数越高,要求所有其他条件都相同的随机启动次数就越多。
蒂姆(Tim)

注意:默认SPSS算法(链接断开了)是我在答案中缩写为RUNFP的名称。
ttnphns

4

使用ttnphns命名法,我在以下位置测试了RGC,RP和KMPP:

  • 2D / 3D点
  • 文本文件中的单词
  • 基本上具有距离的曲线。L2

我不建议使用RGC,因为生成的中心彼此非常接近:许多点的均值接近全局均值(大数定律)。这会大大降低收敛速度:集群开始个性化需要一些时间。

RP通常是很好的,因此建议将其作为首选。

KMPP非常受欢迎,并且在小尺寸上效果很好:与RP相比,它倾向于降低以局部最小值结尾的可能性。

但是,当我处理大型数据集(1M个点,即来自大尺寸文本文档中的单词袋)时,RP的性能稍好于KMPP,因为它以较少的迭代次数结束。我对此感到惊讶。在大数据集/高维中,不可能收敛到全局最小值,您可以通过“局部最小值有多好” =“最终SOD有多小”来衡量质量。两种方法具有相同的质量。

请注意,如果要使用复制来提高质量,则使用随机方法很重要。


谢谢。我将处理大型数据,因此这非常有用。
Arin Chaudhuri
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.