一、概述
“Clustering by fast search and find of density peaks”(下面简称CFDP)是在《Science》期刊上发表的的一篇论文,论文中提出了一种非常巧妙的聚类算法-基于密度的聚类算法。虽然文章出来后遭到了许多人的质疑,但是作为一个小白,该算法的思想是非常值得学习的。新聚类算法的基本思想很新颖,且简单明快,值得学习。下面将对该算法的基本原理进行介绍,并对其中的若干实现细节进行分析。
二、算法的基本假设
经典的聚类算法K-means是通过指定聚类中心,再通过迭代的方式更新聚类中心的方式,由于每个点都被指派到距离最近的聚类中心,所以导致其不能检测非球面类别的数据分布。虽然有DBSCAN(density-based spatial clustering of applications with noise)对于任意形状分布的进行聚类,但是必须指定一个密度阈值,从而去除低于此密度阈值的噪音点。
基于以上分析,在CFDP算法是基于这样的假设:聚类中心周围都是密度比其低的点,同时这些点距离该聚类中心的距离相比于其他聚类中心来说是最近的。新算法就是基于这两个假设来识别和查找聚类中心。下面来看该算法的详细计算流程。
三、聚类算法流程
对于每一个数据点,要计算两个量:点的局部密度和该点到具有更高局部密度的点的距离,而这两个值都取决于数据点间的距离。
1、计算局部密度
数据点的局部密度计算有两种方法:Cut-off kernal和Gaussian kernel
- Cut-off kernal
Cut-off kernal的计算公式如下:
关于dc的确定,文章指出,dc可以选择为平均每个点的邻居局部密度为数据总数的1-2%(具体