DBSCAN (Density-Based Spatial Clustering of Applications with Noise)
밀도 기반 클러스터링과 이상 탐지를 위한 DBSCAN을 살펴보세요. Ultralytics YOLO26과 함께 데이터셋에서 임의의 형태와 노이즈를 식별하는 방법을 알아보세요.
DBSCAN (노이즈가 있는 애플리케이션의 밀도 기반 공간 클러스터링)은 밀도를 기반으로 데이터 내의 서로 다른 그룹을 식별하는 데 사용되는 강력한 비지도 학습 알고리즘입니다. 구형 클러스터를 가정하거나 사전에 그룹 수를 지정해야 하는 기존 클러스터링 방법과 달리, DBSCAN은 저밀도 영역으로 분리된 고밀도 영역을 찾습니다. 이러한 기능을 통해 임의의 형태와 크기를 가진 클러스터를 발견할 수 있으므로, 기본 구조를 알 수 없는 복잡한 실제 데이터셋을 분석하는 데 특히 효과적입니다. 이 알고리즘의 주요 장점은 내장된 이상 탐지 기능으로, 저밀도 영역의 포인트를 클러스터에 강제로 포함하지 않고 자동으로 노이즈로 분류합니다.
핵심 개념 및 파라미터#
이 알고리즘은 각 데이터 포인트 주변에 이웃 영역을 정의하고 해당 범위 내에 포함되는 다른 포인트의 수를 계산하는 방식으로 작동합니다. 두 가지 주요 하이퍼파라미터가 이 과정을 제어하므로, 데이터의 구체적인 특성에 맞추기 위해 신중한 하이퍼파라미터 튜닝이 필요합니다:
- 엡실론 (eps): 이 파라미터는 이웃을 검색할 때 포인트 주변에 설정되는 최대 반경을 지정합니다. 이는 "도달 가능성" 거리를 정의합니다.
- 최소 포인트 수 (minPts): 이는 밀집 영역 또는 "코어"를 형성하는 데 필요한 엡실론 반경 내 최소 데이터 포인트 수를 설정합니다.
이러한 파라미터를 기반으로 DBSCAN은 데이터셋의 모든 포인트를 다음 세 가지 유형 중 하나로 분류합니다:
-
코어 포인트:
eps반경 내에 최소minPts개의 이웃이 있는 포인트입니다. 이러한 포인트는 클러스터의 내부를 형성합니다. -
경계 포인트: 코어 포인트로부터
eps반경 내에 있지만 자체적으로는minPts개 미만의 이웃을 가진 포인트입니다. 이러한 포인트는 클러스터의 가장자리를 형성합니다. -
노이즈 포인트: 코어 포인트도 경계 포인트도 아닌 포인트입니다. 이러한 포인트는 사실상 이상치로 처리되므로 이상치 탐지와 같은 작업에 유용합니다.
DBSCAN과 K-Means 클러스터링 비교#
두 방법 모두 머신 러닝 (ML)의 기본 요소이지만, DBSCAN은 특정 상황에서 K-Means 클러스터링에 비해 뚜렷한 장점을 제공합니다. K-Means는 중심점과 유클리드 거리에 의존하며, 클러스터가 볼록하거나 구형이라고 가정하는 경우가 많습니다. 이로 인해 길쭉한 형태나 초승달 형태의 데이터에서는 성능이 저하될 수 있습니다. 반면 DBSCAN의 밀도 기반 접근 방식은 데이터 분포의 자연스러운 윤곽을 따라갈 수 있습니다.
또 다른 중요한 차이점은 초기화 방식에 있습니다. K-Means는 사용자에게 클러스터 수(k)를 미리 지정하도록 요구하므로, 사전 지식이 없으면 어려울 수 있습니다. DBSCAN은 데이터 밀도에서 클러스터 수를 자연스럽게 추론합니다. 또한 K-Means는 모든 포인트를 그룹에 강제로 할당하므로 이상치에 민감하며, 이로 인해 클러스터 중심이 왜곡될 수 있습니다. DBSCAN은 포인트를 노이즈로 표시할 수 있으므로 데이터 이상이 유효한 클러스터를 오염시키는 것을 방지하고, 예측 모델링과 같은 후속 작업에 더 깨끗한 결과를 제공합니다.
실제 적용 사례#
DBSCAN은 공간 분석과 강력한 노이즈 처리가 필요한 산업에 널리 적용됩니다.
- 지리 공간 분석: 도시 계획 및 물류 분야에서 분석가는 DBSCAN을 사용하여 배송 차량 또는 차량 공유 서비스에서 수집한 GPS 좌표를 그룹화합니다. 고밀도 하차 구역을 식별함으로써 기업은 경로 계획과 창고 위치를 최적화할 수 있습니다. 예를 들어, 물류 분야의 AI에는 효율성을 높이기 위해 배송 정류 지점을 클러스터링하는 작업이 포함되는 경우가 많습니다.
- 비전 기반 이상 탐지: 제조 분야에서는 YOLO26과 같은 모델로 구동되는 비전 검사 시스템이 표면 결함을 탐지할 수 있습니다. DBSCAN은 제품 맵에서 이러한 결함의 좌표를 클러스터링할 수 있습니다. 고립된 탐지 결과는 센서 노이즈로 간주하여 제외할 수 있는 반면, 밀집된 클러스터는 체계적인 제조 결함을 나타내어 품질 검사 경고를 발생시킬 수 있습니다.
코드 예제: 탐지된 중심점 클러스터링#
컴퓨터 비전 워크플로에서 개발자는 Ultralytics Platform을 사용하여 객체 탐지기를 학습한 다음 결과를 후처리하는 경우가 많습니다. 다음 예제에서는 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)에서 추출한 고차원 특징은 DBSCAN을 적용하기 전에 PCA 또는 t-SNE와 같은 차원 축소 기법을 사용하여 축소할 수 있습니다. 이러한 하이브리드 접근 방식은 단순한 픽셀 위치가 아니라 의미적 유사성을 기반으로 복잡한 이미지 데이터를 클러스터링할 수 있도록 합니다. 이는 레이블이 지정된 학습 데이터가 부족한 비지도 학습 시나리오에서 특히 유용하며, 연구자가 방대한 비레이블 이미지 아카이브를 효율적으로 정리할 수 있도록 지원합니다.






