k-means算法详解

k-means算法详解

  • 主要内容
    • k-means算法简介
    • k-means算法详解
    • k-means算法优缺点分析
    • k-means算法改进算法k-means++

1、k-means算法简介
  k-means算法是一种聚类算法,所谓聚类,即根据相似性原则,将具有较高相似度的数据对象划分至同一类簇,将具有较高相异度的数据对象划分至不同类簇。聚类与分类最大的区别在于,聚类过程为无监督过程,即待处理数据对象没有任何先验知识,而分类过程为有监督过程,即存在有先验知识的训练数据集。
  k-means算法中的k代表类簇个数,means代表类簇内数据对象的均值(这种均值是一种对类簇中心的描述),因此,k-means算法又称为k-均值算法。k-means算法是一种基于划分的聚类算法,以距离作为数据对象间相似性度量的标准,即数据对象间的距离越小,则它们的相似性越高,则它们越有可能在同一个类簇。数据对象间距离的计算有很多种,k-means算法通常采用欧氏距离来计算数据对象间的距离。

2、k-means算法详解
  k-means算法以距离作为数据对象间相似性度量的标准,通常采用欧氏距离来计算数据对象间的距离。下面给出欧式距离的计算公式:

dist(xi,xj)=d=1D(xi,dxj,d)2     (1) d i s t ( x i , x j ) = ∑ d = 1 D ( x i , d − x j , d ) 2           ( 1 )
其中, D D 表示数据对象的属性个数。
  k-means算法聚类过程中,每次迭代,对应的类簇中心需要重新计算(更新):对应类簇中所有数据对象的均值,即为更新后该类簇的类簇中心。定义第k个类簇的类簇中心为 Centerk C e n t e r k ,则类簇中心更新方式如下:
Centerk=1|Ck|xiCkxi     (2) C e n t e r k = 1 | C k | ∑ x i ∈ C k x i           ( 2 )
其中, Ck C k 表示第 k k 个类簇,|Ck|表示第 k k 个类簇中数据对象的个数,这里的求和是指类簇Ck中所有元素在每列属性上的和,因此 Centerk C e n t e r k 也是一个含有 D D 个属性的向量,表示为Centerk=(Centerk,1,Centerk,2,...,Centerk,D)
  k-means算法需要不断地迭代来重新划分类簇,并更新类簇中心,那么迭代终止的条件是什么呢?一般情况,有两种方法来终止迭代:一种方法是设定迭代次数 T T ,当到达第T次迭代,则终止迭代,此时所得类簇即为最终聚类结果;另一种方法是采用误差平方和准则函数,函数模型如下:
J=k=1KxiCkdist(xi,Centerk)     (3) J = ∑ k = 1 K ∑ x i ∈ C k d i s t ( x i , C e n t e r k )           ( 3 )
其中, K K 表示类簇个数。当两次迭代J的差值小于某一阈值时,即 ΔJ<δ Δ J < δ 时,则终止迭代,此时所得类簇即为最终聚类结果。
  k-means算法思想可描述为:首先初始化 K K 个类簇中心;然后计算各个数据对象到聚类中心的距离,把数据对象划分至距离其最近的聚类中心所在类簇中;接着根据所得类簇,更新类簇中心;然后继续计算各个数据对象到聚类中心的距离,把数据对象划分至距离其最近的聚类中心所在类簇中;接着根据所得类簇,继续更新类簇中心;……一直迭代,直到达到最大迭代次数T,或者两次迭代 J J 的差值小于某一阈值时,迭代终止,得到最终聚类结果。算法详细流程描述如下:

这里写图片描述

  k-means算法聚类过程示意图,如下:
这里写图片描述
其中,黑色圆点代表类簇中心,白色圆点代表待聚类数据对象。

3、k-means算法优缺点分析
- 优点:
  算法简单易实现;
- 缺点:
  需要用户事先指定类簇个数K
  聚类结果对初始类簇中心的选取较为敏感;
  容易陷入局部最优;
  只能发现球型类簇;

4、k-means算法改进方法
  初始类簇中心的选取,可以通过k-means++算法进行改进。

  • 9
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值