基于密度峰值的聚类算法

本文介绍了DPCA算法,这是一种基于密度的聚类方法。它克服了DBSCAN的一些问题,鲁棒性强。文中阐述了局部密度、高局部密度点距离等概念,说明了聚类中心的选取方法和算法聚类过程,还提及确定聚类中心的注意点、截断距离的选择及划分点到类簇的可靠性判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.引言

    2014年6⽉,Alex Rodriguez和Alessandro Laio在Science上发表了⼀篇名《Clustering by fast search and find of density peaks》的文章,提供了⼀种简洁而优美的聚类算法,是⼀种基于密度的聚类方法,可以识别各种形状的类簇,并且参数很容易确定。它克服了DBSCAN中不同类的密度差别大、邻域范围难以设定的问题,鲁棒性强。

    在文章中提出的聚类方法DPCA算法(Desity Peaks Clustering Algorithm)基于这样⼀种假设:对于⼀个数据集,聚类中心被⼀些低局部密度的数据点包围,而且这些低局部密度点距离其他有高局部密度的点的距离都比较大。

2.几个概念

  • 局部密度ρi\rho_iρi的定义如下:

在这里插入图片描述
    其中
在这里插入图片描述
    其中dcd_cdc是⼀个截断距离, 即到对象iii的距离小于dcd_cdc的对象的个数。由于该算法只对ρi\rho_iρi的相对值敏感,所以对dcd_cdc的选择是比较稳健的。

  • 高局部密度点距离δi\delta_iδi,其定义为:
    在这里插入图片描述
    即在局部密度高于对象iii的所有对象中,到对象iii最近的距离。 而极端地,对于密度最大的那个对象,我们设置δ=max(dij)\delta=max(d_{ij})δ=max(dij) ; 只有那些密度是局部或者全局最大的点才会有远大于正常值的高局部密度点距离。

3.聚类中心的选取

那些有着比较⼤的局部密度ρi\rho_iρi和很大的高局部密度δi\delta_iδi的点被认为是簇的中心,而高局部密度距离δi\delta_iδi较大但局部密度ρi\rho_iρi较小的点是异常点;确定簇中心之后,其他点按照距离已知簇的中心最近进行分类,也可以按照密度可达的方法进行分类。

4.DPCA算法聚类过程

这个聚类实例摘⾃作者的PPT讲演,在⼀个⼆维空间中对数据进行聚类,具体步骤如下:

  • 1.首先计算每个点的局部密度ρi\rho_iρi,如图,ρ1=7\rho_1=7ρ1=7,ρ8=5\rho_8=5ρ8=5,ρ10=4\rho_10=4ρ10=4
    在这里插入图片描述

  • 2.然后对于每个点iii计算在局部密度高于对象iii的所有对象中,到对象iii最近的距离δi\delta_iδi
    在这里插入图片描述

  • 3.对每⼀个点,绘制出局部密度ρi\rho_iρi与高局部密度点距离δi\delta_iδi的关系散点图
    在这里插入图片描述

  • 4.图上的异常点即为簇中心。如图所示,1和10两点的局部密度和高局部密度距离都很大,将其作为簇中心。
    在这里插入图片描述

  • 5.将其他的点分配给距离其最近的有着更⾼的局部密度的簇。(Assign each point to the same cluster of its nearest neighbor of higher density)
    在这里插入图片描述
    左图是所有点在⼆维空间的分布,右图是以ρ\rhoρ为横坐标,以δ\deltaδ为纵坐标绘制的决策图。容易发现,1和10两个点的ρi\rho_iρiδi\delta_iδi都⽐较大,作为簇的中⼼点。26、27、28三个点的δi\delta_iδi也比较大,但是ρi\rho_iρi比较小,所以是异常点。

5.几个注意点

  • 这里我们在确定聚类中心时,没有定量地分析,而是通过肉眼观察,包含很多的主观因素。但是有些情况下无法用肉眼来判断。不过,对于那些在决策图中无法用肉眼判断出聚类中心的情形,作者在文中给出了⼀种确定聚类中心个数的提醒:计算⼀个将ρ\rhoρ值和δ\deltaδ值综合考虑的量:
    在这里插入图片描述
    显然γ\gammaγ值越大,越有可能是聚类中心。因此,只需对其降序排列,然后从前往后截取若干个数据点作为聚类中心就可以了。 我们把排序后γ\gammaγ在坐标平面(下标为横轴,γ\gammaγ值为纵轴)画出来,由图可见,非聚类中心的值比较平滑,而从非聚类中心过渡到聚类中心时有⼀个明显的跳跃,这个跳跃用肉眼或数值检测应该可以判断出来。作者在文末还提到,对于人工随机生成的数据集,γ\gammaγ的分布还满足幂次定律,即logγlog\gammalogγ ,且斜率依赖于数据维度。
    在这里插入图片描述

  • 截断距离dcd_cdc的选择
    ⼀种推荐做法是选择dcd_cdc,使得平均每个点的邻居数为所有点的1%~2%。参数dcd_cdc的选取,从某种意义上决定这聚类算法的成败,取得太大或者太小都不行:如果取得太大,将使得每个数据点的ρ\rhoρ值都很大以致区分度不高,极端情况是取 dc&gt;dmaxd_c&gt;d_{max}dc>dmax,则所有的数据点都归属于⼀个Cluster了;如果取得太小,同⼀个Cluster中就可能被拆分成多个,极端情况是dc&lt;dmind_c&lt;d_{min}dc<dmin,则每个数据点都单独称为⼀个Cluster。作者将比例锁定在数据量的1%~2%,也是基于肉感数据集的经验值。

  • 选定簇中心之后
    在聚类分析中, 通常需要确定每个点划分给某个类簇的可靠性. 在该算法中, 可以首先为每个类簇定义⼀个边界区域(border region), 亦即划分给该类簇但是距离其他类簇的点的距离小于dcd_cdc的点(这个区域由这样的数据点构成:它们本身属于该Cluster,但在与其距离不超过dcd_cdc的范围内,存在属于其他Cluster的数据点). 然后为每个类簇找到其边界区域的局部密度最大的点, 令其局部密度为ρh\rho_hρh. 该类簇中所有局部密度大于ρh\rho_hρh的点被认为是类簇核心的⼀部分(亦即将该点划分给该类簇的可靠性很大), 其余的点被认为是该类簇的光晕(halo), 亦即可以认为是噪音. 图例如下
    在这里插入图片描述
    A图为生成数据的概率分布,B、C⼆图为分别从该分布中生成了4000,1000个点。D,E分别是B,C两组数据的决策图(decision tree),可以看到两组数据都只有五个点有比较大ρi\rho_iρi的 和很大的δi\delta_iδi,这些点作为类簇的中心,在确定了类簇的中心之后,每个点被划分到各个类簇(彩色点),或者划分到类簇光晕(黑色点),F图展示的是随着抽样点数量的增多,聚类的错误率在逐渐下降,说明该算法是鲁棒的。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值