我想基于复杂性理论计算k均值算法的复杂性。
我已经从维基百科阅读了k均值的标准算法:Link
答案 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