按特定大小分组的聚类

1 投票
2 回答
4546 浏览
提问于 2025-04-18 06:10

有没有一些聚类算法是专门用来形成特定大小的聚类的?可以把它看作是一种分组算法,而不仅仅是聚类算法。

简单来说,给定n个数据点和固定大小为k的组,目标是根据某些分类标准,找到数据点在这些组中的最佳分配方式,希望能尽量减少每个组内数据点之间的距离。

这个问题看起来和聚类问题很相似,但主要的区别在于,我们关注的是特定的聚类大小,而不是聚类的数量。

2 个回答

0

你提到的问题是一个组合优化问题。首先要搞清楚的是,你需要一个精确的解决方案,还是可以接受一个大致的结果呢?

如果你需要精确的解决方案,有一些专门的研究工作,主要是针对带有不同约束条件的聚类问题。你提到的约束条件可以在这个框架中进行编码。不过,你要知道,这种方法适用于特定大小的数据集。

2

这里有一个关于如何在ELKI中实现这种算法的教程:

http://elki.dbs.ifi.lmu.de/wiki/Tutorial/SameSizeKMeans

另外,可以看看约束聚类算法;虽然这些算法通常只支持“必须连接”和“不能连接”的约束,而不支持大小约束。

你可以尝试类似的修改,先确定每个组的大小,然后随机分配点,接着在目标函数改善的情况下交换聚类成员;这和k-means或k-medoids的做法类似。由于可能会陷入局部最优解,建议多次重启,只保留最好的结果。

还可以参考之前的一些问题,比如: 相等聚类大小的k-means算法变体将n个点分组到k个相等大小的聚类中

撰写回答