algorithm - 最小尺寸的组中项目的最佳分组/聚类

标签 algorithm cluster-analysis stable-marriage

我正在寻找解决以下问题的算法:

  • 给定:一组项目及其相似度矩阵。
  • 目标:将这些项目分组为最小大小 m
  • 的“集群”
  • 条件:
    • 数据集中没有类簇结构,如图 Figure 1
    • 无论如何,一组中的项目应该彼此相似。因此,全局相似度会很高。

这样做的动机不是识别好的集群,而是将数据集拆分为相似度高且大小最小的组。围绕中心点进行分区并不是开箱即用的,它会产生很多 1-item-clusters。分层方法(AGNES、DIANA)也无济于事。

这个问题在某种程度上类似于稳定婚姻问题:一个人试图根据相似性对相邻项目进行排名。但是在这里,一组/一段婚姻中至少有 m 项。

提前致谢!

Figure 1.

最佳答案

这不是聚类。聚类算法应该告诉您那里没有聚类。你的任务听起来更像是装箱,knapsack以及对我来说类似的优化问题。

没有任何进一步的限制,您的问题也未指定。

您为什么不尝试贪心启发法(这通常用于解决类似背包的问题)。随机选择任意点,添加足够的点以满足最小尺寸限制。

然后选择距此最远的点,并再次添加足够的点以满足您的最小尺寸。重复(使用距离之和进行排名),直到您不再满足最小尺寸。然后将每个剩余点添加到最近的每个簇中。最后,只要满足最小大小,优化是否将移动点传递给其他集群?

关于algorithm - 最小尺寸的组中项目的最佳分组/聚类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37589168/

相关文章:

algorithm - 广度优先搜索有什么用?

python - 重新排序矩阵元素以反射(reflect)朴素python中的列和行聚类

java - 使用大型地理数据集在 ELKI 上运行 OPTICS 集群

algorithm - 稳定婚姻的变种——总是有稳定的 "solution"吗?

algorithm - 为什么执行 n union find (union by size) 操作的时间复杂度是 O(n log n)?

algorithm - 在位数组中查找缺失的数字

algorithm - 我的算法的运行时间是多少?

java - 在 Java 中使用 ELKI 进行预计算聚类评估

perl - 如何在 Perl 中实现 Gale-Shapley 稳定婚姻算法?