深圳Yolo 视觉
深圳
立即加入
词汇表

DBSCAN (具有噪声的基于密度的空间聚类应用)

探索基于密度的聚类与异常检测技术DBSCAN。了解它如何Ultralytics ,在数据集中识别任意形状与噪声。

DBSCAN(基于噪声的应用程序密度空间聚类)是一种强大的无监督学习算法,用于根据密度识别数据中的不同组群。与假设球形聚类或要求预设组数目的传统聚类方法不同,DBSCAN定位由低密度区域分隔的高密度区域。 这种特性使其能够发现任意形状和规模的聚类,在分析底层结构未知的复杂现实世界数据集时表现尤为出色。该算法的核心优势在于内置异常检测功能——它会自动将低密度区域中的点归类为噪声,而非强行将其纳入聚类。

核心概念与参数

该算法通过为每个数据点定义邻域并统计落入该区域的其他数据点数量来运行。两个主要超参数控制此过程,需要进行精细的超参数调优以匹配数据的特定特征:

  • Epsilon (eps):该参数指定在某点周围搜索邻居的最大半径。 它定义了"可达性"距离。
  • 最小点数(minPts):此参数设定在Epsilon半径范围内所需的最小数据点数量,以形成密集区域或"核心"。

基于这些参数,DBSCAN将数据集中的每个点归类为三种类型之一:

  1. 核心要点: 具有至少 minPts 邻近区域内的 eps 半径。这些点构成簇的内部区域。
  2. 边界点: 位于 eps 核心点的半径,但少于 minPts 邻居本身。这些构成了簇的边界。
  3. 噪声点:既非核心点也非边界点的点。这些点实质上被视为 异常值,这对异常值检测等任务很有用。

DBSCAN 与 K-Means 聚类的比较

虽然两者都是机器学习(ML)的基础方法,但在特定场景下,DBSCAN相较于K均值聚类具有显著优势。 K均值依赖于质心和欧几里得距离,通常假设聚类呈凸形或球形。这会导致其在细长或新月形数据上表现欠佳。相比之下,DBSCAN基于密度的方法使其能够顺应数据分布的自然轮廓。

另一个显著差异在于初始化过程。K均值算法要求用户预先指定聚类数量 (k),若缺乏先验知识则难以确定。而DBSCAN能从数据密度中自然推断出聚类数量。 此外,K均值法对异常值敏感,因其强制将每个点归入某个簇,可能导致簇中心偏移。DBSCAN能将点标记为噪声的能力,可防止数据异常污染有效簇,从而为预测建模等下游任务提供更纯净的结果。

实际应用

DBSCAN在需要空间分析和强健噪声处理的行业中得到广泛应用。

  • 地理空间分析:在城市规划与物流领域,分析师运用DBSCAN算法对配送车队或网约车服务的GPS坐标进行聚类分析。通过识别高密度配送区域,企业可优化路线规划与仓库选址。例如,物流领域的人工智能常通过聚类配送站点来提升运营效率。
  • 基于视觉的异常检测:在制造业中,由YOLO26等模型驱动的视觉检测系统可detect 缺陷。DBSCAN算法能将这些缺陷的坐标在产品地图上进行聚类分析。孤立的检测结果可能被视为传感器噪声而忽略,而密集的聚类则表明存在系统性制造缺陷,从而触发质量检测警报。

代码示例:聚类检测质心

在计算机视觉工作流程中,开发人员常使用 Ultralytics 平台 训练物体检测器,然后对结果进行后处理。以下示例演示了如何使用 sklearn 库用于聚类检测对象的质心。这有助于将空间相关的检测结果分组,可能合并多个 边界框 用于同一对象或识别 对象组。

import numpy as np
from sklearn.cluster import DBSCAN

# Simulated centroids of objects detected by YOLO26
# [x, y] coordinates representing object locations
centroids = np.array(
    [
        [100, 100],
        [102, 104],
        [101, 102],  # Cluster 1 (Dense group)
        [200, 200],
        [205, 202],  # Cluster 2 (Another group)
        [500, 500],  # Noise (Outlier)
    ]
)

# Initialize DBSCAN with a radius (eps) of 10 and min_samples of 2
# This groups points close to each other
clustering = DBSCAN(eps=10, min_samples=2).fit(centroids)

# Labels: 0, 1 are cluster IDs; -1 represents noise
print(f"Cluster Labels: {clustering.labels_}")
# Output: [ 0  0  0  1  1 -1]

与深度学习的集成

尽管DBSCAN是经典算法,但它能与现代深度学习技术有效结合。例如,从卷积神经网络提取的高维特征(CNN) 可通过PCA或t-SNE等降维技术进行维度压缩后再应用DBSCAN。这种混合方法能基于语义相似性而非单纯像素位置对复杂图像数据进行聚类。在标注训练数据稀缺的无监督学习场景中,该技术尤为重要,可帮助研究人员高效整理海量无标签图像档案。

加入Ultralytics 社区

加入人工智能的未来。与全球创新者联系、协作和共同成长

立即加入