浅谈DBSCAN

一、DBCSAN简介

    DBSCAN是一个基于密度的聚类算法.(他聚类方法大都是基于对象之间的距离进行聚类,聚类结果是球状的簇)。基于密度的聚类是寻找被低密度区域分离的高密度区域。

二、DBSCAN里的概念

    Eps邻域:给定对象半径Eps内的邻域称为该对象的Eps邻域,我们用 表示点p的Eps-半径内的点的集合,即:

                                                     

    核心对象:如果对象的Eps邻域至少包含最小数目MinPts的对象,则称该对象为核心对象。
    边界点:边界点不是核心点,但落在某个核心点的邻域内。
    噪音点:既不是核心点,也不是边界点的任何点
    直接密度可达:给定一个对象集合D,如果p在q的Eps邻域内,而q是一个核心对象,则称对象p 从对象q出发时是直接密度可达的(directly density-reachable)。
    密度可达:如果存在一个对象链 ,对于 ,  是从  关于Eps和MinPts直接密度可达的,则对象p是从对象q关于Eps和MinPts密度可达的      (density-reachable)。
    密度相连:如果存在对象O∈D,使对象p和q都是从O关于Eps和MinPts密度可达的,那么对象p到q是关于Eps和MinPts密度相连的(density-connected)。

三、DBSCAN概念示意

                                                                    
                                                              浅谈DBSCAN_第1张图片


    如图所示,Eps用一个相应的半径表示,设MinPts=3,请分析Q,M,P,S,O,R这5个样本点之间的关系。根据以上概念知道:由于有标记的各点­M、P、O和R的Eps近邻均包含3个以上的点,因此它们都是核对象;M­是从P“直接密度可达”;而Q则是从­M“直接密度可达”;基于上述结果,Q是从P“密度可达”;但P从Q无法“密度可达”(非对称)。类似地,S和R从O是“密度可达”的;O、R和S均是“密度相连”的。DBSCAN目的是找到密度相连对象的最大集合。

四、DBSCAN伪代码

    输入:数据集D,参数MinPts,Eps    输出:簇集合
(1) 首先将数据集D中的所有对象标记为未处理状态
(2) for 数据集D中每个对象p do
(3)     if  p已经归入某个簇或标记为噪声 then
(4)          continue;
(5)     else
(6)          检查对象p的Eps邻域   
(7)          if     包含的对象数小于MinPts then
(8)                  标记对象p为边界点或噪声点;
(9)          else
(10)                 标记对象p为核心点,并建立新簇C, 并将p邻域内所有点加入C
(11)                 for   中所有尚未被处理的对象q  do
(12)                       检查其Eps邻域   , 若  包含至少MinPts个对象,则将 中未归入任何一个簇的对象加入C;
(13)                 end for
(14)         end if
(15)     end if
(16) end for

五、EPS和MinPts的取值问题

                                           浅谈DBSCAN_第2张图片

          思想是这样的对于在一个类中的所有点,它们的第k个最近邻大概距离是一样的,噪声点的第k个最近邻的距离比较远。所以, 尝试根据每个点和它的第k个最近邻之间的距离来选取。这里k也就是MinPts的值取4(是跟去经验来取的),EPS是取图中拐点的值。

六、DBSCAN的优缺点
    优点:基于密度定义,相对抗噪音,能处理任意形状和大小的簇
    缺点:当簇的密度变化太大时,会有麻烦,对于高维问题,密度定义是个比较麻烦的问题





你可能感兴趣的:(浅谈DBSCAN)