K-means算法定义
k-平均算法(英文:k-means clustering)源于信号处理中的一种向量量化方法,现在则更多地作为一种聚类分析方法流行于数据挖掘领域。k-平均聚类的目的是:把n个点(可以是样本的一次观察或一个实例)划分到k个聚类中,使得每个点都属于离他最近的均值(此即聚类中心)对应的聚类,以之作为聚类的标准。这个问题将归结为一个把数据空间划分为Voronoi cells的问题。
算法描述
已知观测集{x1,x2,...xn},其中每个观测都是一个d-维实向量,k-平均聚类要把这n个观测划分到k个集合中(k≤n),使得组内平方和最小。公式可以表示为:
其中i为均值。
算法执行
1、初始化
从观测值中随机选取k个质心。通常使用的初始化方法有Forgy和随机划分(Random Partition)方法 。
Forgy方法随机地从数据集中选择k个观测作为初始的均值点;而随机划分方法则随机地为每一观测指定聚类,然后运行“更新(Update)”步骤,即计算随机分配的各聚类的图心,作为初始的均值点
2、分配
将每个观测分配到聚类中,使得组内平方和(WCSS)达到最小。
每一个观测值分配到其中的一个聚类中。
3、更新
对于上一步得到的每一个聚类,以聚类中观测值的图心,作为新的均值点。
算术平均是最小二乘估计,所以这一步同样减小了目标函数组内平方和(WCSS)的值。
把“分配”步骤视为“期望”步骤,把“更新”步骤视为“最大化步骤”,可以看到,这一算法实际上是广义期望-最大化算法(GEM)的一个变体。
参考连接
https://zh.wikipedia.org/wiki/K-%E5%B9%B3%E5%9D%87%E7%AE%97%E6%B3%95