k-means原理
给定的样本,按照样本距离的大小,将样本划分为k个簇,让簇内的点尽可能紧密的连在一起,簇间的的距离尽可能的大
假设簇的划分为(C1,C2.....CK)。目标最小化的平方误差E
其中ui是簇Ci的均值向量。质心
算法流程
- K值的选取,交叉验证
- 初始化质心。对最后的聚类结果影响比较大。质心不能太近
- 从样本中选出k个初始的质心向量
- 计算周围样本点到质心的聚类。将距离较小额度覅归入所对应的类别。
- 重新计算各个簇的质心
- 回到2
- 知道达到最大的迭代次数或者K个质心的向量都没有发生变化,最后输出簇的划分结果
优化
- K-Means++ 。首先选取一个点。计算样本点和该点的距离,选取最大作为第二个聚类中心。依次2迭代,直到选出K个聚类中心点
- elkan K-means 。根据三角形的性质,优化距离的计算
- 大样本优化Mini Batch K-Means 用小样本做K-means。解决样本量大的问题。采用不同的随机采样得到聚类簇,选择其中最优的聚类簇
优点
- 原理简单、实现容易、收敛速度快
- 聚类效果良好
- 算法的解释性强
- 调参的簇数K
缺点
- K值的选取不好把握
- 难收敛
- 数据不均横、异常点影响大
- 迭代,局部最优