我们都知道k-means算法:复杂度为 O(n * K * I * d)其中:
但我的问题是在动态编程中应用K-means时我无法弄清楚它的复杂性。
简单地使用 DP 的K-means的想法如下:
我试图找到它的伪代码,所以我可以尝试找出复杂性,但我不能。
那么,我怎么能发现它的复杂性呢?它可能是什么?
先谢谢你们的回答。
答案 0 :(得分:1)
您所描述的算法不是动态编程的k-means,而是一种称为agglomerative clustering的层次聚类。通常,凝聚聚类实现需要时间(IIRC)O(n 3 d),其中n是数据点的数量,d是特征的数量。维基百科更深入地探讨了它是如何运作的。
请注意,以这种方式找到的群集不与您通过k-means获得的群集相同。凝聚聚类倾向于产生具有不同属性集的非常不同的聚类。
希望这有帮助!