에듀테크 프로젝트 대시보드
계층적 군집화 & DBSCAN
k-평균은 군집 개수 k를 미리 정해야 한다는 한계가 있다. 여기 두 방법은 그럴 필요가 없다. 계층적 군집화는 가까운 것부터 순서대로 병합해 나가다가 원하는 높이에서 자르면 되고, DBSCAN은 "주변에 점이 빽빽한가"라는 밀도만으로 군집과 잡음(noise)을 구분한다.
병합 거리(cut) 슬라이더를 올리면 점점 더 먼 군집들끼리도 하나로 합쳐진다. 아래 타임라인의 세로선이 지금 자르는 위치이며, 그보다 왼쪽(더 가까운) 병합만 적용된다.
점 하나하나를 각자 자기 혼자만의 군집으로 시작한다. 즉 처음엔 군집이 n개다.
모든 군집 쌍 중 가장 가까운 두 군집을 하나로 합친다. 이 병합 거리를 기록한다.
군집이 1개가 될 때까지 ②를 반복한다. 병합 순서와 거리를 나무 모양(덴드로그램)으로 그리면 전체 병합 역사가 한눈에 보인다.
덴드로그램을 특정 거리(cut)에서 수평으로 자르면, 그 순간까지의 병합 결과가 바로 "군집 k개"가 된다. k를 나중에 골라도 되는 것이 k-평균과의 큰 차이다.
반경 eps 안에 자기 자신을 포함해 minPts개 이상의 점이 있으면 "핵심점"이다.
자기는 핵심점 조건을 못 채우지만, 핵심점의 eps 반경 안에 들어가 있으면 그 군집에 속한다.
어떤 핵심점의 반경에도 들지 못하는 외딴 점. 군집에 배정되지 않고 이상치로 남는다.
거리·평균이 아니라 밀도로 판정하므로, k-평균이 잘 못 다루는 초승달·나선형처럼 둥글지 않은 군집도 잘 찾아낸다.
eps를 너무 작게 잡으면 거의 모든 점이 잡음이 되고, 너무 크게 잡으면 모든 게 한 군집으로
뭉쳐버린다. minPts는 보통 데이터 차원 수 + 1 이상으로 잡는 것이 관례다.