【问题标题】:How to merge clustering results for different clustering approaches?如何合并不同聚类方法的聚类结果?
【发布时间】:2019-07-09 13:59:27
【问题描述】:

问题:在我看来,聚类方法c() 的一个基本属性是我们是否可以通过两个聚类的某个函数f() 组合结果c(A) 和c(B)在某种程度上,我们不必再次应用完整的集群 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 的集群。边界点是非核心点。之后,如果我们想要一个分区,我们可以将多个集群中的边界点随机分配给其中一个。我认为这与方法本身无关。

【问题讨论】:

    标签: merge cluster-analysis dbscan deterministic


    【解决方案1】:

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

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

    【讨论】:

    • 是的,我想我也有类似的想法,尤其是很容易忘记核心点属性可以改变。我想如果一个人为分布式计算创建分区,一个人会这样做,这样就不会发生(虽然没有阅读文献)。对于我研究过相似度计算的案例,eps-neighborhood 是最昂贵的部分(我认为即使在复杂度方面),所以我正在考虑更新相似度矩阵并将到目前为止计算的可达性的传递闭包添加到' edge' 矩阵(收敛速度更快),但内存效率不高...
    • DBSCAN 根据会议结果有并行版本。但它们并没有正式使用 c(A) 和 c(B),而是不对称的。
    • 我必须问这些并行版本中的每一个的问题是:给定两个样本 x,y,其中 x=y,x 在 A 中而 y 在 B 中是否会发生?我想通常如果分区是故意的,这不会发生,但我必须检查不同的方法。
    • 这个问题通常不适用于方法,因为它们不会对数据进行简单的分区。这里要做的显而易见的事情是使用不相交的分区 a、b 进行查询,但使用 整个 数据作为查询结果。然后保证核心属性是正确的,并且您只计算一次。然后您可以组装正确的 DBSCAN 结果。但它是 f(cmodified(a,everything),cmodified(b,everything)) 不是 f(c(a),c(b))。
    猜你喜欢
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    • 1970-01-01
    相关资源
    最近更新 更多