我有十亿个特征向量,我想将它们放入近似的聚类中。例如,从http://scikit-learn.org/stable/modules/clustering.html#clustering看一下这些方法,对我来说,他们的运行时间如何随着数据大小而变化是显而易见的(除了亲和力传播显然太慢了)。
哪种方法适合聚类这么大的数据集?我假设任何方法都必须在O(n)时间内运行。
答案 0 :(得分:3)
K-means的复杂性听起来对您的数据来说是合理的(只有4个组件)。棘手的部分是初始化和簇数量的选择。您可以尝试不同的随机初始化,但这可能非常耗时。另一种方法是对数据进行子采样并运行更昂贵的聚类算法,如Affinity Propagation。然后使用解决方案作为k-means的init,并使用所有数据运行它。
答案 1 :(得分:3)
对于十亿个特征向量,我怀疑自己使用K-means。我相信你可以做到,但这需要很长时间,因此很难调试。我建议首先使用Canopy Clustering 然后应用K-means来降低复杂性和计算量。然后可以使用Map Reduce实现进一步减少这些子集群,以便更快地解决。