k-means算法、性能及优化
一、k-means算法简介
k-means是用来解决著名的聚类问题的最简单的非监督学习算法之一。
该过程遵循一个简易的方式,将一组数据划分为预先设定好的k个簇。其主要思想是为每个簇定义一个质心。设置这些质心需要一些技巧,因为不同的位置会产生不同的聚类结果。因此,较好的选择是使它们互相之间尽可能远。接下来将数据中的每个点归类为距它最近的质心,距离的计算可以是欧式距离、曼哈顿距离、切比雪夫距离等。如果所有的数据点都归类完毕,那么第一步就结束了,早期的聚合过程也相应完成。此时,我们根据上一步所产生的结果重新计算k个质心作为各个簇的质心。一旦获得k个新的质心,我们需要重新将数据集中的点与距它最近的新质心进行绑定。一个循环就此产生。作为循环的结果,我们发现k个质心逐步改变它们的位置,直至位置不再发生变化为止。
k-means算法是数值的、非监督的、非确定的、迭代的。
二、k-means算法流程
1、从所有的观测实例中随机取出k个观测点,作为聚类的中心点;然后遍历奇遇的观测点找到各自距离最近的聚类中心点,并将其加入该聚类中。这样,我们便有了一个初始的聚类结果,这是一次迭代过程。
3、如此重复步骤2,直到前后两次迭代得到的聚类中心点不再发生变化为止。