07.AI

머신러닝 - 군집 - DBSCAN - HDBSCAN(Hierarchical Density-Based Spatial Clustering of Applications with Noise)

Mr. Slumber 2025. 4. 13. 11:57
728x90
반응형

(개념) 밀도 기반 클러스터링 알고리즘인 DBSCAN을 확장한 것으로, 데이터 세트에서 클러스터 또는 밀집 영역을 찾기 위해 비지도 학습을 사용

-  DBSCAN과 달리 HDBSCAN은 다양한 밀도를 가진 클러스터를 처리하고 자동으로 클러스터 수를 결정할 수 있다는 장점이 있다.

 

The procedure of applying the hierarchical density-based spatial clustering of applications with noise (HDBSCAN) algorithm: (a) root points detected by GPR; (b) the minimum spanning tree of mutually accessible distances; (c) hierarchy of the minimum spanning tree; (d) the condensed hierarchy; (e) clustering results extracted from the hierarchy.

HDBSCAN과 DBSCAN 비교

특징 DBSCAN HDBSCAN
클러스터링 방법론 고정된 밀도 임계값을 기반으로 클러스터 식별 계층적 접근 방식을 사용하여 다양한 밀도에서 클러스터 식별
파라미터 감도 epsilon minPts에 민감하고 신중한 선택 필요 min_cluster_size min_samples 사용 가능, 덜 민감
가변 밀도 균일한 밀도를 가정, 가변 밀도 데이터에서 어려움 다양한 밀도를 가진 클러스터 처리 가능
클러스터 예측 새 포인트 예측 불가능 approximate_predict 함수로 새 포인트 예측 가능
복잡성 상대적으로 낮음 계산 복잡성이 더 높음

작동 원리

HDBSCAN은 데이터 포인트의 밀도 분포를 분석하여 클러스터를 식별한다. 주요 단계는 다음과 같다:

  1. 밀도 기반 클러스터링 계층 생성: 데이터 포인트 간의 밀도 연결성을 기반으로 클러스터를 생성하여 계층적 구조를 만든다. 이 과정은 데이터 포인트를 정점으로, 포인트 간의 상호 도달 가능 거리를 가중치로 하는 그래프를 생성하는 것으로 생각할 수 있다.
  2. 계층에서 클러스터 추출: 클러스터 할당의 안정성을 고려하여 계층에서 클러스터를 추출한다. 안정적인 클러스터는 여러 계층 수준에서 일관된 멤버십을 갖는 클러스터로 식별된다.
  3. 잡음(Noise)과 의미 있는 클러스터 구분: 밀도가 낮은 포인트 또는 어떤 클러스터에도 속하지 않는 포인트를 고려하여 잡음과 의미 있는 클러스터를 구별한다.

HDBSCAN 파라미터

HDBSCAN은 특정 데이터 세트에 맞게 클러스터링 프로세스를 수정하는 데 사용할 수 있는 여러 파라미터를 제공한다. 주요 파라미터는 다음과 같다:

  • min_cluster_size: 클러스터를 형성하는 데 필요한 최소 포인트 수이다. 이 기준을 충족하지 못하는 포인트는 잡음으로 간주된다. 이 파라미터를 조정하면 알고리즘이 찾는 클러스터의 세분성에 영향을 미친다.
  • min_samples: 포인트가 핵심 포인트로 간주되기 위해 이웃에 있어야 하는 최소 샘플 수이다.
  • cluster_selection_epsilon: 최소 스패닝 트리를 기반으로 클러스터를 선택하기 위한 엡실론 값을 설정한다. 이는 밀도 기반 클러스터링 프로세스에서 포인트 간의 최대 허용 거리를 결정한다.

그 외 파라미터는 다음과 같다:

  • metric: 상호 도달 가능 거리 계산에 사용할 거리 메트릭.
  • cluster_selection_method: 응축 트리에서 클러스터를 선택하는 데 사용되는 방법 (예: 'eom', 'leaf').
  • alpha: 클러스터 병합에 대한 연결 기준에 영향을 미치는 파라미터.
 

