DBSCAN 클러스터링 알고리즘: 두 판 사이의 차이

기술노트
(CS 용어 정리 - DBSCAN 클러스터링 알고리즘 추가)
 
편집 요약 없음
 
(같은 사용자의 중간 판 5개는 보이지 않습니다)
1번째 줄: 1번째 줄:
=== DBSCAN 클러스터링 알고리즘 ===
== DBSCAN 클러스터링 알고리즘 ==


> 여러 클러스터링 알고리즘 中 '밀도 방식'사용
'''DBSCAN'''(Density-Based Spatial Clustering of Applications with Noise)은 데이터가 밀집된 정도(밀도)에 따라 군집(클러스터)나누는 알고리즘이다.


K-Means나 Hierarchical 클러스터링처럼 군집간의 거리를 이용해 클러스터링하는 방법이 아닌, 점이 몰려있는 '''밀도가 높은 부분으로 클러스터링 하는 방식'''이다.
쉽게 말해, 데이터가 많이 몰려 있는 곳을 하나의 군집으로 판단하는 방법이다.


`반경과 점의 수`로 군집을 만든다.
----


<br>
=== 기본 개념 ===


<img src="https://3.bp.blogspot.com/-rDYuyg00Z0w/WXA-OQpkAfI/AAAAAAAAI_I/QshfNVNHD_wXJwXEipRIVzDSX5iOEAy2wCEwYBhgL/s320/DBSCAN_Points.PNG">
군집화를 위해 다음 두 가지 값을 정한다.


<br>
* '''Epsilon(ε)''': 특정 점을 기준으로 주변을 확인할 반경
* '''MinPts''': 하나의 군집을 이루기 위한 최소 점 개수


반경 Epsilon과 최소 점의 수인 minpts를 정한다.
----


하나의 점에서 Epsilon 안에 존재하는 점의 수를 센다. 이때, 반경 안에 속한 점이 minpts로 정한 수 이상이면 해당 점은 'core point'라고 부른다.
=== DBSCAN의 세 가지 핵심 요소 ===


<img src="https://t1.daumcdn.net/cfile/tistory/9930A63359E057BA1A" height=200>
;1. '''중심점 (Core Point)'''
:한 점을 중심으로 Epsilon 반경 안에 MinPts 개 이상의 점이 존재할 때 중심점이 된다.
:예) 반경 5m 내에 4명 이상의 사람이 있다면 중심점이다.


> 현재 점 P에서 4개 이상의 점이 속했기 때문에, P는 core point다.
;2. '''경계점 (Border Point)'''
:Epsilon 반경 내에 MinPts보다 적은 수의 점이 존재하는 경우 경계점이 된다.
:군집의 외곽을 구성하며 중심점이 아니다.
:예) 반경 5m 내에 3명 이하만 있다면 경계점이다.


<br>
;3. '''잡음점 (Noise Point)'''
:Epsilon 반경 내에 점이 전혀 없거나, 군집에서 떨어진 경우 잡음점으로 분류된다.
:예) 반경 5m 내에 아무도 없다면 잡음점이다.


Core point에 속한 점들부터 또 Epsilon을 확인하여 체크한다. (DFS 활용)
----


이때 4개 미만의 점이 속하게 되면, 해당 점은 'border point'라고 부른다.
=== 시각적 예시 ===


<img src="https://t1.daumcdn.net/cfile/tistory/996B8A3359E057BA27" height=200>
{| class="wikitable" style="text-align:center;"
|-
! 중심점(Core Point) !! 경계점(Border Point) !! 잡음점(Noise Point)
|-
| style="background:#e0f7ff;" | 군집의 중심<br />주변 점이 많음
| style="background:#fff2cc;" | 군집의 경계<br />주변 점이 적음
| style="background:#fbeaea;" | 군집 외부<br />주변 점이 없음
|}


> P2는 Epsilon 안에 3개의 점만 존재하므로 minpts = 4 미만이기 때문에 border point이다.
[[파일:DBSCAN_example.png|500px|가운데]]


보통 이와 같은 border point는 군집화를 마쳤을 때 클러스터의 외곽에 해당한다. (해당 점에서는 확장되지 않게되기 때문)
* 파란색: '''중심점(Core Point)'''
* 노란색: '''경계점(Border Point)'''
* 빨간색: '''잡음점(Noise Point)'''


<br>
''※ 이미지 업로드 방법: 
위키 메뉴의 [파일 올리기]를 통해 이미지를 업로드한 후, 
위와 같이 이미지 이름으로 불러오세요.''


마지막으로, 하나의 점에서 Epslion을 확인했을 때 어느 집군에도 속하지 않는 점들이 있을 것이다. 이러한 점들을 outlier라고 하고, 'noise point'에 해당한다.
----


<img src="https://t1.daumcdn.net/cfile/tistory/99D7893359E057B938" height=200>
=== 알고리즘 동작 과정 요약 ===


> P4는 반경 안에 속하는 점이 아무도 없으므로 noise point다.
* Epsilon 반경 안에 MinPts 이상의 점 존재 → '''중심점''' → 군집 형성 시작
* 중심점에서 연결된 점들 중 MinPts 미만 → '''경계점''' → 군집 확장 중지
* 어느 군집에도 연결되지 않음 → '''잡음점''' (군집에서 제외)


DBSCAN 알고리즘은 이와 같이 군집에 포함되지 않는 아웃라이어 검출에 효율적이다.
----


<br>
=== DBSCAN의 장점 ===


