聚类算法之DBSCAN

Posted 何如千泷

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了聚类算法之DBSCAN相关的知识,希望对你有一定的参考价值。

DBSCAN聚类算法

1. DBSCAN算法基本概念

DBSCAN是一种典型的基于密度的聚类算法,基于一组邻域 ( ϵ , M i n P t s ) (\\epsilon, MinPts) (ϵ,MinPts)来描述样本集的紧密程度。其中 ϵ \\epsilon ϵ描述了某一样本的邻域距离阈值, M i n P t s MinPts MinPts描述了某一样本的距离为 ϵ \\epsilon ϵ的邻域中样本个数的阈值。

DBSCAN算法中将数据点分为以下三类:

  • 核心点:若样本 x i x_i xi ϵ \\epsilon ϵ邻域内至少包含 M i n P t s MinPts MinPts样本,即 ∣ N ϵ ( x i ) ∣ ≥ M i n P t s |N_\\epsilon(x_i)| \\geq MinPts Nϵ(xi)MinPts,则称样本点 x i x_i xi为核心点
  • 边界点:若样本点 x i x_i xi ϵ \\epsilon ϵ邻域内包含的样本数目小于 M i n P t s MinPts MinPts,但是它在其他核心点的邻域内,则称样本点 x i x_i xi为边界点
  • 噪音点:既不是核心点也不是边界点的点

DBSCAN算法中还定义了如下概念:

  • 密度直达:若样本点 x j x_j xj在核心点 x i x_i xi ϵ \\epsilon ϵ邻域内,则称样本点 x j x_j xj x i x_i xi密度直达。
  • 密度可达:若在样本点 x i , 1 x_{i,1} xi,1和样本点 x i , n x_{i,n} xi,n之间存在序列 x i , 2 , . . . , x i , n − 1 x_{i,2},...,x_{i,n-1} xi,2,...,xi,n1,且 x i , j + 1 x_{i,j+1} xi,j+1 x i , j x_{i,j} xi,j密度直达,则称 x i , n x_{i,n} xi,n x i , 1 x_{i,1} xi,1密度可达。由密度直达的定义可知,样本点 x i , 1 , x i , 2 , . . . , x i , n − 1 x_{i,1},x_{i,2},...,x_{i,n-1} xi,1,xi,2,...,xi,n1均为核心点
  • 密度连接:对于样本点 x i x_i xi和样本点 x j x_j xj,若存在样本点 x k x_k xk,使得 x i x_i xi x j x_j xj都由 x k x_k xk密度可达,则称 x i x_i xi x j x_j xj密度相连

上图 M i n P t s = 5 MinPts=5 MinPts=5,红色的样本都是核心点,因为其 ϵ \\epsilon ϵ邻域至少有5个样本。黑色的样本是非核心点,其中红色样本邻域内的黑色样本为边界点,其他黑色样本为噪音点。所有核心点密度直达的样本在以红色样本为中心的超球体内,如果不在超球体内,则不能密度直达。图中用绿色箭头连起来的核心点组成了密度可达的样本序列。在这些密度可达的样本序列的 ϵ \\epsilon ϵ邻域内所有的样本相互都是密度相连的。

2. DBSCAN聚类算法流程

输 入 : 样 本 集 D = { x 1 , x 2 , . . . , x n } , 邻 域 参 数 ( ϵ , M i n P t s ) , 样 本 距 离 度 量 方 式 输入:样本集D=\\{x_1,x_2,...,x_n\\},邻域参数(\\epsilon,MinPts),样本距离度量方式 D={x1,x2,...,xn}(ϵ,MinPts)

输 出 : 簇 划 分 C = { C 1 , C 2 , . . . , C k } 输出:簇划分C=\\{C_1,C_2,...,C_k\\} C={C1,C2,...,Ck}

  1. 初始化核心点集合 Ω = ∅ \\Omega=\\varnothing Ω=,初始化聚类簇数 k = 0 k=0 k=0,初始化为访问集合 Γ = D \\Gamma=D Γ=D,簇划分 C = ∅ C=\\varnothing C=

  2. 对于 i = 1 , 2 , . . . , n i=1,2,...,n i=1,2,...,n,按下面步骤找出所有的核心点:

    • 通过距离度量方式,找到样本 x i x_i xi ϵ \\epsilon ϵ邻域子样本集 N ϵ ( x i ) N_\\epsilon(x_i) Nϵ(xi)
    • 如果子样本集样本个数满足 ∣ N ϵ ( x i ) ∣ ≥ M i n P t s |N_\\epsilon(x_i)| \\geq MinPts Nϵ(xi)MinPts,将样本 x i x_i xi加入核心点集合: Ω = Ω ∪ { x i } \\Omega=\\Omega \\cup \\{x_i\\} Ω=Ω{xi}
  3. 如果核心点集合 Ω = ∅ \\Omega=\\varnothing Ω=,结束&#x

    以上是关于聚类算法之DBSCAN的主要内容,如果未能解决你的问题,请参考以下文章

    人工智能系列 之机器学习DBSCAN聚类算法

    DBSCAN密度聚类算法(理论+图解+python代码)

    无监督学习DBSCAN聚类算法原理介绍,以及代码实现

    深度解读 python 实现 dbscan算法

    DBSCAN聚类算法

    聚类算法--DBSCAN