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

问题描述 投票:0回答:1

问题:在我看来,聚类方法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. 具有来自核心点的入射边缘的每个点与后者在同一簇中

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

merge cluster-analysis dbscan deterministic
1个回答
2
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.