<br>
* 군집의 개수를 사전에 정하지 않아도 된다.
* 다양한 형태의 군집을 찾아낼 수 있다.
* 이상치(잡음점) 탐지가 쉽다.


전체적으로 DBSCAN 알고리즘을 적용한 점들은 아래와 같이 구성된다.
----


<img src="https://t1.daumcdn.net/cfile/tistory/99CC563359E057BA25" height=200>
=== DBSCAN의 단점 ===


<br>
* 반경(Epsilon) 설정에 민감하다.
** Epsilon이 너무 작으면 군집이 잘게 나누어진다.
** Epsilon이 너무 크면 군집이 하나로 뭉쳐버린다.


##### 정리
----


초반에 지정한 Epsilon 반경 안에 minpts 이상의 점으로 구성된다면, 해당 점을 중심으로 군집이 형성되고, core point로 지정한다. core point가 서로 다른 core point 군집의 일부가 되면 서로 연결되어 하나의 군집이 형성된다.
=== 참고 자료 ===


이때 군집에는 속해있지만 core point가 아닌 점들을 border point라고 하며, 아무곳에도 속하지 않는 점은 noise point가 된다.
* [https://bcho.tistory.com/1205?category=555440 DBSCAN 이해하기]
* [https://practice2code.blogspot.com/2017/07/dbscan-clustering-algorithm.html DBSCAN 예시]


<br>
----


<br>
=== 한 줄 요약 ===


===== DBSCAN 장점 =====
> '''DBSCAN은 데이터가 밀집된 부분을 중심으로 군집을 형성하는 밀도 기반 클러스터링 알고리즘이다.'''
 
* 클러스터의 수를 미리 정하지 않아도 된다.
 
  > K-Means 알고리즘처럼 미리 점을 지정해놓고 군집화를 하지 않아도 된다.
 
* 다양한 모양과 크기의 클러스터를 얻는 것이 가능하다.
 
* 모양이 기하학적인 분포라도, 밀도 여부에 따라 군집도를 찾을 수 있다.
 
* 아웃라이어 검출을 통해 필요하지 않은 noise 데이터를 검출하는 것이 가능하다.
 
<br>
 
===== DBSCAN 단점 =====
 
* Epslion에 너무 민감하다.
 
  > 반경으로 설정한 값에 상당히 민감하게 작용된다. 따라서 DBSCAN 알고리즘을 사용하려면 적절한 Epsilon 값을 설정하는 것이 중요하다.
 
<br>
 
<br>
 
##### [참고 자료]
 
[링크](<https://bcho.tistory.com/1205?category=555440>)
 
[링크](<https://practice2code.blogspot.com/2017/07/dbscan-clustering-algorithm.html>)

2025년 4월 26일 (토) 12:33 기준 최신판

DBSCAN 클러스터링 알고리즘

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)은 데이터가 밀집된 정도(밀도)에 따라 군집(클러스터)을 나누는 알고리즘이다.

쉽게 말해, 데이터가 많이 몰려 있는 곳을 하나의 군집으로 판단하는 방법이다.


기본 개념

군집화를 위해 다음 두 가지 값을 정한다.

  • Epsilon(ε): 특정 점을 기준으로 주변을 확인할 반경
  • MinPts: 하나의 군집을 이루기 위한 최소 점 개수

DBSCAN의 세 가지 핵심 요소

1. 중심점 (Core Point)
한 점을 중심으로 Epsilon 반경 안에 MinPts 개 이상의 점이 존재할 때 중심점이 된다.
예) 반경 5m 내에 4명 이상의 사람이 있다면 중심점이다.
2. 경계점 (Border Point)
Epsilon 반경 내에 MinPts보다 적은 수의 점이 존재하는 경우 경계점이 된다.
군집의 외곽을 구성하며 중심점이 아니다.
예) 반경 5m 내에 3명 이하만 있다면 경계점이다.
3. 잡음점 (Noise Point)
Epsilon 반경 내에 점이 전혀 없거나, 군집에서 떨어진 경우 잡음점으로 분류된다.
예) 반경 5m 내에 아무도 없다면 잡음점이다.

시각적 예시

중심점(Core Point) 경계점(Border Point) 잡음점(Noise Point)
군집의 중심
주변 점이 많음
군집의 경계
주변 점이 적음
군집 외부
주변 점이 없음
  • 파란색: 중심점(Core Point)
  • 노란색: 경계점(Border Point)
  • 빨간색: 잡음점(Noise Point)

※ 이미지 업로드 방법: 위키 메뉴의 [파일 올리기]를 통해 이미지를 업로드한 후, 위와 같이 이미지 이름으로 불러오세요.


알고리즘 동작 과정 요약

  • Epsilon 반경 안에 MinPts 이상의 점 존재 → 중심점 → 군집 형성 시작
  • 중심점에서 연결된 점들 중 MinPts 미만 → 경계점 → 군집 확장 중지
  • 어느 군집에도 연결되지 않음 → 잡음점 (군집에서 제외)

DBSCAN의 장점

  • 군집의 개수를 사전에 정하지 않아도 된다.
  • 다양한 형태의 군집을 찾아낼 수 있다.
  • 이상치(잡음점) 탐지가 쉽다.

DBSCAN의 단점

  • 반경(Epsilon) 설정에 민감하다.
    • Epsilon이 너무 작으면 군집이 잘게 나누어진다.
    • Epsilon이 너무 크면 군집이 하나로 뭉쳐버린다.

참고 자료


한 줄 요약

> DBSCAN은 데이터가 밀집된 부분을 중심으로 군집을 형성하는 밀도 기반 클러스터링 알고리즘이다.