k-means的时间复杂度是多少?

时间:2013-09-05 10:41:11

标签: algorithm time-complexity k-means

我正在经历k-means Wikipedia page。基于该算法,我认为复杂度为O(n*k*i)n =总元素,k =集群迭代次数)

所以有人可以解释我维基百科的这句话,这个NP怎么样难?

  

如果kd(维度)已修复,问题可以及时解决O(ndk+1 log n),其中n是要聚类的实体数量

3 个答案:

答案 0 :(得分:17)

这取决于你所谓的 k -means。

找到k-means目标函数的全局最优值的问题

enter image description here

是NP难的,其中Si是群集i(并且有k个群集),xjd - 维度点群集Siμi是群集Si的质心(点的平均值)。

但是,对于tO(t*k*n*d) - 维)点,standard algorithmn次迭代的固定次数d仅需k次,其中{ {1}}是质心(或簇)的数量。这是实际的实现(通常在迭代之间随机重启)。

标准算法仅近似于上述函数的局部最优值,我见过的所有 k -means算法也是如此。

答案 1 :(得分:1)

this answer中,请注意k-means客观公式中使用的i和k-means的时间复杂度分析中使用的i(即迭代所需的迭代)是不同的。

答案 2 :(得分:1)

问题是NP-Hard,因为还有另一个众所周知的NP困难问题,可以将其简化为(平面)k-均值问题。有关更多信息,请查看论文The Planar k-means Problem is NP-hard(由Mahajan等人撰写)。