장점

  • 사전 사양 없이 데이터 세트에서 클러스터 수를 자동으로 결정
  • 볼록하지 않고 불규칙한 모양을 포함하여 다양한 모양과 크기의 클러스터 식별 가능
  • 다양한 수준의 세분성으로 클러스터를 탐색할 수 있는 계층적 클러스터링 구조 제공
 

단점

  • 최소 스패닝 트리 구성 및 상호 도달 가능 거리 계산으로 인해 특히 대규모 데이터 세트의 경우 계산 비용이 많이 들 수 있음.
  • 사용되는 거리 메트릭은 클러스터링 결과에 영향을 미칠 수 있다.
  • 최소 클러스터 크기 및 최소 샘플 파라미터에 대한 파라미터 조정이 필요하며, 이는 클러스터링 결과에 영향을 줄 수 있다.

HDBSCAN을 사용한 클러스터링 예제

다음은 Python에서 HDBSCAN을 구현하는 방법에 대한 예제이다:

import hdbscan
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.metrics import silhouette_score, adjusted_rand_score

# 샘플 데이터 생성
X, y_true = make_blobs(n_samples=1000, centers=5,
cluster_std=0.6, random_state=42)

# 추가 파라미터로 HDBSCAN 초기화
clusterer = hdbscan.HDBSCAN(min_cluster_size=5,
min_samples=5,
cluster_selection_method='eom',
allow_single_cluster=True,
metric='euclidean',
algorithm='best',
leaf_size=30)

# 모델을 데이터에 맞추기
clusterer.fit(X)

# 클러스터링 평가
labels = clusterer.labels_
silhouette_avg = silhouette_score(X, labels)
ari = adjusted_rand_score(y_true, labels)

# 평가 지표
print("실루엣 계수: {:.2f}".format(silhouette_avg))
print("조정된 Rand 지수: {:.2f}".format(ari))

# 클러스터 시각화
plt.figure(figsize=(10, 6))
plt.scatter(X[:, 0], X[:, 1], c=clusterer.labels_,
cmap='viridis', s=50, alpha=0.7, edgecolors='k')
plt.colorbar()
plt.title('HDBSCAN 클러스터링')
plt.xlabel('특성 1')
plt.ylabel('특성 2')
plt.show()

 

활용 사례

HDBSCAN은 다양한 영역에서 활용될 수 있다. 몇 가지 실질적인 예는 다음과 같다:

  • 공간 데이터 분석: HDBSCAN은 GIS(지리 정보 시스템)에서 활동 또는 관심도가 높은 영역을 식별하는 데 사용할 수 있다.
  • 이미지 처리: HDBSCAN은 이미지에서 객체 인식을 위한 뚜렷한 객체로 픽셀을 그룹화하는 데 도움이 될 수 있다.
  • 이상 감지: HDBSCAN은 사기 탐지 또는 시스템 상태 모니터링에서 비정상적인 패턴을 분리하는 데 사용할 수 있다.
  • 추천 시스템: HDBSCAN은 유사한 선호도를 가진 사용자를 그룹화하여 보다 정확한 추천을 생성할 수 있다.
  • 텍스트 클러스터링: HDBSCAN은 짧은 텍스트에서 의도를 식별하기 위해 문장 임베딩을 클러스터링하는 데 사용할 수 있다.
  • 원격 감지 기술: HDBSCAN은 위성 이미지에서 유사한 토지 사용 영역을 식별하는 데 사용할 수 있다.
  • 천문학: HDBSCAN은 다양한 밀도를 가진 은하 분포를 분석하는 데 사용할 수 있다.

 

https://www.researchgate.net/figure/The-procedure-of-applying-the-hierarchical-density-based-spatial-clustering-of_fig4_350343387

728x90