抱歉这个奇怪的问题,但问题是我正在使用Yael library运行kmeans。
我得到了大约9,000,000个128维度的向量,我将获得1,000,000个质心。它运行在24核CPU上,现在运行了很多个小时。这是我第一次运行带有大量数据的kmeans,我想知道它什么时候结束,而不是等待它完成并稍后知道。
所以问题是,是否可以近似何时完成?
答案 0 :(得分:2)
你确定吗
A)算法适合您的问题? k-means建立在许多假设之上,特别是你的集群具有相同的大小
B)你的参数有意义吗?任何使用的“聚类”是否为“1000000”?是否有意义?这些集群中有多少最终只包含0或1个观测结果?
天真的k-means实现(99%天真)将使用O(n*k*i)
,其中n
是观察数量,k
是群集数量i
是收敛前所需迭代次数。所以显然它严重缩放到1000000个集群。
但更糟糕的是:k-means将在最坏的情况下测试O(k^n)
分配。通常要少得多,但显然这个数字高度依赖于集群的数量。所以集群越多,通常需要的迭代次数才会收敛!