如何合并不同聚类方法的聚类结果?

How to merge clustering results for different clustering approaches?

问题:在我看来,聚类方法c()的一个基本属性是我们是否可以合并结果c(A)c(B) 通过两个聚类的某些函数 f() 以某种方式我们不必再次应用完整的聚类 c(A+B) 而是执行 f(c(A),c(B)) 并且仍然以同样的结果:

c(A+B) == f(c(A),c(B))

我想有些c()有这个属性的必要条件是确定性,也就是它内部处理的顺序与结果无关。但是,这可能还不够。

如果能有一些参考,在哪里查找哪些集群方法支持这个,以及在各自的情况下什么是好的 f(),那将是非常好的。


示例: 目前我正在考虑 DBSCAN,如果我允许边界点同时属于多个集群(不连接它们),它应该是确定性的:

  1. 如果一个点在它的 eps 邻域中,则可以从另一个点到达
  2. 核心点是至少有 minPts 可达的点
  3. 一条从每个核心点到所有可到达的点
  4. 从核心点进入edge的每个点都与后者在同一个簇中

如果您错过了噪声点,则假设每个核心节点都到达自身(自反性),然后我们将噪声点定义为大小为 1 的簇。边界点是非核心点。之后如果我们想要分区,我们可以将多个集群中的边界点随机分配给其中一个。我认为这与方法本身无关。

据推测,唯一有效的聚类是单链接层次聚类,因为从 A x A 和 B x B 中删除的边对于查找连接集的 MST 不是必需的。

精确到DBSCAN,你遇到的问题是核心点属性在你添加数据的时候会发生变化。所以 c(A+B) 可能有核心点,这些点在 A 或 B 中都不是核心。这可能导致集群合并。 f() 应该需要重新检查所有数据点,即重新运行 DBSCAN。虽然您可以利用子集的核心点必须是整个集合的核心,但您仍然需要找到邻居和缺失的核心点。