【机器学习】聚类算法——K均值算法(k-means)

一、聚类

     1.基于划分的聚类:k-means、k-medoids(每个类别找一个样本来代表)、Clarans

     2.基于层次的聚类:(1)自底向上的凝聚方法,比如Agnes

                                        (2)自上而下的分裂方法,比如Diana

     3.基于密度的聚类:Obsacn、Optics、Birch(CF-Tree)、Cure

     4.基于网格的方法:Sting、WaveCluster

     5.基于模型的聚类:EM、SOM、Cobweb

 

二、k-means算法

流程伪代码:

************************************************************

创建k个点作为起始质心(通常是随机选择)

当任意一个点的簇分配结果发生改变时

                   对数据集里每个数据点

                            对每个质心

                                      计算每个质心与数据点之间的距离

                            将数据点分配到与其最近的簇

                   对每个簇,计算簇中所有点的均值并将均值作为质心

************************************************************

 

k-means是使下式最小:


三、性能

优点:

         1.容易实现,简单快速

         2.对于大数据集,该算法是相对可伸缩且高效率的,复杂度大约是O(nkt),其中n为所有对象数目,k是簇的数目,t是迭代次数(通常k<<n)

         3.算法尝试找出使平方误差函数最小的k个划分,当簇是密集的、球状或团状的,且簇与簇之间区别明显时,聚类效果较好

 

缺点:

         1.容易局部收敛,大规模数据集上收敛较慢

         2.k-means只能在簇的平均值被定义的情况下才能使用,且对有些分类属性的数据不适合

         3.对初值敏感不同初值可能有不同聚类结果

         4.不适合发现非凸面形状的簇,或者大小差别很大的簇

         5.对于噪声孤立点数据敏感,少量的该类数据能对平均值产生极大影响

 

四、k-means如何确定k

如何确定k值、初始聚类中心? -----(详见各种论文,对此讨论很多。。。)

 

初始聚类中心的选取:

直方图法:根据样本空间自身特征进行区域划分

粒子群算法:迭代


posted @ 2014-11-03 08:49  DianaCody  阅读(768)  评论(0编辑  收藏  举报