详解聚类算法Kmeans的两大优化——mini-batch和Kmeans++
本文始发于个人公众号: TechFlow ,原创不易,求个关注 今天是 机器学习专题的第13篇 文章,我们来看下Kmeans算法的优化。 在上一篇文章当中我们一起学习了Kmeans这个聚类算法,在算法的最后我们提出了一个问题:Kmeans算法虽然效果不错,但是每一次迭代都需要遍历全量的数据,一旦数据量过大,由于计算复杂度过大迭代的次数过多,会导致 收敛速度非常慢 。 想想看,如果我们是在面试当中遇到的这个问题,我们事先并不知道正解,我们应该怎么回答呢? 还是老套路,我们在回答问题之前,先来分析问题。问题是收敛速度慢,计算复杂度高。计算复杂度高的原因我们也知道了, 一个是因为样本过大,另一个是因为迭代次数过多 。所以显然,我们想要改进这个问题,应该从这两点入手。 这两点是问题的关键点,针对这两点我们其实可以想出很多种优化和改进的方法。也就是说这是一个开放性问题,相比标准答案,推导和思考问题的思路更加重要。相反,如果我们抓不住关键点,那么回答也会跑偏,这就是为什么我在面试的时候,有些候选人会回答使用分布式系统或者是增加资源加速计算,或者是换一种其他的算法的原因。 也就是说分析问题和解决问题的思路过程,比解决方法本身更加重要。 下面,我们就上面提到的两个关键点各介绍一个优化方法。 mini batch mini batch的思想非常朴素,既然全体样本当中数据量太大