본문 바로가기
  • 컴공생의 공부 일기
  • 공부보단 일기에 가까운 것 같은
  • 블로그
🤖 AI/AI

🫧 DBSCAN (Density-Based Spatial Clustering of Applications with Noise) 클러스터링 알고리즘🫐

by 정람지 2025. 2. 14.

 

🫧  DBSCAN (Density-Based Spatial Clustering of Applications with Noise) 알고리즘

데이터 밀도가 높은 영역을 기반으로 클러스터를 생성

 

(조건 : 어느 점을 기준으로 반경 x 내에 점이 n 개 이상 있으면) 하나의 클러스터로 인식

 

https://bcho.tistory.com/1205

 

 

Core point : 조건을 만족시키는 포인트

Border point : 조건을 만족시키지는 않으나 Core point의 내부 점인, 클러스터에 포함되는 포인트

Noise point : 조건도 만족시키지 않고 Core point의 내부 점에 들어가지도 않은 포인트

 

반경 x 내에 있는 Core point들은 "연결" 되어 있음

=> 하나의 클러스터로 정의

 


🫐  DBSCAN 사용 라이브러리

 

DBSCAN

Gallery examples: Comparing different clustering algorithms on toy datasets Demo of DBSCAN clustering algorithm Demo of HDBSCAN clustering algorithm

scikit-learn.org

 

DBSCAN clustering from vector array or distance matrix.

from sklearn.cluster import DBSCAN

class sklearn.cluster.DBSCAN(eps=0.5, *, min_samples=5, metric='euclidean', metric_params=None, algorithm='auto', leaf_size=30, p=None, n_jobs=None)

 

 


🫧 Parameters:

eps

float, default=0.5

한 샘플이 다른 샘플의 이웃으로 간주되는 두 샘플 사이의 최대 거리 ( 위 x값 

 

 

min_samples

int, default=5

핵심 점으로 간주할 점의 이웃에 있는 샘플 수(또는 총 가중치) (위 n 값

포인트 자체가 포함

 

높은 값으로 설정하면 DBSCAN이 더 밀집된 클러스터를 찾고, 낮은 값으로 설정하면 발견된 클러스터가 더 희박

 

 

metric

str, or callable, default=’euclidean’

특징 배열에서 인스턴스 간의 거리를 계산할 때 사용할 메트릭

 

메트릭이 문자열 또는 콜러블인 경우, 해당 메트릭 매개변수에 대해 sklearn.metrics.pairwise_distances에서 허용하는 옵션 중 하나이어야 함

메트릭이 "미리 계산된" 경우, X는 거리 행렬로 간주되며 정사각형이어야 함

(X는 희소 그래프일 수 있으며, 이 경우 "0이 아닌" 요소만 DBSCAN의 이웃으로 간주될 수 있음)

 

 

metric_params

dict, default=None

 메트릭 함수에 대한 추가 키워드 인자

 

 

algorithm

{‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}, default=’auto’

 NearestNeighbors 모듈에서 포인트별 거리를 계산하고 가장 가까운 이웃을 찾는 데 사용할 알고리즘

 

 

leaf_size

int, default=30

BallTree 또는 cKDTree에 전달되는 잎 크기

트리를 저장하는 데 필요한 메모리뿐만 아니라 구성 및 쿼리 속도에 영향

 

최적의 값은 문제의 성격에 따라 다름

 

 

p

float, default=None

점 사이의 거리를 계산하는 데 사용할 밍코프스키 메트릭의 거듭제곱

 

None이면 p=2(유클리드 거리에 해당)

 

 

n_jobs

int, default=None

실행할 병렬 작업의 수

 


🫧 Attributes:

core_sample_indices_

ndarray of shape (n_core_samples,)

클러스터의 중심을 형성하는 중요한 데이터 포인트들의 인덱스를 제공.

 

components_

ndarray of shape (n_core_samples, n_features)

클러스터 중심을 형성하는 실제 데이터 포인트들의 값

 

labels_

ndarray of shape (n_samples)

 

각 데이터 포인트가 속한 클러스터 라벨(번호)을 반환함.

노이즈(이상치)로 판정된 데이터는 -1

 

 

 

n_features_in_

int

 

데이터가 가지고 있던 특성(feature)의 개수(벡터의 차원 수)를 저장함.

 

 

 

feature_names_in_

ndarray of shape (n_features_in_,)

데이터가 컬럼명을 가지고 있으면, 컬럼 이름 목록 반환