应选择哪种算法来完成此任务

时间:2011-04-07 04:27:43

标签: algorithm cluster-analysis k-means

您好  我是Cluster的新手,我不知道哪种算法适合我的任务。让我来描述我的任务:

  1. 首先,给出一组点及它们之间的距离
  2. 根据距离将它们聚类成几个聚类。
  3. 将添加一些新点,也将给出所有点之间的距离。
  4. 重复2
  5. 例如,首先我们有以下矩阵

       | p1 | p2 | p3 |  
    ---|----|----|----|  
    p1 |    |    |    |  
    p2 | d1 |    |    |  
    p3 | d2 | d3 |    |  
    

    在聚类之后,我们添加一个新点,并且还给出了距离:

       | p1 | p2 | p3 | p4 | 
    ---|----|----|----|----|  
    p1 |    |    |    |    |  
    p2 | d1 |    |    |    |  
    p3 | d2 | d3 |    |    |  
    p4 | d4 | d5 | d6 |    |  
    

    这里的问题是速度,我希望群集是增量群集,即后面的群集可以利用以前的结果。因为我们会经常添加点(如果我们找到一个点),并且每次我们重新聚类点。即使集群本身具有O(n),集群的总时间也将为O(n ^ 2)。

    有什么建议吗?

    由于

1 个答案:

答案 0 :(得分:2)

一种选择是修复群集数量(例如,您有K群集)。每当添加新点时,都会将其添加到其重心(群集中点的坐标平均值)最接近您添加的点的群集中。如果您的空间中的点数变为2的幂(1,2,4,8,16,32 ......)时完全重新集群,则重新集群的摊销成本仍为O(n)。