算法原理
kmeans的计算方法如下:
1 随机选取k个中心点
2 遍历所有数据,将每个数据划分到最近的中心点中
3 计算每个聚类的平均值,并作为新的中心点
4 重复2-3,直到这k个中线点不再变化(收敛了),或执行了足够多的迭代
时间复杂度:O(Ink*m)
空间复杂度:O(n*m)
其中m为每个元素字段个数,n为数据量,I为迭代个数。一般I,k,m均可认为是常量,所以时间和空间复杂度可以简化为O(n),即线性的。
判停标准:
kmeans算法的迭代优化过程一直持续直到满足某个判停标准,如果在这一轮迭代中:
1、训练样本所属类别不再发生改变或者只有很少几个训练样本改变;
2、目标函数变化很小或者聚类中心向量变化很小;
3、达到最大迭代次数。
满足其中一个条件,即可停止训练。如果满足条件1或2,说明算法已经收敛。
K值的选取:
随着聚类数K的增大,目标函数呈减小趋势。但是另一方面K值的增大会导致存储空间和计算量的增加。那么如何选择合适的K值呢?
1.经验法:根据问题的性质和先验知识,人为指定聚类的数目。
2.爬山法:但当聚类数目到达一定值以后,聚类数目的增加目标函数的变化很小,这个拐点可以认为是最优聚类数目。