k-means聚类算法

 

1、聚类

        所谓聚类问题,就是给定一个元素集合D,其中每个元素具有n个可观察属性,使用某种算法将D划分成k个子集,

        要求每个子集内部的元素之间相异度尽可能低,而不同子集的元素相异度尽可能高。其中每个子集叫做一个簇。

        与分类不同,分类是有监督学习,要求分类前明确各个类别,并断言每个元素映射到一个类别,而聚类是标记学习,在聚类前可以不知道类别甚至不给定类别数量,是无监督学习的一种。

         目前聚类广泛应用于统计学、生物学、数据库技术和市场营销等领域,相应的算法也非常的多。本文仅介绍一种最简单的聚类算法——k均值(k-means)算法。

2、k-means算法过程

        k-means算法中的k代表类簇个数,means代表类簇内数据对象的均值(这种均值是一种对类簇中心的描述),因此,k-means算法又称为k-均值算法。k-means算法是一种基于划分的聚类算法,以距离作为数据对象间相似性度量的标准,即数据对象间的距离越小,则它们的相似性越高,则它们越有可能在同一个类簇。数据对象间距离的计算有很多种,k-means算法通常采用欧氏距离来计算数据对象间的距离。

                                                                                dist(x_{i},x_{j})=\sqrt{\sum_{d=1}^{D} (x_{i,d} -x_{j,d})} 

其中,D表示数据对象的属性个数。

        k-means算法聚类过程中,每次迭代,对应的类簇中心需要重新计算(更新):对应类簇中所有数据对象的均值,即为更新后该类簇的类簇中心。定义第k个类簇的类簇中心为Centerk,则类簇中心更新方式如下: 

                                                                              Center_{k}=\frac{1}{\left | C_{k} \right |}\sum_{x_{i}\in C_{K}}dist(x_{i},Center_{k})

其中,K表示类簇个数。当两次迭代J的差值小于某一阈值时,即ΔJ<δ时,则终止迭代,此时所得类簇即为最终聚类结果。 

 

k-means算法思想可描述为:首先初始化K个类簇中心;然后计算各个数据对象到聚类中心的距离,把数据对象划分至距离其最近的聚类中心所在类簇中;接着根据所得类簇,更新类簇中心;然后继续计算各个数据对象到聚类中心的距离,把数据对象划分至距离其最近的聚类中心所在类簇中;接着根据所得类簇,继续更新类簇中心;……一直迭代,直到达到最大迭代次数TT,或者两次迭代JJ的差值小于某一阈值时,迭代终止,得到最终聚类结果。算法详细流程描述如下:

k-means聚类算法_第1张图片

k-means聚类算法_第2张图片

 

2、k-means算法优缺点分析 

 优点

   算法简单易实现; 

 缺点

  需要用户事先指定类簇个数K; 
  聚类结果对初始类簇中心的选取较为敏感; 
  容易陷入局部最优; 
  只能发现球型类簇;

你可能感兴趣的:(k-means聚类算法)