首页 > 解决方案 > 如何合并不同聚类方法的聚类结果?

问题描述

问题:在我看来,聚类方法的一个基本属性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-neighborhood 中,则它可以从另一点到达
  2. 核心点是至少 minPts 可达的点
  3. 一条从每个核心点延伸到从它可以到达的所有点
  4. 从核心点传入边缘的每个点都与后者在同一个簇中

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

标签: mergecluster-analysisdbscandeterministic

解决方案


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

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


推荐阅读