按特定大小分组的聚类
有没有一些聚类算法是专门用来形成特定大小的聚类的?可以把它看作是一种分组算法,而不仅仅是聚类算法。
简单来说,给定n个数据点和固定大小为k的组,目标是根据某些分类标准,找到数据点在这些组中的最佳分配方式,希望能尽量减少每个组内数据点之间的距离。
这个问题看起来和聚类问题很相似,但主要的区别在于,我们关注的是特定的聚类大小,而不是聚类的数量。
2 个回答
0
你提到的问题是一个组合优化问题。首先要搞清楚的是,你需要一个精确的解决方案,还是可以接受一个大致的结果呢?
如果你需要精确的解决方案,有一些专门的研究工作,主要是针对带有不同约束条件的聚类问题。你提到的约束条件可以在这个框架中进行编码。不过,你要知道,这种方法适用于特定大小的数据集。
2
这里有一个关于如何在ELKI中实现这种算法的教程:
http://elki.dbs.ifi.lmu.de/wiki/Tutorial/SameSizeKMeans
另外,可以看看约束聚类算法;虽然这些算法通常只支持“必须连接”和“不能连接”的约束,而不支持大小约束。
你可以尝试类似的修改,先确定每个组的大小,然后随机分配点,接着在目标函数改善的情况下交换聚类成员;这和k-means或k-medoids的做法类似。由于可能会陷入局部最优解,建议多次重启,只保留最好的结果。
还可以参考之前的一些问题,比如: 相等聚类大小的k-means算法变体 和 将n个点分组到k个相等大小的聚类中