领导者聚类算法解释

4

我正在尝试理解这个算法,但找不到合适的文档和解释。是否有人能帮助我理解这个聚类算法呢?


1
请在找到任何参考资料时发布。 - GeorgeOfTheRF
是的,我已经找到了一个。我会发布的,请给我一两天时间。 - Rndp13
H. Spath,《聚类分析--数据降维和对象分类的算法》,Ellis Horwood Limited,英国西萨塞克斯,1980年。 - Till Schäfer
1个回答

15

为了帮助其他人,我将答案发布出来。

Leader算法是一种增量聚类算法,通常用于聚类大型数据集。该算法具有顺序依赖性,根据提供给算法的数据集的顺序可能形成不同的聚类。该算法包括以下步骤。

步骤1:将第一个数据项P1分配给聚类C1。这个数据集将是聚类C1的领袖。

步骤2:现在移动到下一个数据项P2,并计算它与领袖P1之间的距离。如果P2和领袖P1之间的距离小于用户指定的阈值(t),则将数据点P2分配给此聚类(聚类C1)。如果领袖P1和数据项P2之间的距离大于用户指定的阈值t,则形成一个新的聚类C2,并将P2分配给这个新的聚类。P2将成为聚类C2的领袖。

步骤3:对于所有剩余的数据项,计算数据点与聚类领袖之间的距离。如果数据点与任何领袖之间的距离小于用户指定的阈值,则将数据点分配给该聚类。但是,如果数据点与任何聚类的领袖之间的距离大于用户指定的阈值,则创建一个新的聚类,并将该特定数据点分配给该聚类并视为聚类的领袖。

步骤4:重复步骤3,直到所有数据项都分配给聚类。

以下是一个例子,以便更好地理解这个理论。

假设模式位于

A (1, 1),B(1, 2), C(2, 2), D(6, 2), E(7, 2), F(6, 6), G(7, 6)

让数据按顺序A、B、C、D、E、F和G进行处理,并且用户指定的阈值T3A(1,1)是第一个被处理的数据项,它被分配到簇C1并成为C1的领导者。
对于第二个点B,计算它与领导者A之间的距离。使用欧几里得距离公式(Distance(a,b))=√(x-a)²+(y-b)²),我们得到距离为√(1-1)²+(1-2)²=1,这小于用户指定的阈值3,因此将B分配给簇1。
对于第三个点C(2,2),计算领导者C1A(1,1)与点C之间的距离。使用欧几里得公式计算距离为√(1-2)²+(1-2)²=1.41,这小于阈值,因此也将C分配给C1。 A和D之间的距离(√(1-6)²+(1-2)²=5.099)大于用户指定的阈值3,因此创建一个新的簇并将D分配给簇C2。D是这个簇的领导者。
对于点E,计算它与C1的领导者AC2的领导者D之间的距离。由于Distance(D,E)小于用户指定的阈值3,因此将其分配给簇2。
F到C1的领导者A的距离为7.07,到C2的领导者D的距离为4。 这两个距离都超过了阈值,因此将F放入新的簇C3中,并使其成为该簇的领导者。 对于GDistance(A,G)Distance(D,G)Distance(F,G)分别为7.816.411。由于Distance(F,G)小于用户指定的3,因此将其分配给簇3。
可以看出,如果数据按不同的顺序处理,那么聚类中心的领导者甚至整个聚类都会发生变化。如果在 AB 之前出现了 C,那么 C 就会成为 C1 的领导者。如果在 CD 之间的距离小于阈值,并且 D 出现在 C 之前,它就会被归入 C1。如果 A 是领导者,则可能不会发生这种情况。因此,领导算法取决于顺序,根据处理顺序可能会得到不同的结果。

即使我指定半径为1公里,我得到的点可能距离中心点10公里。为什么算法会严格执行这个半径限制?是否有一种方法可以严格执行半径限制? - GeorgeOfTheRF
1
该算法在R中有出色的实现:leaderCluster在CRAN中。有人知道Python的实现吗?scipy.cluster.hierarchy.leaders不是这个leader算法!它是另一个算法。 - Amitai
关于其性能和准确性方面的任何其他评论。我了解它比K均值要快得多,因为没有涉及优化部分。但是它在将数据集分类到聚类中有多有效呢? - Abhi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接