我正在寻找一种解决以下问题的算法:
动机不是识别好的聚类,而是将数据集分成高相似性和最小尺寸的组。在medoids周围进行分区并不是开箱即用的,它会产生很多1项集群。分层方法(AGNES,DIANA)也无济于事。
这个问题在某种程度上类似于稳定的婚姻问题:人们试图通过相似性对相邻的项目进行排名。但在这里,一组/一组婚姻中至少有 m 项目。
提前致谢!
答案 0 :(得分:1)
这不是聚类。聚类算法应该告诉您那里没有聚类。您的任务听起来更像是装箱,knapsack以及类似的优化问题。
没有任何进一步的限制,你的问题也没有明确说明。
为什么不尝试贪婪的启发式(这对于类似问题的背包来说很常见)。随机选择任意点,添加足够的点以满足最小尺寸约束。
然后从中选择最远点,再添加足够的点以满足您的最小尺寸。重复(使用距离总和进行排名),直到您不再能够满足最小尺寸。然后将每个剩余点添加到最近的簇中。最后,只要满足最小尺寸,优化是否会将点移动到其他簇?
答案 1 :(得分:0)
虽然这不是典型的群集任务(请参阅@ Anony-Mousse),但您可以修改群集算法以满足您的需求。
您可以关注此Tutorial for Same-Size K-Means,或者只是使用ELKI中的tutorial
包/模块中的此算法(从GitHub构建最新版本,因为我刚修复了一个错误)。
本质上,此算法执行k均值样式最小二乘优化,但所有群集必须具有相同的大小(如果N / k不是整数,则群集大小可能会变化1)。
如果你转到上面的教程并滚动到底部,你可以看到示例结果。