聚类分析学习(二)DBSCAN算法学习

DBSCAN是一种基于密度的聚类算法,不需预先设定簇的数量,能发现任意形状的簇并处理噪声点。它通过ε邻域和MinPts参数定义核心对象,找到密度相连的最大集合。算法对输入参数敏感,但适用于密度不均匀的数据集。文章介绍了DBSCAN的基本概念、指导思想、步骤、算法复杂度以及在matlab、python和C++中的实现。
摘要由CSDN通过智能技术生成

一.DBSCAN算法简介

         1.DBSCAN算法是一个比较有代表性的基于密度的聚类算法

       2.与划分和层次聚类方法不同,它将簇定义为密度相连的点的最大集合,能够把具有足够高密度的区域划分为簇,并可在噪声的空间数据库中发现任意形状的聚类。

         3.基于密度的聚类算法的优点

            (1)可以发现任意形状的簇。

           划分方法和层次方法旨在发现球状簇,它们很难发现任意形状的簇。为了发现任意形状的簇,我们把簇看作数据空间中被稀疏区域分开的稠密区域,即基于密度的聚类算法可发现任意形状的簇,这对于有噪声点的数据有重要作用。

         (2)可以处理噪声点。 (对噪声数据不敏感)

         (3)一次扫描。

         (4)需要密度参数作为终止条件。

       4.基于密度的聚类算法的依据是数据集在空间上的稠密程度,无需事先设定簇的数量。因此特别适合对于未知内容的数据集进行聚类。 

        5.传统基于中心的密度定义

        数据集中特定点的密度通过该点E半径内点的个数估计。显然,密度依赖于半径E。

二.算法中的定义

    1.Ε邻域:给定对象半径为Ε内的区域称为该对象的Ε邻域。

    2.核心对象:如果给定对象Ε邻域内的样本点数大于等于MinPts,则称该对象为核心对象。

    3.直接密度可达:对于样本集合D,如果样本点q在p的Ε邻域内,并且p为核心对象,那么对象q从对象p直接密度可达。

   4.密度可达:对于样本集合D,给定一串样本点p1,p2….pn,p= p1,q= pn,假如对象pi从pi-1直接密度可达,那么对象q从对象p密度可达。

    5. 密度相连:存在样本集合D中的一点o,如果对象o到对象p和对象q都是密度可达的,那么p和q密度相连。

   6.密度可达是直接密度可达的传递闭包,并且这种关系是非对称的。密度相连是对称关系。

     DBSCAN目的是找到密度相连对象的最大集合。

  (关于floyd和传递闭包的概念理解参见博客:https://blog.csdn.net/qq_41658955/article/details/81558339

     (1)传递闭包:设R是X上的二元关系,如果另一个关系R1满足:R1是传递的,R是R1的子集,对于任何可传递关系R11如果有R是R11的子集,就有R1是R11的子集。则称R1是R的传递闭包。即对于一个关系的一个最小的传递关系。

      (2)现在我们来根据(1)中传递闭包的概念推理证明一下:密度可达是不是直接密度可达的传递闭包。(结论A)

             假设R1=对象q到p密度可达;R=对于一系列样本点p1,p2,...,pn,pi到pi-1直接密度可达,p=p1,q=pn。那么我们假设要证明的结论A成立。根据(1)必然满足:

              (a)q到p密度可达关系是传递的。(满足)

            (b)直接密度可达是密度可达的子集。(满足)

            (c)对于任何可传递关系A,有pi到pi-1 直接密度可达是A的子集,则有q到p密度可达是A的子集。

【密度可达非对称的含义是:假设两个对象p和q并且p到q密度可达,但是不一定满足q到p也密度可达,称为非对称关系。

密度相连对称的含义:假设两个对象p和q并且p到q密度相连,一定满足q到p也密度相连,称为对称关系。】

    7.噪声:一个基于密度的簇是基于密度可达性的最大的密度相连对象的集合,不包含在任何簇中的对象被称为噪声。

    8.边界点:该点不是核心对象,但是落在核心对象的某个邻域内,被称为边界点。【根据这个定义,噪声即不是核心对象也不是和核心点的对象】

三.算法指导思想和步骤

(1)指导思想

      密度聚类算法的指导思想是:只要一个区域中点的密度超过某个域值,就把它加到与之相邻的聚类中去。

      对于簇中的每个对象,在给定半径E的邻域中至少要包含最小数目(minPts)个对象。

(2)算法的输入输出:

        1.输入:输入包含n个对象的数据库D,扫描半径eps和最小包含点数minPts。

        2.输出:所有生成的簇,达到密度要求。   

(3)DBSCAN需要二个参数: 扫描半径 (eps)和最小包含点数(minPts)。

任选一个未被访问(unvisited)的点开始,找出与其距离在eps之内(包括eps)的所有附近点。

    1.如果 附近点的数量 ≥ minPts,则当前点与其附近点形成一个簇,并且出发点被标记为已访问(visited)。 然后递归,以相同的方法处理该簇内所有未被标记为已访问(visited)的点,从而对簇进行扩展。

    2.如果 附近点的数量 < minPts,则该点暂时被标记作为噪声点。

    3.如果簇充分地被扩展,即簇内的所有点被标记为已访问,然后用同样的算法去处理未被访问的点。

四.具体算法描述

(1)检测数据库中尚未检查过的对象p,如果p未被处理(归为某个簇或者标记为噪声),则检查其邻域,若包含的对象数不小于minPts,建立新簇C,将其中的所有点加入候选集N

(2)对候选集N 中所有尚未被处理的对象q,检查其邻域,若至少包含minPts个对象,则将这些对象加入N;如果q 未归入任何一个簇,则将q 加入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值