K均值聚类算法运行时间和复杂度

时间:2012-11-13 07:02:48

标签: java dataset cluster-analysis k-means sparse-matrix

我编写了一个Java代码来聚类一个巨大的数据集,该数据集有大约100000个x100000个列(稀疏行)。但是数据集是使用稀疏实例创建的,因此它具有稀疏矩阵的结构。

我可以在我的代码中使用3个聚类函数:

JavaML:Kmeans,Weka:SimpleKmeans,Weka:Xmeans

我已经运行了Weka的SimpleKmeans功能,但是它工作了大约9个小时并且群集过程还没有结束。这些函数的估计运行时间是多少,哪一个最适合这个数据集?

1 个答案:

答案 0 :(得分:1)

K-means 不适合稀疏数据

原因是平均值不会稀疏,因此,数据集的平均值异常。更糟糕的是:平均值之间的距离可能小于从实例到平均值的距离

在某些时候你会得到一些结果 - Weka非常缓慢,你可能想要更快地寻找东西;对于这个数据集大小,你可能想要分配给Mahout(但从这里的问题来看,还有其他问题)。 IIRC还通过预计算欧氏长度来加速稀疏矢量的加速技巧 - 但是,结果可能没有意义

问题是K-means寻找最佳的Voronoi单元分区。但是,当稀疏时,您的数据集可能不具有自然的Voronoi单元结构。因此,您需要花费大量时间来找到数据无法拥有的最佳结构