给定样本集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