0

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

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

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

这个问题在某种程度上类似于稳定婚姻问题:尝试通过相似性对相邻项目进行排名。但在这里,一组/一婚至少有m个物品。

提前致谢!

图1。

4

2 回答 2

2

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

如果没有任何进一步的限制,您的问题也未明确说明。

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

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

于 2016-06-02T16:35:05.277 回答
0

虽然这不是典型的聚类任务(请参阅@Anony-Mousse),但您可以修改聚类算法以满足您的需求。

您可以按照相同大小 K-Means 的教程进行操作,或者简单地使用tutorialELKI 中的包/模块中的此算法(从 GitHub 构建最新版本,因为我刚刚修复了那里的错误)。

本质上,该算法执行 k-means 风格的最小二乘优化,但所有集群必须具有相同的大小(如果 N/k 不是整数,则集群大小可能相差 1)。

如果您转到上面的教程并滚动到底部,您可以看到示例结果。

于 2016-06-03T07:39:58.123 回答