DBSCAN算法

一、DBSCAN算法概念介绍

DBSCAN算法是密度聚类算法,所谓密度聚类算法就是说这个算法是,根据样本的紧密程度来进行聚类。下面来介绍一些DBSCAN中的概念。

要根据样本中的数据密度进行聚类,首先定义样本中数据密度大的地方应该怎样表示,很直观的想法就是如果A样本周围有5个样本,那么我们认为A样本是密度很高的。那你可能会说,为啥不是10个呢,周围是离A样本多远啊。这两个是我们算法中要调整的超参数,得我们自己调整。这两个参数引出了两个概念:

ε-邻域:Xj是一个样本点,距离Xj不超过ε的范围。就是衡量离A样本有多远

核心对象:如果Xj的ε-邻域内至少含有Minpts个样本,则Xj是一个核心对象。A样本周围有Minpts个对象就说明他是密度高的,就是一个核心对象。

现在我们算法中密度高的地方可以认为是一个核心对象,但是数据中肯定有很多个核心对象,如下图所示,但A和B这两个对象应该认为是同一处密度高的地方,我们需要让核心对象合并形成一处密度高的地方。

那么就要引入三个概念,让核心对象之间发生关系。

密度直达:如果B样本位于A样本的ε-邻域内,则称AB密度直达。如上图,核心对象A圈内的点都和A密度可达。

密度可达:有ABC三个样本,A样本和B样本密度直达,B样本和C样本密度直达,A和C之间不是密度直达,则称A样本和C样本密度可达。

密度相连:有ABC三个样本,如果B样本和AC样本均密度可达,则称A和C密度相连。

下面引用西瓜书的插图,来说明三个概念的关系。

有了上面的概念之后,我们要说明在DBSCAN中那些样本可以看成一个类(也称簇)。即最大的密度相连的样本集合。

二、DBSCAN算法原理

标记所有对象为unvisited

Do
随机选择一个unvisited对象p
把p标记为visited

if p的ε-邻域中至少有MinPts个对象
    创建一个新的簇C,并把p添加到C中
    令N为p的ε-邻域邻域中的对象集合
     
    for N中每个点p
        如果p是unvisited

            标记p为unvisited
              
            if p的ε-邻域至少含有MinPts个对象,把这些对象加入到N
     
            如果p还不是任何簇的成员,把p加入到C中。
    End
    输出C
Else 标记p为噪声
until 没有标记为unvisited的对象

三、DBSCAN算法的优缺点

优点:1>不像k-means算法事先指定要聚成几个类,算法会自动聚类。

             2>擅长找到离群点。

缺点:1>高维数据聚类有些困难

            2>只有两个参数。MinPts和ε,但是参数难以选择,参数对结果影响很大。

           3>Sklearn中效率很慢

这是一个聚类可视化的链接,可以帮助大家理解算法工作过程。

参考资料:1>周志华-西瓜书

                  2>唐宇迪-机器学习视频

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值