一、DBSCAN简介
DBSCAN是一种基于密度的聚类算法,由Martin Ester等人在1996年提出(论文标题:《A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise》)。与K-Means等基于质心的聚类算法不同,DBSCAN通过识别数据点的“密度连接”区域来形成簇,能够发现任意形状的簇,并且对噪声点(异常点)具有鲁棒性。
核心思想
DBSCAN基于以下假设:
- 数据集中存在高密度区域(簇),这些区域由低密度区域分隔。
- 簇内的点在空间上是“密度可达”的,而噪声点则位于低密度区域。
DBSCAN不需要预先指定簇的数量(不像K-Means需要指定K),这使得它在处理未知数据集时非常灵活。
二、DBSCAN的核心概念
要理解DBSCAN的运作机制,首先需要掌握以下几个关键概念:
-
核心点(Core Point):
- 如果一个数据点在其半径 ϵ \epsilon ϵ(Epsilon)范围内至少有 M i n P t s MinPts MinPts(最小点数,包括自身)个点,则该点被称为核心点。
- 数学定义:对于点 p p p,如果 ∣ N ϵ ( p ) ∣ ≥ M i n P t s |N_\epsilon(p)| \geq MinPts ∣Nϵ(p)∣≥MinPts,其中 N ϵ ( p ) = { q ∈ D ∣ dist ( p , q ) ≤ ϵ } N_\epsilon(p) = \{ q \in D | \text{dist}(p, q) \leq \epsilon \} Nϵ(p)={ q∈D∣dist(p,q)≤ϵ}是以 p p p为中心、半径为 ϵ \epsilon ϵ的邻域, D D D是数据集。
-
边界点(Border Point):
- 如果一个点在其半径 ϵ \epsilon ϵ范围内点的数量少于 M i n P t s MinPts MinPts,但它位于某个核心点的 ϵ \epsilon ϵ邻域内,则该点被称为边界点。
- 边界点不满足核心点的条件,但属于某个簇的边缘。
-
噪声点(Noise Point):
- 既不是核心点也不是边界点的点,称为噪声点或异常点。这些点通常位于低密度区域,不属于任何簇。
-
直接密度可达(Directly Density-Reachable):
- 如果点 q q q在核心点 p p p的 ϵ \epsilon ϵ邻域内(即 dist ( p , q ) ≤ ϵ \text{dist}(p, q) \leq \epsilon dist(p,q)≤ϵ),且 p p p是核心点,则 q q q对 p p p是直接密度可达的。
-
密度可达(Density-Reachable):
- 如果存在一个点序列 p 1 , p 2 , … , p n p_1, p_2, \dots, p_n p1,p2,…,pn,其中 p 1 = p p_1 = p p1=p, p n = q p_n = q pn=q,且每个 p i + 1 p_{i+1} pi+1对 p i p_i pi是直接密度可达的,则 q q q对 p p p是密度可达的。
-
密度连接(Density-Connected):
- 如果点 p p p和 q q q都对某个核心点