K均值算法是非常常用的一种聚类算法,用于将给定的样本集分成指定数目的聚类。具体算法如下:
- 为每个聚类确定一个初始的聚类中心,这样k个聚类存在k个聚类中心
- 将样本集中的每一个样本按照最小距离原则 分配到k个聚类中的某一个
- 使用每个聚类中所有样本的均值作为新的聚类中心
- 如果聚类中心有变化则重复2、3步直到聚类中心不再变化为止
- 最后得到的k个聚类中心就是聚类的结果
K均值算法是一种贪心算法,因而不一定能得到最优化结果,不过它是必定收敛的。
K均值算法的难点是如何 找到合适的K值,可行的办法之一是找到Schwarz Criterion的最小值来找到合适的K。
Distortion + λ(#parameters)logR = J + λmklogR
m=#dimensions k=#centers R=#records