机器学习笔记之密度聚类——DBSCAN方法
- 引言
- 基本思想
- 概念介绍
- 算法过程
- 完整算法描述
- DBSCAN \text{DBSCAN} DBSCAN的优点和缺陷
引言
本节将介绍密度聚类—— DBSCAN \text{DBSCAN} DBSCAN方法。
对于其他聚类任务的笔记:
- K-Means \text{K-Means} K-Means聚类算法:传送门
- 谱聚类算法 ( Spectral clustering ) (\text{Spectral clustering}) (Spectral clustering):传送门
- 高斯混合模型 ( Gaussian Mixture Model,GMM ) (\text{Gaussian Mixture Model,GMM}) (Gaussian Mixture Model,GMM):传送门
基本思想
DBSCAN \text{DBSCAN} DBSCAN全称 Density-Based Spatial Clustering of Application with Noise \text{Density-Based Spatial Clustering of Application with Noise} Density-Based Spatial Clustering of Application with Noise。是一种基于密度的聚类算法 ( Density-Based Clustering ) (\text{Density-Based Clustering}) (Density-Based Clustering)。而这里的密度是指样本分布的紧密程度。而密度聚类的思想假设:样本如果属于同一类别(簇),那么该类别内的样本点之间紧密相连。
何为紧密相连 ? ? ?自然是指样本之间的距离足够小,小到没有办法将其划分给其他类别。我们通过找到一个初始位置后,通过查找与其紧密相连的样本,得到一个聚类簇;再次选择初始位置,反复执行上述操作,直到所有数据均有其归属簇为止。
概念介绍
DBSCAN \text{DBSCAN} DBSCAN既然属于聚类任务,说明它依然属于无监督学习任务的范畴。它一共包含两个参数:
- ϵ \epsilon ϵ:被称作邻域半径,它描述了某样本邻域的距离阈值;
- MinPts \text{MinPts} MinPts:它描述了某样本,其距离为 ϵ \epsilon ϵ的邻域中样本数量的阈值。
给定数据集 D = { x ( i ) } i = 1 N ; x ( i ) ∈ R p \mathcal D = \{x^{(i)}\}_{i=1}^N;x^{(i)} \in \mathbb R^p D={x(i)}i=1N;x(i)∈Rp,对相关概念进行如下定义:
-
ϵ
\epsilon
ϵ-邻域:它描述样本集合
D
\mathcal D
D中到某样本
x
(
j
)
(
j
∈
{
1
,
2
,
⋯
,
N
}
)
x^{(j)}(j \in \{1,2,\cdots,N\})
x(j)(j∈{1,2,⋯,N})的距离不大于
ϵ
\epsilon
ϵ的样本
x
(
i
)
x^{(i)}
x(i)组成的集合。使用
N
ϵ
(
x
(
j
)
)
\mathcal N_{\epsilon}(x^{(j)})
Nϵ(x(j))表示:
样本间距离在
K-Means \text{K-Means} K-Means中介绍过‘明可夫斯基距离’
( Minkowski Distance ) (\text{Minkowski Distance}) (Minkowski Distance)。其他的距离计算方式先挖一个坑,后续来填。
N ϵ ( x ( i ) ) = { x ( i ) ∈ D ∣ Dist ( x ( i ) , x ( j ) ) ≤ ϵ } \mathcal N_{\epsilon}(x^{(i)}) = \{x^{(i)} \in \mathcal D \mid \text{Dist}(x^{(i)},x^{(j)}) \leq \epsilon\} Nϵ(x(i))={x(i)∈D∣Dist(x(i),x(j))≤ϵ} - 核心对象
(
Core Object
)
(\text{Core Object})
(Core Object):如果样本
x
(
j
)
x^{(j)}
x(j)的
ϵ
\epsilon
ϵ-邻域内的样本数量
∣
N
ϵ
(
x
(
j
)
)
∣
≥
MinPts
|\mathcal N_{\epsilon}(x^{(j)})| \geq \text{MinPts}
∣Nϵ(x(j))∣≥MinPts,那么称样本点
x
(
j
)
x^{(j)}
x(j)是一个核心对象:
- 密度直达
(
Directly Density-Reachable
)
(\text{Directly Density-Reachable})
(Directly Density-Reachable):在样本点
x
(
i
)
x^{(i)}
x(i)位于以
x
(
j
)
x^{(j)}
x(j)为核心对象的
ϵ
\epsilon
ϵ-邻域内,则称
x
(
i
)
x^{(i)}
x(i)由
x
(
j
)
x^{(j)}
x(j)密度直达:
需要注意的是,这里包含一个由核心对象
x ( j ) x^{(j)} x(j)到ε-邻域内样本点
x ( i ) x^{(i)} x(i)的方向性,单向。
密度直达不具备对称性。也就是说,
x ( i ) x^{(i)} x(i)由
x ( j ) x^{(j)} x(j)密度直达,但
x ( j ) x^{(j)} x(j)不一定由
x ( i ) x^{(i)} x(i)密度直达。
- 密度可达
(
Density-Reachable
)
(\text{Density-Reachable})
(Density-Reachable):对于样本点
x
(
i
)
,
x
(
j
)
x^{(i)},x^{(j)}
x(i),x(j),如果存在样本序列
P
1
,
P
2
,
⋯
,
P
n
\mathcal P_1,\mathcal P_2,\cdots,\mathcal P_n
P1,P2,⋯,Pn,其中
P
1
=
x
(
j
)
,
P
n
=
x
(
i
)
\mathcal P_1 = x^{(j)},\mathcal P_n = x^{(i)}
P1=x(j),Pn=x(i),并且
P
k
+
1
\mathcal P_{k+1}
Pk+1由
P
k
(
k
=
1
,
2
,
⋯
,
n
−
1
)
\mathcal P_k(k=1,2,\cdots,n-1)
Pk(k=1,2,⋯,n−1)密度直达,则称
x
(
i
)
x^{(i)}
x(i)由
x
(
j
)
x^{(j)}
x(j)密度可达:
密度可达具有直递性。也就是说,如果
x ( i ) x^{(i)} x(i)由 x ( j ) x^{(j)} x(j)密度可达, x ( k ) x^{(k)} x(k)由 x ( i ) x^{(i)} x(i)密度可达,那么 x ( k ) x^{(k)} x(k)由 x ( j ) x^{(j)} x(j)密度可达。密度可达同样不具备对称性。从明可夫斯基距离的角度解释对称性,文章见下方链接。如果使用
3 3 3阶明可夫斯基距离(
L 3 L_3 L3范数)来描述样本点之间的距离:
Dist ( x ( i ) , x ( j ) ) = ∑ k = 1 p ∣ x k ( i ) − x k ( j ) ∣ 3 3 = ∣ ∣ x ( i ) − x ( j ) ∣ ∣ 3 \text{Dist}(x^{(i)},x^{(j)}) = \sqrt[3]{\sum_{k=1}^{p}|x_k^{(i)} - x_k^{(j)}|^3} = ||x^{(i)} - x^{(j)}||_3 Dist(x(i),x(j))=3k=1∑p∣xk(i)−xk(j)∣3=∣∣x(i)−x(j)∣∣3
那么可能出现根号内的项
∑ k = 1 p ∣ x k ( i ) − x k ( j ) ∣ 3 \begin{aligned}\sum_{k=1}^p |x_k^{(i)} - x_k^{(j)}|^3\end{aligned} k=1∑p∣xk(i)−xk(j)∣3是一个负值,从而产生一个‘负距离’;相反,如果
∑ k = 1 p ∣ x k ( j ) − x k ( i ) ∣ 3 \begin{aligned}\sum_{k=1}^p |x_k^{(j)} - x_k^{(i)}|^3\end{aligned} k=1∑p∣xk(j)−xk(i)∣3结果是一个‘正距离’,最终导致
Dist ( x ( i ) , x ( j ) ) ≠ Dist ( x ( j ) , x ( i ) ) \text{Dist}(x^{(i)},x^{(j)}) \neq \text{Dist}(x^{(j)},x^{(i)}) Dist(x(i),x(j))=Dist(x(j),x(i))。
- 密度相连
(
Density-Connected
)
(\text{Density-Connected})
(Density-Connected):对于样本点
x
(
i
)
,
x
(
j
)
x^{(i)},x^{(j)}
x(i),x(j),若存在样本点
x
(
k
)
x^{(k)}
x(k),使得
x
(
i
)
,
x
(
j
)
x^{(i)},x^{(j)}
x(i),x(j)均由
x
(
k
)
x^{(k)}
x(k)密度可达,则称
x
(
i
)
,
x
(
j
)
x^{(i)},x^{(j)}
x(i),x(j)密度相连。
需要注意的是,密度相连指的是
x ( i ) , x ( j ) x^{(i)},x^{(j)} x(i),x(j)之间的关系,
x ( k ) x^{(k)} x(k)仅是一个媒介。
密度相连关系满足对称性。也就是说,
x ( i ) , x ( j ) x^{(i)},x^{(j)} x(i),x(j)之间的关系是无向的。
基于上述概念, DBSCAN \text{DBSCAN} DBSCAN对于簇的概念定义为:最大的密度相连样本集合。对于某个簇 C \mathcal C C,它包含如下属性:
- 连接性:簇 C \mathcal C C中的任意两个样本点之间密度相连;
- 最大性:已知样本点 x ( i ) ∈ C ⇒ x^{(i)} \in \mathcal C \Rightarrow x(i)∈C⇒任意由 x ( i ) x^{(i)} x(i)密度可达的样本点均 ∈ C \in \mathcal C ∈C。
算法过程
整个
DBSCAN
\text{DBSCAN}
DBSCAN算法的核心在于:找到满足上述两种性质的簇。这个簇的表示为:核心对象
x
x
x密度可达的所有样本组成的集合:
这个集合中自然也可能包含其他的‘核心对象’,并且该集合内任意两个样本之间均‘密度相连’。
X
=
{
x
′
∈
D
∣
x
⇒
x
′
(
Density-Reachable
)
}
\mathcal X = \{x' \in \mathcal D \mid x \Rightarrow x'(\text{Density-Reachable})\}
X={x′∈D∣x⇒x′(Density-Reachable)}
因此,该算法主要包括两个部分:
- 基于超参数:邻域半径 ϵ \epsilon ϵ;邻域内样本数量阈值 MinPts \text{MinPts} MinPts,找出数据集 D \mathcal D D内部所有的核心对象,最终构成核心对象集合 Ω \Omega Ω;
- 以任一核心对象为出发点,找出其所有密度可达的样本,构成簇;直到所有核心对象均被访问为止。
需要注意的是,算法的迭代结束方式是‘所有核心对象被访问,而不是
D \mathcal D D中所有样本。数据集’
D \mathcal D D中不属于任何簇的样本被认为是‘噪声’
( Noise ) (\text{Noise}) (Noise)或者‘异常’
( Anomaly ) (\text{Anomaly}) (Anomaly)样本。
完整算法描述
输入部分:
- 数据集 D = { x ( i ) } i = 1 N \mathcal D = \{x^{(i)}\}_{i=1}^N D={x(i)}i=1N;
- 参数:邻域半径 ϵ \epsilon ϵ;样本数量阈值 MinPts \text{MinPts} MinPts
核心对象查找:
- 初始化核心对象集合 Ω = ∅ \Omega = \emptyset Ω=∅
- 对每一个样本点 x ( j ) ( j = 1 , 2 , ⋯ , N ) x^{(j)}(j=1,2,\cdots,N) x(j)(j=1,2,⋯,N)进行遍历:
- \quad 计算样本点 x ( j ) x^{(j)} x(j)的 ϵ \epsilon ϵ-邻域 N ϵ ( x ( j ) ) \mathcal N_{\epsilon}(x^{(j)}) Nϵ(x(j));
-
\quad
判断邻域样本数量
∣
N
ϵ
(
x
(
j
)
)
∣
|\mathcal N_{\epsilon}(x^{(j)})|
∣Nϵ(x(j))∣和阈值
MinPts
\text{MinPts}
MinPts之间的大小关系;
- 若 ∣ N ϵ ( x ( j ) ) ∣ ≥ MinPts ⇒ x ( j ) |\mathcal N_{\epsilon}(x^{(j)})| \geq \text{MinPts} \Rightarrow x^{(j)} ∣Nϵ(x(j))∣≥MinPts⇒x(j)是核心对象,加入 Ω \Omega Ω集合中: Ω = Ω ∪ { x ( j ) } \Omega = \Omega \cup \{x^{(j)}\} Ω=Ω∪{x(j)}
- 不是核心对象的样本点, Continue \text{Continue} Continue即可。
- 最终返回核心对象集合 Ω \Omega Ω。
寻找最大簇的过程
- 聚类簇数初始化: k = 0 k=0 k=0;
- 未访问的样本集合: Γ = D \Gamma = \mathcal D Γ=D;
- 在核心对象集合 Ω ≠ ∅ \Omega \neq \emptyset Ω=∅的条件下,执行如下迭代过程:
- \quad 记录当前迭代下,未访问的样本集合 Γ o l d = Γ \Gamma_{old} = \Gamma Γold=Γ;
- \quad 从核心对象集合 Ω \Omega Ω中随机选取一个核心对象 o o o,初始化队列 Q = < o > \mathcal Q = <o> Q=<o>;
-
\quad
与此同时,将核心对象
o
o
o从
Γ
\Gamma
Γ中去除
Γ
=
Γ
\
{
o
}
\Gamma = \Gamma \backslash \{o\}
Γ=Γ\{o};
\quad即将对核心对象
o o o的所有密度可达样本进行发掘。反斜杠
\ \backslash \表示集合之间的相对差集。
-
在队列 Q ≠ ∅ \mathcal Q \neq \emptyset Q=∅条件下,执行如下迭代过程:
如果
Q = ∅ \mathcal Q = \emptyset Q=∅,这意味着与核心对象
o o o密度可达的所有样本均被找到。这里也有可能包含其他的核心对象。
-
\quad 取出队列中的首个样本 q q q,并判别该样本点是否为核心对象;
这个队列中,初始化是一个随机的‘核心对象‘
o o o,但队列中存储的是与
o o o密度可达的所有样本点。我们需要从这些样本点里找出‘核心对象’,从而使其继续扩张、延伸。
如果 ∣ N ϵ ( q ) ∣ ≥ MinPts |\mathcal N_{\epsilon}(q)| \geq \text{MinPts} ∣Nϵ(q)∣≥MinPts,这意味着 q q q是核心对象,并找出 q q q的 ϵ \epsilon ϵ-邻域 N ϵ ( q ) \mathcal N_{\epsilon}(q) Nϵ(q)和未访问样本 Γ \Gamma Γ之间的重合样本 Δ \Delta Δ: Δ = N ϵ ( q ) ∩ Γ \Delta = \mathcal N_{\epsilon}(q) \cap \Gamma Δ=Nϵ(q)∩Γ,并将这些样本 Δ \Delta Δ重新放回至队列 Q \mathcal Q Q中(在放回同时,将 Γ \Gamma Γ中的相应样本一并消除: Γ = Γ \ Δ \Gamma = \Gamma \backslash \Delta Γ=Γ\Δ)。 -
持续迭代下去,当 Q \mathcal Q Q中没有元素时(子循环迭代结束),意味着这个最大簇中的样本已全部找全。与此同时, Γ \Gamma Γ中的样本已经减少了 Γ o l d − Γ \Gamma_{old} - \Gamma Γold−Γ,也就是簇 C k \mathcal C_k Ck的样本数量:
C k = Γ o l d \ Γ \mathcal C_k = \Gamma_{old} \backslash \Gamma Ck=Γold\Γ
-
- 本次迭代最后,将簇
C
k
\mathcal C_k
Ck中的所有核心对象在
Ω
\Omega
Ω中全部消除。也就是说,重新从剩余的核心对象中找出最大簇:
Ω = Ω \ C k \Omega = \Omega \backslash \mathcal C_k Ω=Ω\Ck - 最终可得到一系列簇的结果: { C 1 , C 2 , ⋯ , C k } \{\mathcal C_1,\mathcal C_2,\cdots,\mathcal C_k\} {C1,C2,⋯,Ck}
DBSCAN \text{DBSCAN} DBSCAN的优点和缺陷
-
优点:
和 K-Means \text{K-Means} K-Means算法比较, DBSCAN \text{DBSCAN} DBSCAN不需要人为输入簇的数量 k k k;并且它可以找出任意聚类形状的簇。而 K-Means \text{K-Means} K-Means,高斯混合模型它们仅能针对于凸集合的样本聚类。在 DBSCAN \text{DBSCAN} DBSCAN迭代结束后,未访问集合 Γ \Gamma Γ可能会剩下一些点。这意味着,剩下的点不属于任何聚类簇(噪声、异常)。从这个角度可以看出,在聚类过程可以发现异常样本,并且对其不敏感。
DBSCAN \text{DBSCAN} DBSCAN在初始化时选择核心对象作为初始迭代,而不是随机选择一点。这意味着 DBSCAN \text{DBSCAN} DBSCAN算法的鲁棒性很强,不会因初始样本对聚类结果产生巨大影响。
-
缺陷:
如果出现类间差距较大,或者样本集密度不均匀,此时的 DBSCAN \text{DBSCAN} DBSCAN聚类效果较差。它的时间复杂度是不低的。随着样本数量的增加,导致算法收敛时间较长。
由于
DBSCAN \text{DBSCAN} DBSCAN也存在基于寻找‘最近邻’样本点的的操作,可以构建类似
KD \text{KD} KD树的方式去查找相关索引。
虽然不用人为选择簇的数量,但关于 ϵ , MinPts \epsilon,\text{MinPts} ϵ,MinPts的调节过程是较复杂的。不同的参数组合方式对聚类效果(模型的过拟合、欠拟合)均存在较大影响。
相关参考:
DBSCAN 聚类算法详解
机器学习其中复习
《机器学习》(周志华著) 9.5 密度聚类