我需要对一组二维数据进行一些聚类分析(我可能会在此过程中添加额外的维度)。
分析本身将构成输入可视化的数据的一部分,而不是输入到另一个过程(例如 Radial Basis Function Networks )。
为此,我想找到一组主要“看起来正确”的集群,而不是阐明一些隐藏的模式。
我的直觉是 k-means这将是一个很好的起点,但找到正确数量的集群来运行算法将是有问题的。
我要解决的问题是:
如何确定“最佳”值 k 这样形成的簇是稳定的并且可以通过视觉验证?
问题:
- 假设这不是 NP 完全问题,找到一个好的 k 的时间复杂度是多少。 (可能以运行 k-means 算法的次数报告)。
- k-means 是解决此类问题的良好起点吗?如果是这样,您会推荐哪些其他方法。一个由轶事/经验支持的具体示例是 maxi-bon。
- 您会推荐哪些捷径/近似值来提高性能。
最佳答案
对于聚类数量未知的问题,凝聚层次聚类通常是比 k-means 更好的方法。
Agglomerative clustering产生一个树结构,离树干越近,聚类的数量越少,所以很容易扫描所有数量的聚类。该算法首先将每个点分配给它自己的簇,然后重复将两个最接近的质心分组。跟踪分组顺序允许对任意数量的可能集群进行即时快照。因此,当您不知道需要多少组时,最好使用此技术而不是 k-means。
还有其他层次聚类方法(请参阅 Imran 评论中建议的论文)。聚合方法的主要优点是有许多现成的实现可供您使用。
关于algorithm - 确定 k 最近邻的最佳 k,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1701136/