밀도 기반 클러스터링 및 이상 탐지를 위한 DBSCAN 탐구. Ultralytics 함께 데이터셋 내 임의의 형태와 노이즈를 식별하는 방법을 알아보세요.
DBSCAN(노이즈를 고려한 밀도 기반 공간 클러스터링)은 밀도를 기반으로 데이터 내 고유한 그룹을 식별하는 강력한 비지도 학습 알고리즘입니다. 구형 클러스터를 가정하거나 사전에 정해진 그룹 수를 요구하는 기존 클러스터링 방법과 달리, DBSCAN은 저밀도 영역으로 분리된 고밀도 영역을 찾아냅니다. 이러한 능력 덕분에 임의의 형태와 크기의 클러스터를 발견할 수 있어, 기본 구조가 알려지지 않은 복잡한 실제 데이터셋 분석에 매우 효과적입니다. 이 알고리즘의 주요 장점은 내장된 이상 탐지 기능으로, 저밀도 영역의 점들을 클러스터에 억지로 포함시키지 않고 자동으로 노이즈로 분류한다는 점입니다.
이 알고리즘은 각 데이터 포인트 주변에 근접 영역을 정의하고 해당 근접 영역 내에 속하는 다른 포인트의 수를 계산하는 방식으로 작동합니다. 이 과정을 제어하는 두 가지 주요 하이퍼파라미터가 있으며, 데이터의 특정 특성에 맞추기 위해 신중한 하이퍼파라미터 조정이 필요합니다:
이러한 매개변수를 기반으로 DBSCAN은 데이터셋 내 모든 점을 다음 세 가지 유형 중 하나로 분류합니다:
minPts 내부의 이웃들
eps 반경. 이 점들은 클러스터의 내부를 형성한다.
eps 핵심점의 반경이지만
보다 적은 minPts 이웃들 자체입니다. 이들은 클러스터의 경계를 형성합니다.
기계 학습(ML)의 핵심 기법인 두 방법 중 DBSCAN은 특정 시나리오에서 K-평균 군집화보다 뚜렷한 장점을 제공합니다. K-평균법은 중심점과 유클리드 거리를 기반으로 하며, 클러스터가 볼록하거나 구형이라고 가정하는 경우가 많습니다. 이는 길쭉하거나 초승달 모양의 데이터에서 성능 저하를 초래할 수 있습니다. 반면 DBSCAN의 밀도 기반 접근법은 데이터 분포의 자연스러운 윤곽을 따라갈 수 있게 합니다.
또 다른 중요한 차이점은 초기화에 있습니다. K-Means는 사용자가 클러스터 수(k)를 사전에 지정해야 하는데, 사전 지식 없이 이를 결정하는 것은 어려울 수 있습니다. DBSCAN은 데이터 밀도로부터 클러스터 수를 자연스럽게 추론합니다. 또한 K-Means는 모든 점을 특정 그룹에 강제 배정함으로써 클러스터 중심을 왜곡할 수 있어 이상치에 민감합니다. 반면 DBSCAN은 데이터를 노이즈로 분류하는 기능을 통해 유효한 클러스터가 데이터 이상치에 오염되는 것을 방지하므로, 예측 모델링과 같은 후속 작업에 더 깨끗한 결과를 보장합니다.
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)에서 추출된 고차원 특징은 DBSCAN 적용 전에 PCA나 t-SNE 같은 차원 축소 기법을 통해 축소될 수 있습니다. 이 하이브리드 접근법은 단순히 픽셀 위치가 아닌 의미적 유사성에 기반하여 복잡한 이미지 데이터를 클러스터링할 수 있게 합니다. 이는 특히 라벨링된 훈련 데이터가 부족한 비지도 학습 시나리오에서 유용하며, 연구자들이 방대한 양의 라벨링되지 않은 이미지 아카이브를 효율적으로 정리하는 데 도움을 줍니다.