原文出自:https://blog.csdn.net/LilyXFan/article/details/70598509?locationNum=1&fps=1
参考文献:2014年发表在Nature上的文章Clustering by fast search and find of density peaks
核心思想:密度比邻居节点高、与比其密度大的点的距离相对大的点是聚类中心。
1. 两个定义:
1.1.局部密度ρ
:
其中,χ(x)={1,0,x<0otherwise (cutoff kernal)
也可以采用gassion kernal计算:
1.2.密度比i大且距i最近的点与i的距离δ:
特别的,对于密度最大的点,δi=maxj(dij)
2.聚类中心的选择
ρ
散点图观察
3.其他点的分配
其余非聚类中心点,被分配到密度比其大、距离最近的点所属的类(高密度向低密度传播,因此适用于流型)
4.分配的可靠性度量
没有引入noise-signal cutoff.本文为每个聚类定义了border
region(分配到该类但距其他类中点的距离小于dc的点的集合) 对每个聚类,找到其borderregion中点的最大密度ρb
在某个聚类c中,ρi
>ρb,则i会分配到聚类c中,否则i被称为halo(可以被理解为噪声)
5.dc的取值
可以去dc,使得平均邻居数占数据集中所有点的1%-2%
dc的取值具有鲁棒性,dc大,ρ
和选中心点时只比较相对大小,与具体的数值无关
6.cutoff kernal or gaussion kernal
对与小数据集,ρ
时采用gaussion kernal要更好些。
7.实验效果
输入:距离矩阵/相似度矩阵(不一定要是欧式距离),只需要点之间的关系(通过MDS多维尺度变换能直观的展现数据点之间在多种距离上离得多近,还可以产生一个低维的数据点表示,MDS不需要原始数据,只需要衡量点间距离的距离矩阵。)
7.1.Spiral
7.2.Flame
7.3.Aggregation
7.4.Jain
8.思考
Q1.当密度分布不均匀时,聚类效果如何?
效果不好(如Jain数据集),在计算局部密度时并没有考虑局部结构
Q2.重叠群组?
不交叉