한양과학기술고등학교

에듀테크 프로젝트 대시보드

계층적 군집화 & DBSCAN

계층적 군집화 & DBSCAN

k-평균은 군집 개수 k를 미리 정해야 한다는 한계가 있다. 여기 두 방법은 그럴 필요가 없다. 계층적 군집화는 가까운 것부터 순서대로 병합해 나가다가 원하는 높이에서 자르면 되고, DBSCAN은 "주변에 점이 빽빽한가"라는 밀도만으로 군집과 잡음(noise)을 구분한다.

1. 같은 데이터, 두 가지 방법으로 군집화

병합 거리(cut) 슬라이더를 올리면 점점 더 먼 군집들끼리도 하나로 합쳐진다. 아래 타임라인의 세로선이 지금 자르는 위치이며, 그보다 왼쪽(더 가까운) 병합만 적용된다.

—

2. 계층적 군집화 (Agglomerative Clustering)

초기화

점 하나하나를 각자 자기 혼자만의 군집으로 시작한다. 즉 처음엔 군집이 n개다.

최근접 쌍 병합

모든 군집 쌍 중 가장 가까운 두 군집을 하나로 합친다. 이 병합 거리를 기록한다.

반복

군집이 1개가 될 때까지 ②를 반복한다. 병합 순서와 거리를 나무 모양(덴드로그램)으로 그리면 전체 병합 역사가 한눈에 보인다.

원하는 높이에서 자르기

덴드로그램을 특정 거리(cut)에서 수평으로 자르면, 그 순간까지의 병합 결과가 바로 "군집 k개"가 된다. k를 나중에 골라도 되는 것이 k-평균과의 큰 차이다.

"가장 가까운 두 군집"의 거리를 재는 방법(연결법)에는 여러 방식이 있다 — 단일 연결(single-linkage)은 두 군집에서 가장 가까운 점끼리의 거리, 완전 연결(complete-linkage)은 가장 먼 점끼리의 거리, 평균 연결은 모든 쌍의 평균 거리를 쓴다. 이 데모는 단일 연결을 사용하며, 이는 최소 신장 트리(MST)의 간선을 거리순으로 하나씩 잇는 것과 수학적으로 동일하다.

3. DBSCAN — 밀도로 군집과 잡음을 가르기

핵심점 (Core Point)

반경 eps 안에 자기 자신을 포함해 minPts개 이상의 점이 있으면 "핵심점"이다.

경계점 (Border Point)

자기는 핵심점 조건을 못 채우지만, 핵심점의 eps 반경 안에 들어가 있으면 그 군집에 속한다.

잡음 (Noise)

어떤 핵심점의 반경에도 들지 못하는 외딴 점. 군집에 배정되지 않고 이상치로 남는다.

임의의 모양

거리·평균이 아니라 밀도로 판정하므로, k-평균이 잘 못 다루는 초승달·나선형처럼 둥글지 않은 군집도 잘 찾아낸다.

eps를 너무 작게 잡으면 거의 모든 점이 잡음이 되고, 너무 크게 잡으면 모든 게 한 군집으로 뭉쳐버린다. minPts는 보통 데이터 차원 수 + 1 이상으로 잡는 것이 관례다.

핵심 정리

  • 둘 다 k를 미리 정하지 않아도 되는 군집화 방법
  • 계층적 군집화: 가까운 것부터 병합, 덴드로그램을 원하는 높이에서 잘라 군집 수 결정
  • DBSCAN: 밀도가 기준 — 핵심점·경계점·잡음으로 구분, 이상치 탐지에도 유용
  • k-평균이 못 다루는 비볼록(non-convex) 모양이나 미리 알 수 없는 군집 수에 강하다