【机器学习】聚类算法——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值、初始聚类中心? -----(详见各种论文,对此讨论很多。。。)

 

初始聚类中心的选取:

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

粒子群算法:迭代


转载于:https://www.cnblogs.com/DianaCody/p/5425632.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值