Allen's 데이터 맛집

DBSCAN - 밀도 기반 클러스터링 알고리즘 본문

Data Analysis/통계&분석

DBSCAN - 밀도 기반 클러스터링 알고리즘

Allen93 2024. 2. 15. 00:45

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)은 밀도 기반의 클러스터링 알고리즘으로, 데이터 포인트의 밀도에 따라 클러스터를 형성합니다. 이 알고리즘은 데이터의 밀도가 높은 지역을 클러스터로 간주하고, 데이터 포인트들 간의 거리를 기반으로 클러스터를 식별합니다. DBSCAN은 노이즈를 자동으로 처리할 수 있는 장점이 있어 실제로 많이 사용되는 알고리즘 중 하나입니다.

 

 

dbscan

이미지출처:https://medium.com/@jayaramganesh238/dbscan-clustering-dea27873ed30

 

 

장점



1. 유연성: 클러스터의 모양에 대한 가정이 없어 다양한 형태의 클러스터를 식별할 수 있습니다.
2. 이상치 탐지: 노이즈 포인트로 분류되는 데이터를 이상치로 쉽게 식별할 수 있습니다.
3. 자동 클러스터링: 클러스터의 개수를 사전에 정의할 필요가 없고, 데이터의 밀도를 기반으로 자동으로 클러스터를 형성합니다.

 


단점


1. 하이퍼파라미터 설정: eps와 min_samples와 같은 파라미터의 설정에 따라 클러스터링 결과가 크게 달라질 수 있으며, 이를 설정하는 것이 어려울 수 있습니다.
2. 큰 데이터셋 처리: 데이터가 매우 큰 경우에는 계산 비용이 많이 들 수 있습니다.

 


사용 시기


1. 이상치 탐지: 데이터에서 이상치를 식별하고 싶을 때 사용합니다.
2. 비정형 데이터 클러스터링: 이미지, 텍스트 등과 같은 비정형 데이터의 클러스터링에 유용합니다.

 

 


DBSCAN 알고리즘의 주요 파라미터는 다음과 같습니다:

1. eps(epsilon): 이웃 포인트를 정의하기 위한 거리 임계값입니다. eps 거리 안에 있는 데이터 포인트들은 서로 이웃으로 간주됩니다.


2. min_samples: 클러스터를 형성하기 위한 최소 데이터 포인트 수입니다. eps 거리 안에 min_samples 이상의 이웃이 있는 데이터 포인트는 핵심 포인트(core point)로 간주됩니다.

 


DBSCAN 알고리즘은 다음과 같은 과정으로 동작합니다:

1. 임의의 데이터 포인트를 선택합니다.


2. 해당 데이터 포인트의 eps 거리 안에 min_samples 이상의 이웃이 있으면, 이 데이터 포인트를 핵심 포인트로 간주하고, 이웃 데이터 포인트를 클러스터에 추가합니다.


3. 이웃 데이터 포인트가 핵심 포인트인 경우, 해당 이웃의 이웃을 검사하여 클러스터에 추가합니다. 이 과정을 계속 반복하여 클러스터를 확장합니다.


4. 핵심 포인트가 아닌 데이터 포인트는 경계 포인트(border point)로 간주됩니다. 경계 포인트는 클러스터에 속하지만 자체로는 핵심 포인트가 아닙니다.


5. 클러스터에 속하지 않는 데이터 포인트는 노이즈 포인트(noise point)로 간주됩니다.

 

 

 


따라서 DBSCAN을 사용하여 이상치를 분석하고 밀집도 있는 클러스터 패턴을 찾으려면 다음과 같은 과정을 수행할 수 있습니다:



1. 주어진 데이터셋에서 DBSCAN을 사용하여 클러스터를 형성합니다.


2. 클러스터링 결과를 시각화하여 밀집도가 높은 클러스터를 식별합니다.


3. 노이즈 포인트로 분류된 데이터 포인트들을 이상치로 간주합니다. 노이즈 포인트는 어떤 클러스터에도 속하지 않는 데이터 포인트들로, 주어진 데이터셋에서 밀집도가 낮거나 유독한 데이터를 나타낼 수 있습니다.


4. 이상치로 분류된 데이터 포인트들을 분석하여 해당 패턴이 데이터에서 유의미한 정보를 제공하는지 확인합니다.

 

 


DBSCAN은 데이터의 밀도 기반으로 클러스터를 형성하기 때문에 이상치 분석과 클러스터 패턴 식별에 효과적입니다. 그러나 eps와 min_samples와 같은 파라미터를 적절하게 설정하는 것이 중요하며, 실제 데이터의 특성과 목적에 따라 조정해야 할 수 있습니다.