一句话概括
它并不显示地产生数据集聚类,而是为聚类分析生成一个增广的簇排序,“使用”一个广泛的参数来克服你使用一组全局参数带来的缺点
基础定义
1、核心距离
样本x∈X对于给定的ϵ和MinPts,使得x成为核心点的最小邻域半径称为x的核心距离,其数学表达如下
2、可达距离
对象y到对象x的可达距离是指x的核心距离和x与y之间欧几里得距离之间的较大值。如果x不是核心对象,x和y之间的可达距离没有意义。
假设邻域半径r=2、, minPts=3,存在A(2,3),B(2,4),C(1,4),D(1,3),E(2,2),F(3,2)
点A为核心对象,在A的E领域中有点{A,B,C,D,E,F},其中A的核心距离为E’=1,因为在点A的E’邻域中有点{A,B,D,E}>3;点F到核心对象点A的可达距离为2(1/2),因为A到F的欧几里得距离2(1/2),大于点A的核心距离1.
流程
算法流程
输入:数据样本D,初始化所有点的可达距离和核心距离为MAX,半径ε和最少点数MinPts
1、建立两个队列,有序队列(核心点及该核心点的直接密度可达点),结果队列(存储样本输出及处理次序)
2、如果D中数据全部处理完,则算法结束,否则从D中选择一个未处理且未核心对象的点,将该核心点放入结果队列,该核心点的直接密度可达点放入有序队列,直接密度可达点并按可达距离升序排列;
3、如果有序序列为空,则回到步骤2,否则从有序队列中取出第一个点;
3.1 判断该点是否为核心点,不是则回到步骤3,是的话则将该点存入结果队列,如果该点不在结果队列;
3.2 该点是核心点的话,找到其所有直接密度可达点,并将这些点放入有序队列,且将有序队列中的点按照可达距离重新排序,如果该点已经在有序队列中且新的可达距离较小,则更新该点的可达距离。
3.3 重复步骤3,直至有序队列为空。
4、判定结果
4.1、从结果队列中按顺序取出点,如果该点的可达距离不大于给定半径ε,则该点属于当前类别,否则至步骤2;
4.2、如果该点的核心距离大于给定半径ε,则该点为噪声,可以忽略,否则该点属于新的聚类,跳至步骤1;
4.3、结果队列遍历结束,则算法结束。