1.基本思想
聚类属于无监督学习,以往的回归、朴素贝叶斯、SVM等都是有类别标签y的,也就是说样例中已经给出了样例的分类。而聚类的样本中却没有给定y,只有特征x,比如假设宇宙中的星星可以表示成三维空间中的点集。聚类的目的是找到每个样本x潜在的类别y,并将同类别y的样本x放在一起。比如上面的星星,聚类后结果是一个个星团,星团里面的点相互距离比较近,星团间的星星距离就比较远了。
K-means算法是将样本聚类成k个簇(cluster),具体算法描述如下:
1、 随机选取k个聚类质心点(cluster centroids)为。 2、初始分类 对于每一个样例i,计算其应该属于的类 3、 重复下面过程直到收敛 { 重新分配:对于样例i,假设将其分给其它集合。判断集合时最小的代价情况,将样例i分 给新集合 质心重计算。对于每一个类j,重新计算该类的质心 } |
2.性能分析
算法本质是面向非凸代价函数优化下的贪婪下降求解算法,仅仅能获得局部最优解。聚类思想比较简单明了,并且聚类效果也还算可以,算是一种简单高效应用广泛。隐含假设,数据呈高斯球分布。可以实现对数据进行白化操作用以获得较好的效果。但是数据存在非凸形状的聚类时,只要找到数据间合适的偏差度量方法,仍然可以保证算法收敛。
(1)算法简单,但是计算量很大。
(2)离群点的影响较大。
(3)不恰当的初始聚类中心机器影响结果。其初始类数较难判断。
(4)开源库较多。Weka,SAS中对应算法为FastClus.
参考: