浅谈聚类

Posted jimchen1218

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈聚类相关的知识,希望对你有一定的参考价值。

常用聚类方法一般有以下几种:

基于距离的聚类算法:

  1、KMEANS

     流程:

      1)确定要聚类的数量K,并随机初始化中心点;

      2)通过计算当前点与每个组中心之间的距离,对每个数据点进行分类,然后归到与距离最近的中心组中;

      3)基于迭代后的结果,计算每一类内所有点的平均值;

      4)迭代这些步骤,或直到组中心在迭代之间变化不大;

      优点:

           速度快,计算量少,线性复杂性为o(n)

      缺点:

           须事先确定聚类的簇数量

      结论:

           当数据集中的聚类结果是非球状结构时,该聚类算法的聚类效果不理想。

 

基于密度的空间聚类算法:

  2、MeanShift

    基于滑窗的算法,尝试找到数据点密集的区域。

    通过感兴趣区域内的数据密度变化计算中心点的漂移向量,从而移动中心点进行下一次迭代,直到到达密度最大处(中心点不变)。从每个数据点出发都可以进行该操作,统计出现在感兴趣区域内数据的次数,该参数将在最后作为分类的依据。

    优点:可自动决定类别的数目。

    步骤:

           1)在未被标记的数据点中随机选择一个点作为起始中心点center;

           2)找出以center为中心半径为radius的区域中出现的所有数据点,认为这些点同属于一个聚类C,同时在该聚类中记录数据点出现的次数加1;

           3)以center为中心点,计算从center开始到集合M中每个元素的向量,将这些向量相加,得到向量shift;

           4)center=center+shift,即center沿着shift方向移动,移动距离为||shift||;

           5)重复步骤2,3,4,直到shift很小,记得此时的center。注意,这个迭代过程中遇到的点都应该归类到簇C;

           6)如果收敛时当前簇C的center与其它已经存在的簇C2中心的距离小于阈值,那么把C2与C合并,数据点出现次数也对应合并。否则把C作为新的聚类;

           7)重复1,2,3,4,5直到所有点都被标记为已访问;

           8)分类:根据每个类,对每个点的访问频率,取访问频率最大的那个类,作为当前点集的所属类。

   通过在数据集中寻找被低密度区域分离的高密度区域,将分离出的高密度区域作为一个独立的类别。

 

  3、DBSCAN(Density-based Spatial Clustering of Applications with Noise)

   将具有足够密度的区域划分为簇,并在具有噪声的空间数据库中发现任意形状的簇,将簇定义为密度相连的点的最大集合。

   将数据点分为三类:

       1)核心点:样本xi的邻域内至少包含Minpts个样本,则称样本点为核心点

       2)边界点:样本xi的邻域内包含的样本数目小于MinPts,但是它在其他核心点的邻域内,则称样本点xi为边界点。

       3)噪音点:即不是核心点也不是边界点的点。

    有两个超变量:一个半径EPS,另一个是指定的数目MinPts。

       三个基本概念:

          密度直达(如果满足样本点p《NEPS(q)且NEPS(q)》=MinPts)

          密度可达(如果存在一系列样本点p1,...,pn(p1=q,pn=p),使得对于i=1,...,n-1,样本点pi+1可由样本点pi密度可达

          密度相连(如果存在一个样本点o,使得p与q均由样本点o密度可达)

      算法流程:

          1)根据给定的邻域参数EPS和minPts确定所有的核心对象

          2)对每一个核心对象,选择一个未处理过的核心对象,找到由其密度可达的样本生成聚类‘簇‘

          3)重复以上过程

以上是关于浅谈聚类的主要内容,如果未能解决你的问题,请参考以下文章

浅谈聚类算法(K-means)

Kmean聚类聚类中的***术语

聚类聚类算法(K均值层次聚类DBSCAN)的对比与评估

spark机器学习-聚类

物以类聚 AND 聚类算法

物以类聚——浅述k-means聚类算法