使用距离矩阵聚类对象

时间:2014-05-15 02:55:07

标签: algorithm

假设有几个对象:o1,o2,o3 ......

还有一个距离/相异度矩阵D,其中包含每对对象的距离。

e.g。 Dij是oi和oj之间的距离/差异。

如何将这些对象聚类成组,以便:

每组中每对物体之间的距离小于预定义的阈值。

3 个答案:

答案 0 :(得分:3)

这是我想做的事情:

  1. 当且仅当距离不超过阈值时,形成一个连接两个点的图表。

  2. 在图表中查找最大的点组,这样,对于每个组,每个组成员都与其他每个组成员都有优势。

  3. 这个问题的步骤是步骤(2) - 它是the clique problem,并且是NP完全的。

    以下是您可以做的事情:

    1. complete-linkage clustering对点进行聚类,其中提到的第二个算法CLINK的成本为O(N²)。

    2. 当形成的簇之间的距离超过阈值时停止算法,或者沿树向下走,使得簇是边缘高于阈值的子树,然后低于它们之下的阈值。

    3. 使用完全连锁聚类,两个聚类之间的距离是任意两个点之间的最大距离,每个聚类一个,所以如果你加入两个以这种方式在距离d形成的聚类形成一个合并的聚类,每一对合并群集中的点必须彼此距离d最多。

      因为我认为我还没有及时解决一个NP完全问题的时间O(N²)(这意味着P = NP,证明/反驳其中is unlikely to be this easy),这第二种方法不会必须提供与第一个一样整齐的聚类 - 但我没有仔细考虑到这一点,以确切知道权衡取舍。

答案 1 :(得分:0)

这是我的方法:

  1. 给定图G,用Distance(a,b) < threshold聚类任意2个顶点,这是一个初始解决方案\ state

  2. 通过进行最佳合并来增强\优化此解决方案

  3. 这种方法不是最优的,但它已经完成,而且时间复杂度很低。

    Time = T(Step 1) + T(Step 2)
    
    T(Step 1) ~ V + V/2 + V/4 + .. + 1 = 2V = O(V)
    
    T(Step 2) ~ 1/c V^2 = O(V^2)
    
    Time ~ 2V + 1/c V^2 = O(V) + O((^2) = O(V^2)
    

答案 2 :(得分:0)

假设三角不等式成立(即o1,o2,...是度量空间(O,d)的元素),那么canopy clustering应该有效。

冠层聚类的逻辑如下:

  1. 从初始集O中选择一个随机对象o。
  2. 为o创建一个新的冠层Co并添加到Co所有对象i s.t. d(o,i)&lt; T1。
  3. 从O中删除所有对象j,s.t。 d(o,j)&lt; T2。
  4. 重复直到O为空。
  5. T1和T2是两个阈值,其中T2 < T1。现在,由于三角不等式成立,我们知道对于具有中心oi的群集oj中的每对对象Colold(oi,oj) <= d(ol, oi) + d(ol, oj) < 2T1

    请注意,树冠群集会产生重叠群集,即对象可以放置在多个群集中。另请注意,未预定义生成的群集数。