【问题标题】:Create N-Clusters out of Min spanning tree?从最小生成树中创建 N-Clusters?
【发布时间】:2021-08-07 03:26:57
【问题描述】:

假设我用 M 个节点从 Graph 中创建了一个最小生成树。是否有创建 N 个集群的算法。

我正在寻找一些链接,例如我最终得到 N 个集群并标记它们,即给定一个节点 X,我可以查询它属于哪个集群。


我的想法是,一旦我拥有 MST,我切割 MST 的顶部/最大 M-N 个边缘,我将获得 N 个集群?

我的逻辑对吗?

【问题讨论】:

  • 是的。当你从一棵树上移除一条边时,你的树数增加了 1。

标签: algorithm cluster-analysis cut hierarchical-clustering minimum-spanning-tree


【解决方案1】:

一棵树是图的边的一个(非常稀疏的)子集,如果您根据它们进行切割,则您没有考虑到图中的(可能的)绝大多数边。

基于您想要使用 M(inimum)ST 算法来创建集群的事实,您似乎想要最小化位于由集群引起的 n 路切割中的边集。使用 MST 作为具有非常相似权重边的图的代理可能会产生糟糕的结果。

图聚类是一个深入研究的话题,您是否考虑过使用现有的库来完成此任务?如果您坚持实现自己的算法,我建议您以 spectral clustering 为起点,因为它会毫不费力地产生不错的结果。


根据评论中的反馈进行编辑:

如果您的主要瓶颈是相似度矩阵,则应考虑以下因素:

  1. 研究稀疏矩阵/图形表示,同时实现谱聚类之类的东西,这可能会比单链接聚类提供更可靠的结果

  2. 从您认为不重要的相似性矩阵中研究修剪边缘。如果剪枝与相似矩阵的稀疏表示相结合,这应该会产生与 MST 方法相当的性能,同时提供平滑的连续统一体来调整性能与质量。

【讨论】:

  • 切割MST边缘相当于单链接聚类。
  • 我必须自己实现聚类 .. scipy 中的股票等等 .. 无法处理数百万个数据点 .. 主要是因为它们使用需要太多 RAM 的相似矩阵...这就是为什么选择先建MST,算法似乎更可行
  • 我仍然坚持我的意见,除非您有非常特殊的数据类型,否则单链接聚类的结果可能会是垃圾。尝试永远不会有坏处(除了可能会浪费时间和精力。)
【解决方案2】:

这对我来说似乎是个好方法。你问它是否“正确”——我不能说,因为我不知道你还有什么其他未说明的标准。您实际上已经说过您想要创建 N 个集群 - 您也可以通过丢弃 MST 来实现,将顶点 1 放在第一个集群中,将顶点 2 放在第二个集群中,...,将顶点 N-1 放在第 (N-1) 个,以及第 N 个剩余的所有顶点。

如果您使用 Kruskal's algorithm 构建 MST,只要只剩下 N 个组件,您只需提前停止算法即可实现您的建议。

【讨论】:

  • 我认为这也是一种选择,如果我早点停止,它将节省时间和内存。我正在研究所有 3 种基本算法……更容易并行化的一种!
猜你喜欢
  • 2018-10-14
  • 2017-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-23
  • 2011-12-30
相关资源
最近更新 更多