计算k的复杂度意味着算法

时间:2014-08-18 11:42:00

标签: algorithm complexity-theory

我想基于复杂性理论计算k均值算法的复杂性。

我已经从维基百科阅读了k均值的标准算法:Link

3 个答案:

答案 0 :(得分:0)

如果(您还没有理解K-means)http://home.deib.polimi.it/matteucc/Clustering/tutorial_html/kmeans.html

否则

初始化意味着(例如,通过随机选择k个样本)

•迭代:(我次)

(1)将每个点指定为最接近的平均值

(2)将“mean”移动到其集群的中心。

(3)最后,该算法旨在最小化目标函数,在这种情况下是平方误差函数。根据定义,目标函数具有kn的复杂性。如果有m个属性(代替正常的Euclidean函数时间)  计算这个目标函数与m)成正比

K-means的时间复杂度

•让tdist计算两个物体之间的距离

•每次迭代时间复杂度:O(Kntdist)

K = number of clusters (centroids)

n = number of objects

•我给O(IKntdist)

的绑定迭代次数

•对于m维向量:O(IKnm)---------------->你的答案

(m大且质心不稀疏)

K-means的空间复杂性

•存储点和质心

- 矢量模型:O((n + K)m)---------------------->空间复杂度

答案 1 :(得分:0)

k-means的单次迭代的空间和时间复杂度很容易得到(参见Rafed的帖子。)因此,真正的问题是需要多少次迭代才能达到收敛。我认为,这是一个难题,因为它取决于您的数据。 k均值算法是约束优化算法(例如,主要化最小化算法)的示例,因此关于约束优化算法的收敛速率的this paper可能与收敛所需的迭代次数的问题相关。

答案 2 :(得分:0)

K均值聚类的时间复杂度是

(  ×  ×  ×  )
◦  = number of points,
◦  = number of clusters,
◦  = number of iterations,
◦  = number of attributes

所需的存储空间是

(( + ))
◦  = number of points,
◦  = number of clusters,
◦  = number of attributes