K-mean算法属于非监督类算法,模型相对简单。
目标函数 J = sum(dj*I{xi属于j类})
算法:
1、初始化K个点;
2、样本xi,到k个点的距离为
dk = ||xi - uk||;
j = argmin(j) dk;
xi属于cj;
3、更新参数:
uk = sum(xi*I{xi属于cj})/sum(I{xi属于cj});
重复2和3,终止条件J的变化很小或者uk变化很小。
整个算法结束了,但是结果是局部最优,初始值很重要,所以很多时候会多次初始化重复计算,找到一个稳定的解。
缺点与优点:
优点:
1、模型简单、速度快;
2、对处理数据,具有很强的伸缩性和高效性;
缺点:
1、K的值很难确定;
2、对噪声很敏感;