一种基于密度峰值的聚类算法
1.引入
2014年Science刊发了一篇标题为Clustering by fast search and find of density peaks的文章,文章中介绍了一种基于密度峰值的聚类算法。
传统的聚类算法k-means,通常不适用于非球形的簇。这里所谓的球形簇是根据k-means算法基本原理得到的。为了解释这个所谓的球形簇,在这里简单的回忆一下k-means算法。k-means算法的基本原理就是距离近的应该被分到一个类别。因此我们可以说,k-means其实是基于距离的聚类算法。在算法开始之前,我们需要指定聚类的类别个数k的值,指定完k值之后需要初始化聚类的中心点,然后计算要聚类点与中心点的聚类,取离其最近的中心点为该点所属类别的中心点,直到所有的点都分完类。然后,对于每个类,用每个类所有点的均值作为新的中心点,继续聚类算法,直到迭代到了指定的轮数,或者所有类别的中心点固定了。从k-means算法的执行过程,我们可以看到,如果同类点的分布不是球状,k-means算法便无能为力。
而本文提出的基于密度峰值的算法则可以解决k-means的不适用于非球状簇分类的问题。同时,本文提出的方法不需要指定类别的数量。
2.基于密度峰值聚类算法的基本思想
基于密度峰值聚类算法的基本思想与基于密度算法DBSCAN的基本思想类似,都是通过某个点周围的点来判断某个点是不是属于某个类。而不同于基于密度算法DBSCAN的通过密度直达、密度可达、密度相连三种基本关系判断两个点是否属于同类的思想,基于密度峰值聚类算法的思想要简单的多。对于每个类的中心点,基于密度峰值聚类算法认为,中心点周围的点相比较该类的其他点都要多,同时,本类的中心点应该距离其他类中心点要足够远。
3.算法的具体介绍
1. 局部密度
在这里插入图片描述
2. 距离
δ i = { m i n ( d i j ) , s . t . ρ j > ρ i m a x ( d i