Algorithm 合并最近项的算法

Algorithm 合并最近项的算法,algorithm,hierarchical-clustering,Algorithm,Hierarchical Clustering,下面是层次聚类说明 首先,我有以下几项: 我想根据它们之间的距离以分层的方式对上述项目进行聚类。 在上图中,按以下步骤进行聚类: 第一步。因为b/c和d/e彼此靠近,所以它们被分为(bc)和(de) 第二步。(de)/f聚集在(def)中,因为(de)与f接近 第三步。(bc)/(def)聚集在(bcdef)中,因为群集(bc)和(def)很接近 第四步。a/(bcdef)被聚集到(abcdef)中,因为它们是目前仅有的两个集群 因此,该过程可以如下所示: 我可以将该算法的实现设想如下: 计

下面是层次聚类说明

首先,我有以下几项:

我想根据它们之间的距离以分层的方式对上述项目进行聚类。 在上图中,按以下步骤进行聚类:

第一步。因为b/c和d/e彼此靠近,所以它们被分为(bc)和(de)

第二步。(de)/f聚集在(def)中,因为(de)与f接近

第三步。(bc)/(def)聚集在(bcdef)中,因为群集(bc)和(def)很接近

第四步。a/(bcdef)被聚集到(abcdef)中,因为它们是目前仅有的两个集群

因此,该过程可以如下所示:

我可以将该算法的实现设想如下:

  • 计算每对项目之间的距离。例如D(a,b),D(a,c),D(a,D)…复杂性将是O(n^2)

  • 按升序排列所有距离。复杂性将是O(n^2log(n^2))

  • 从排序的距离开始迭代并合并。合并两个项目后,将忽略合并距离后涉及两个项目之一的距离。执行此迭代,直到没有要合并的距离。复杂性将为O(n^2)

  • 使用合并的集群返回到步骤1。如果只有一个集群,请停止

  • 但这似乎是相当低的效率。如何改进

    添加
    我突然意识到我的算法很快就会对a和f进行聚类。i、 e.第一轮迭代将导致(bc)、(de)和(af)。这是不正确的。看来我需要一种循序渐进的方法。

    你所描述的看起来非常相似。本文包括一个指向SLINK的指针,它是最佳的,因为它接收大小为N^2的点之间的距离矩阵,并在时间O(N^2)内工作。该方法的另一个吸引力在于,如果您可以按需计算距离,则只需要O(N)存储

    然而,如果你的距离背后有某种结构,因此并非所有的距离模式都是可能的,那么你可以做得更好。这个问题也可以表述为在N个点上寻找最小生成树。如果点位于欧几里德空间中-那么X和Y之间的距离是((X0-Y0)^2+(X1-Y1)^2+…) 您可以考虑这一点以进一步降低成本-请参阅


    您应该知道,有大量不同种类的集群,具有不同的统计优缺点,构建它们所需的时间也不同。如果你不确定你想要哪一个,你会在

    上找到一个介绍,你的问题陈述不清楚。这个图表似乎与你的算法不一致。你能举个例子说明你想做什么吗?