基于快速搜索与寻找密度峰值的聚类方法

来源:互联网 发布:黄山烧饼哪家淘宝好吃 编辑:程序博客网 时间:2024/06/05 18:46

该文章是我对于《Clustering by fast search and find of density peaks》的学习笔记,原论文链接我将在文后发出。

首先要感谢lvxiong1990博文的引导


一、模型对象:需要分类的点集(node set)

二、模型目的:以每一个节点(node)的密度(density)为模型基础,将待分类的点集进行聚类(cluster)

三、模型方法与注释:

step1.计算所有节点(node)间的距离dij。
ps.该距离并没有很明确的给出,只在文章末尾有提到“本文数据取自超立方体,计算dij时运用超立方体的周期边界条件”,这个距离的意思很模糊。本人在用一组真实数据进行聚类计算dij时,运用的是欧式距离[1]计算两个节点之间的距离。

step2.取一个截断距离dc[2]。
ps1.截断距离dc是通过对所有dij进行升序排列,由用户自己设置一个参数百分比,dc为该排列的参数百分比上的数
ex.dij有200个,用户设置参数半分比为5%,则dc为dij升序排列上第10(200×5%=10)个距离。
ps2.其中建议的的截断距离的0.5%~5%。

step3.通过公式(1)计算每一个节点i的密度ρi。
ps1.Χ(x)为一种0-1函数。当x<0时Χ(x)=1,否则为Χ(x)=0。
ps2.ρi(密度)的意义实际上是 与节点i距离小于dc的节点个数(不包含节点i本身)

step4.对于每一个节点i,都找到所有比该节点i密度大的节点j,选取其中最小的dij,记为δi。
ps.其中对于拥有最高密度(ρ)的节点,其δi为所有节点到节点i的最大距离

step5.以ρ(密度)为横坐标,以δ为纵坐标,画二维图,以文中图表为例
ps1.图A为文中数据用例,图B为所画的二维图表,可以看出节点1与节点5分布于右上位置,相对于图A为两个类的中心
ps2.如何在试验中找到上述的中心节点,本人的方法是设置一个ρmin、δmin[2],当某一个节点的ρ、δ分别大于ρmin、δmin时,则该节点为中心点。
ps3.本人带入真实数据时,发现会有重复的中心节点,就是说某一个聚类(cluster)中有多个节点i,j,k,他们拥有相同的ρ和δ,本人的方法是选取其中一个序数最小的节点i,再将其他相同的节点j,k的δ分别修改为dij和dik。完成后再次进行step5。

step6.将剩余点(即非中心点)进行分配。方法:对于每一个剩余点,其所属的聚类是其最邻近(nearest)且密度(density)比其大的节点的聚类。
ex.上图A中,节点1为中心点,节点3是节点1的最邻近,通过图B,已知节点1的密度大于所有节点,则节点1的密度一定大于节点3,于是,节点3与节点1同一类。
ps.step6不断进行迭代直到没有剩余点

step7.聚类的边界问题与孤立点判断。
步骤一:寻找类(cluster)的边界点集合。
定义:如果一个已分配的点与其他类中的点的距离在阶段距离dc内,则该点为边界点。一个类(cluster)中的所有边界点构成边界点集。
步骤二:在每一个类(cluster)中分别找出拥有最高密度的点,其密度设为ρb。
ps.每一个类中都有不同的ρb。
步骤三:删除类中的孤立点。
如果一个类中的点的密度小于ρb,则删除它,将它设为孤立点,否则保留。

[1]各种距离,shiwei408,http://blog.csdn.net/shiwei408/article/details/7602324
[2]一种新型聚类方法,lvxiong1990,http://blog.csdn.net/lvxiong1990/article/details/40540065
文章原文
《Clustering by fast search and find of density peaks》
http://github.com/jeromewang-github/cluster-science2014/raw/master/Clustering_by_fast_search_and_find_of_density_peaks.pdf
再次感谢lvxiong1990博文的引导
0 0
原创粉丝点击