假设有几个对象:o1,o2,o3 ......
还有一个距离/相异度矩阵D,其中包含每对对象的距离。
e.g。 Dij是oi和oj之间的距离/差异。
如何将这些对象聚类成组,以便:
每组中每对物体之间的距离小于预定义的阈值。
答案 0 :(得分:3)
这是我想做的事情:
当且仅当距离不超过阈值时,形成一个连接两个点的图表。
在图表中查找最大的点组,这样,对于每个组,每个组成员都与其他每个组成员都有优势。
这个问题的步骤是步骤(2) - 它是the clique problem,并且是NP完全的。
以下是您可以做的事情:
按complete-linkage clustering对点进行聚类,其中提到的第二个算法CLINK的成本为O(N²)。
当形成的簇之间的距离超过阈值时停止算法,或者沿树向下走,使得簇是边缘高于阈值的子树,然后低于它们之下的阈值。
使用完全连锁聚类,两个聚类之间的距离是任意两个点之间的最大距离,每个聚类一个,所以如果你加入两个以这种方式在距离d形成的聚类形成一个合并的聚类,每一对合并群集中的点必须彼此距离d最多。
因为我认为我还没有及时解决一个NP完全问题的时间O(N²)(这意味着P = NP,证明/反驳其中is unlikely to be this easy),这第二种方法不会必须提供与第一个一样整齐的聚类 - 但我没有仔细考虑到这一点,以确切知道权衡取舍。
答案 1 :(得分:0)
这是我的方法:
给定图G,用Distance(a,b) < threshold
聚类任意2个顶点,这是一个初始解决方案\ state
通过进行最佳合并来增强\优化此解决方案
这种方法不是最优的,但它已经完成,而且时间复杂度很低。
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应该有效。
冠层聚类的逻辑如下:
T1和T2是两个阈值,其中T2 < T1。现在,由于三角不等式成立,我们知道对于具有中心oi
的群集oj
中的每对对象Col
,ol
:d(oi,oj) <= d(ol, oi) + d(ol, oj) < 2T1
。
请注意,树冠群集会产生重叠群集,即对象可以放置在多个群集中。另请注意,未预定义生成的群集数。