K-means算法目的是将N个p 维向量构成的数据集X划分为K个类簇,使得同一类簇内样本间的相似度高,而不同类簇间样本的相似度低。类簇的中心是该类簇中所有样本的均值。K-means算法采用简单的迭代策略,把数据集划分成K个互不交叠的类簇。该算法具有线性的时间复杂度,且实现简单,因此被广泛应用于各种实际应用问题中。然而,K-means算法的缺点也很明显:1) 随机选择的初始中心对聚类结果有很大影响;2) 类簇个数K值需要人工给定;3) 很难发现非凸形状的簇;4) 对噪音点和离群点敏感
1.传统K-means算法
K-means算法中,每一个样本i必须且仅归并至某一个类簇,依据是使样本i到其所在类簇的中心(类簇中样本的均值)的距离最小。其基本思想就是:迭代的寻找一种划分,使得聚类误差平方和最小。这一过程通常被形式化的定义为数学规划问题P。
其中,