k-means聚类复杂度探讨

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进行适当选择,是可以得到我们想要的分类结果的。

时间复杂度图片引自https://www.jianshu.com/p/d0e1e740310f

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值