您的位置:首页 > 其它

k-means聚类复杂度探讨

2018-03-22 23:07 357 查看
k-means聚类一种无监督的学习方法(也就是不需要人为告诉计算机如何处理)


一般流程:
先随机设定k个聚类中心(此处的k决定了最终的k类)
然后计算n个点到k个点的距离,单个图像与图像距离计算的复杂度为d(涉及到sift的可以自己查阅一下复杂度多少,这里不一一赘述。)
聚类完成之后,我们需要进一步迭代。首先计算聚的k个类的聚类中心,然后用找到的k个聚类中心进行再次聚类。当聚类中心不再变动时,聚类停止。设此时迭代次数为t次。
因此可以看出,k-means聚类复杂度为O1=k*n*d*t
此处为了说明k-means聚类的优点,引入比较无脑的全比较算法
也就是n个点和n个点进行比较,比较的单个复杂度为d
因此我们的计算量为O2=(n^2)*d
O2/O1=n/kt
一般我们所做的分类问题涉及到的数量级都是上万的,n非常的大,而我们的kt相比来说就小很多了。虽然我们的精度没有全比较法找到最接近的另一点,但是在类别差距不是很大时,我们对k进行适当选择,是可以得到我们想要的分类结果的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息