密度聚类——DBSCAN
- 基本概念
- 邻域:对于任意给定样本x和距离ε,x的ε邻域是指到x距离不超过ε的样本的集合;
- 核心对象:若样本x的ε邻域内至少包含minPts个样本,则x是一个核心对象;
- 密度直达:若样本b在a的ε邻域内,且a是核心对象,则称样本b由样本x密度直达;
- 密度可达:对于样本a,b,如果存在样例p1,p2,…,pn,其中,p1=a,pn=b,且序列中每一个样本都与它的前一个样本密度直达,则称样本a与b密度可达;
- 密度相连:对于样本a和b,若存在样本k使得a与k密度可达,且k与b密度可达,则a与b密度相连。
- 聚类原理
- 由密度可达关系导出最大密度相连的样本集合(聚类,一个或多个核心)。
- 一个核心对象,则簇中其他非核心对象都在这个核心对象的ε邻域内;
- 多个核心对象,那么任意一个核心对象的ε邻域内一定包含另一个核心对象(否则无法密度可达);
- 这些核心对象以及包含在它ε邻域内的所有样本构成一个类。
- 聚类步骤
- 首先,任意选择一个没有被标记的核心对象,找到它的所有密度可达对象,这些核心对象以及它们ε邻域内的点被标记为同一个类;
- 然后,再找一个未标记过的核心对象,重复上边的步骤,直到所有核心对象都被标记为止。
- 算法流程
- 聚类细节
- 异常处理:不存在任何核心对象邻域内的点;
- 距离度量:
- 数据量较少:对于样本数较少的场景,可以应付。
- 数据量较大:一般采用KD树或者球树来快速搜索最近邻。
- 样本选取:样本到两个核心对象的距离都小于ε,依据来后到原则。
- 聚类评价
- DBSCAN算法优点:
- 不需要事先指定聚类个数,且可以发现任意形状的聚类;
- 对异常点不敏感,在聚类过程中能自动识别出异常点;
- 聚类结果不依赖于节点的遍历顺序;
- DBSCAN缺点:
- 对于密度不均匀,聚类间分布差异大的数据集,聚类质量变差;
- 样本集较大时,算法收敛时间较长;
- 调参较复杂,要同时考虑两个参数;
参考博客:https://www.cnblogs.com/PJQOOO/p/11838288.html