【发布时间】:2014-12-10 11:41:40
【问题描述】:
例如,我在 100 万个数据点上运行 k-means 算法。每个点都是 128 维的,我想要 1000 个簇。 Wikipedia 告诉我它的复杂度是 n^(dk+1)log(n),其中 d 是维数,k 个簇和 n 个实例。
知道了这一点,我如何才能估计它在我的 8-Gb RAM、2.6GHz Intel Core i5 MacBook Pro 上运行多长时间?计算这个估计值的最佳方法是什么?有没有办法从理论上计算它,或者我应该在较小的集合上做一些实验,看看需要多长时间?
我真的很想在花费数小时或数天而不知道何时停止之前进行粗略估计。
非常感谢你的帮助!我真的很感激:)。
附言。我正在使用 python 的 scipy kmeans
【问题讨论】:
-
1M^128k大约是10^768000。与宇宙年龄<10^27纳秒相比。显然,找到最佳解决方案是遥不可及的。你必须接受一些近似值。 -
scipy 是一个实用的库,它可能不使用引用复杂度的算法。在这种情况下,实验可能是可行的方法。
标签: performance algorithm k-means