k-means聚类算法

本文介绍了聚类问题的基本概念,强调了聚类与分类的区别,并重点讲解了k-means算法的工作原理和过程。k-means算法是一种基于划分的无监督学习方法,通过迭代寻找数据对象的最优聚类。算法通过计算数据对象与类簇中心的欧氏距离进行聚类,并不断更新类簇中心直至收敛。然而,k-means算法存在一些局限,如需要预先设定类簇数量K,对初始中心敏感,可能陷入局部最优,且适用于球形类簇。
摘要由CSDN通过智能技术生成

 

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的差值小于某一阈值时,迭代终止,得到最终聚类结果。算法详细流程描述如下:

 

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

 优点

   算法简单易实现; 

 缺点

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

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值