博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
聚类算法(DBSCAN)
阅读量:3728 次
发布时间:2019-05-22

本文共 1530 字,大约阅读时间需要 5 分钟。

1.DBSCAN是一种基于密度的聚类算法,它假设类别可以通过样本分布的紧密程度决定

2.引用领域概念来描述样本的紧密程度,数学符号记为(ϵ, MinPts)

3.算法核心思想是由密度可达关系导出的最大密度相连的样本集合为最终聚类的一个类别

4.DBSCAN是一种不稳定的算法,某些与核心对象均小于ϵ领域的样本采取先来后到方式确定类别

5.算法适用于非凸数据集,能够检测异常点;对密度不均匀、距离相差大的样本效果不佳

6.OPTICS算法是对DBSCAN算法的改进,它先对样本进行排序再生成簇

这一篇我们介绍基于密度的聚类算法——DBSCAN,全称是具有噪声的基于密度的聚类方法,英文是Density-Based Spatial Clustering of Applications with Noise。它的思想是假定类别可以通过样本分布的紧密程度决定,同一类别的样本,他们之间的紧密相连的,在该类别任意样本周围不远处一定有同类别的样本存在。

首先,我们要对密度进行介绍.

密度的定义

我们用一组邻域来描述样本集的紧密程度的,参数(ϵ, MinPts)用来描述邻域的样本分布紧密程度。其中,ϵ描述了某一样本的邻域距离阈值,MinPts描述了某一样本的距离为ϵ的邻域中样本个数的阈值。

这里有五个核心的定义,我们举个例子说明。假设样本集D=(x1,x2,...,xm),则DBSCAN具体的密度描述定义如下:

  •  ϵ-邻域

对于xj∈D,其ϵ-邻域包含样本集D中与xj的距离不大于ϵ的子样本集:

 

这个子样本集的个数记为|Nϵ(xj)|

  • 核心对象

对于任一样本xj∈D,如果其ϵ-邻域对应的Nϵ(xj)至少包含MinPts个样本:

xj是核心对象 

  • 密度直达

如果xi位于xj的ϵ-邻域中,且xj是核心对象,则称xi由xj密度直达。注意反之不一定成立

  • 密度可达

对于xi和xj,如果存在样本样本序列p1,p2,...,pT,满足p1=xi,pT=xj, 且pt+1由pt密度直达,则称xj由xi密度可达

密度可达满足传递性,但不满足对称性。此时序列中的传递样本p1,p2,...,pT−1均为核心对象。

  • 密度相连

对于xi和xj,如果存在核心对象样本xk,使xi和xj均由xk密度可达,则称xi和xj密度相连。密度相连关系满足对称性。

举个例子,如果MinPts=3,对于下图,5个红色的点均为核心对象,蓝色的点由左上角红色的点密度直达,与其余红色的点密度可达,与绿色的点密度相连;而对于绿色的点,它由右下角红色的点密度直达,与其余红色的点密度可达,与蓝色点密度相连。

DBSCAN聚类思路

有了密度的概念,我们就能理解DBSCAN的聚类思想了,它的核心是由密度可达关系导出的最大密度相连的样本集合为最终聚类的一个类别(簇)

其算法流程为:

要强调一点的是,DBSCAN的算法不是完全稳定的算法。某些样本可能到两个核心对象的距离都小于ϵ,但是这两个核心对象由于不是密度直达,又不属于同一个聚类簇,这时候采取先来后到的方法确定样本的类别。

总结一下DBSCAN算法的优缺点,它的优点是可以适用非凸数据集,能够发现异常点;它的缺点体现在应对密度不均匀、样本距离相差很大的数据集效果不好;样本集规模较大时,聚类时间较长

最后拓展一下,OPTICS算法是对DBSCAN算法的改进。它不直接生成簇,而是对样本进行排序,从这个排序可以得到各种邻域半径和密度阈值时的聚类结果。

参考资料:

https://www.cnblogs.com/pinard/p/6208966.html

https://mp.weixin.qq.com/s/1SOQZ3fsiYtT4emt4jvMxQ

你可能感兴趣的文章
点击高级系统设置无反应
查看>>
IDEA中git分支的使用
查看>>
git查看/修改用户名,密码(填坑帖)
查看>>
注解@Retention的作用
查看>>
Java注解之 @Target、@Retention、@Documented简介
查看>>
@Order 注解
查看>>
@interface的用法
查看>>
LoggerFactory.getLogger用法
查看>>
ThreadLocal使用方法
查看>>
线程run方法执行顺序
查看>>
多线程执行顺序以及run方法的调用
查看>>
ThreadPoolTaskExecutor使用详解
查看>>
使用idea将普通项目转换为maven项目
查看>>
Shiro安全框架入门笔记(一)
查看>>
IntelliJ idea 自动导入忽略大小写设置
查看>>
使用JdbcRealm时,UnauthorizedException: Subject does not have permission
查看>>
SpringBoot2.0集成Shiro
查看>>
如何给老婆解释什么是RPC
查看>>
Dubbo总结(一)
查看>>
抽空看看
查看>>