给定样本集
D=x1,x2,⋯,xm
, “k均值”算法针对聚类所得簇划分
C=C1,⋯,Ck
最小化平方误差
E=∑i=1K∑x∈ci||x−ui||2
其中 ui=1|ci|∑x∈cIx 是簇 ci 的均值向量。上式在一定程度上刻画了簇内样本围绕簇均值向量的紧密程度,E值越小则簇内样本相似度越高
算法
输入:样本集 D=x1,x2,⋯,xm ;
聚类数K,
从D中随机选择K个样本作为初始均值向量 {μ1,⋯,μk}
令 ci=∅(1≤i≤K)
repeat
for j=1,2,…,m do
计算样本 xj 与各均值向量 μi(1≤i≤k) 的距离: dji=||xi−μi||2 ;
根据距离最近的均值向量确定 xi 的簇标记: λj=argmini∈{1,2,⋯,k}dji ;
将样本 xj 划入相应的簇: cλj=cλj⋃{xj} ;
end for
for i =1,2,…,k do
计算新均值向量: μ′i=1|Ci|∑x∈cix
if μ′i≠ui then
μi=μ′i
end if
end for
until 当前均值向量均为更新
输出:划分簇 C=c1,c2,…,ck