异常检测(无实例、偏概念)-聚类算法DBSCAN篇

kmean算法是基于距离的聚类算法,然而基于距离的聚类算法的聚类结果是球状的簇,当数据集中的聚类结果是非球状结构时,基于距离的聚类算法的聚类效果并不好。

与基于距离的聚类算法不同的是,基于密度的聚类算法可以发现任意形状的聚类。在基于密度的聚类算法中,通过在数据集中寻找被低密度区域分离的高密度区域,将分离出的高密度区域作为一个独立的类别。

一、

DBSCAN就是一种基于密度的聚类算法,该算法将密度大小达标的区域自动划分为簇,因此无需设定簇数量。如果一个样本不在高密度区域,则被判定为异常值

DBSCAN的思路非常简单,有两个参数,一个是ε,一个是mininum points。

该算法将数据点分为三类:

  1. 核心点:若样本xi的ε邻域内至少包含mininum points个样本(不包括xi),则xi为核心点。
  2. 边界点:若样本xi的ε领域内包含样本少于mininum points个,但它在其他核心点的邻域内,则xi为边界点。
  3. 噪音点:既不是核心点,也不是边界点。

异常检测(无实例、偏概念)-聚类算法DBSCAN篇_第1张图片 

首先定义DBSCAN的三个密度概念:

  1. 密度直达directly density-reachable:如果样本点p在点q的邻域内,且点q邻域内的样本点个数大于minpts(即q是核心点),则称基于参数(ε,minpts),p到q是密度直达的。
  2. 密度可达density-reachable:如果存在p1....pn(其中p1=q,pn=p)使得对于i=1,...,n-1,样本点pi+1可由pi密度直达时,称p和q是密度可达的。
  3. 密度相连density-connected:如果存在样本点o,使得p和q均由样本点o密度可达。

异常检测(无实例、偏概念)-聚类算法DBSCAN篇_第2张图片 

        从上图可以很容易看出理解上述定义,图中MinPts=4,红色的点都是核心对象,因为其e-邻域至少有4个样本。黑色的样本是非核心对象。所有核心对象密度直达的样本在以红色核心对象为中心的超球体内,如果不在超球体内,则不能密度直达。图中用绿色箭头连起来的核心点组成了密度可达的样本序列,即a与b密度直达,b与c密度直达,则a与c密度可达。在这些密度可达的样本序列的e-邻域内所有的样本相互都是密度相连的。

  • 算法步骤
  1. 首先任选一个点,找到该点的eps邻域内的全部点。如果eps邻域内所有点的个数小于minpts(不包括该点本身),则该点被标记为噪声。如果大于等于minpts,则该点被标记为核心样本, 并被分配到一个新的簇标签;
  2. 然后访问该点在eps邻域内的所有邻点。如果它们还未被分配到某个簇,则将自己刚创建的新簇标签分配给它们。 同时如果它们还是核心样本,则依次访问它们的邻点的情况,以此类推。 簇会逐渐增大,直到在簇的eps距离内没有更多核心样本为止。
  3. 选取另一个未被访问过的点,重复前两个步骤。

异常检测(无实例、偏概念)-聚类算法DBSCAN篇_第3张图片

minpts=3;

  • 参数选择

eps设置的太小,会导致太多的点被标记为噪声;eps设置的过大,会导致簇数目太少、簇内不够紧凑;

  • 优缺点
  1. 优点:对异常点不敏感(异常点不会过多地影响聚类效果),可以划分任意复杂形状的簇;
  2. 缺点:eps的选择对聚类效果影响很大,需要人工选择;

你可能感兴趣的:(异常检测,聚类,算法,机器学习)