我正在经历k-means Wikipedia page。基于该算法,我认为复杂度为O(n*k*i)
(n
=总元素,k
=集群迭代次数)
所以有人可以解释我维基百科的这句话,这个NP怎么样难?
如果
k
和d
(维度)已修复,问题可以及时解决O(ndk+1 log n)
,其中n
是要聚类的实体数量
答案 0 :(得分:17)
这取决于你所谓的 k -means。
找到k-means目标函数的全局最优值的问题
是NP难的,其中Si
是群集i
(并且有k
个群集),xj
是d
- 维度点群集Si
和μi
是群集Si
的质心(点的平均值)。
但是,对于t
(O(t*k*n*d)
- 维)点,standard algorithm的n
次迭代的固定次数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等人撰写)。