聚类算法之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,n−1,且 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,n−1均为核心点
- 密度连接:对于样本点 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}
-
初始化核心点集合 Ω = ∅ \\Omega=\\varnothing Ω=∅,初始化聚类簇数 k = 0 k=0 k=0,初始化为访问集合 Γ = D \\Gamma=D Γ=D,簇划分 C = ∅ C=\\varnothing C=∅
-
对于 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}
-
如果核心点集合 Ω = ∅ \\Omega=\\varnothing Ω=∅,结束
以上是关于聚类算法之DBSCAN的主要内容,如果未能解决你的问题,请参考以下文章