본문 바로가기

TIL

[240402] 클러스터링 분석 - ③ 계층적 군집화와 덴드로그램

[파이썬으로 하는 클러스터링 분석 by 강민구 튜터]

 

1. 계층적 군집화 (Hierarchical Clustering)

1) 정의

- 각 개별 데이터를 하나의 군집으로 가정하고, 가까이 있는 군집부터 순차적으로 합치는 방식

 └ 다른 말로 하면, 여러 군집들을 모아서 하나의 커다란 군집을 만드는 과정 
- 덴드로그램이라는 트리 형태 그래프로 시각화 가능 

출처 -  https://www.datacamp.com/tutorial/introduction-hierarchical-clustering-python


2) 계층적 군집화 방식
 ① Agglomerative Clustering(상향식 군집화)
   - 각각의 데이터를 하나의 군집으로 여기고, bottom-up으로 묶어나가는 방식
   - 일반적으로 이야기하는 계층적 군집화는 상향식 군집화에 해당 
 ② Divisive Clustering(하향식 군집화)
  - 전체 데이터가 포함된 하나의 군집을 top-down 방식으로 영역을 쪼개며 구분하는 방식

  - 절반씩 쪼개면서 세분화 해나가는 것이 일반적 

3) 계층적 군집화의 장점
① 군집의 갯수를 정할 필요 없음

 - 다른 알고리즘은 어떤 것이 최적의 클러스터링 개수인지도 모른 채 군집 개수를 임의로 정해야 함

 - 계층적 군집화는 진행한 후, 결과를 바탕으로 원하는 수 만큼의 군집 선택(cutting) 가능
클러스터 간 계층적 관계를 찾아낼 수도 있음 (ex. 택소노미(Taxonomy))

출처 -  https://images.app.goo.gl/BPpswRoidLMQeMco9


4) 계층적 군집화 방법 및 과정 
① 군집 간 거리 측정 방법

출처 -  https://www.analyticsvidhya.com/blog/2021/06/single-link-hierarchical-clustering-clearly-explained/

🌰 계층적 군집화에서는 클러스터 간 Linkage(링키지)라고 부르는데, distance랑 유사한 의미

 

 (1) Single Linkage: 두 군집 사이 최소 거리를 이용
 (2) Complete Linkage: 두 군집 사이 최대 거리를 이용
 (3) Average Linkage: 포인트와 포인트 사이 모든 거리들의 평균
 (4) Centroid Linkage: 각 군집의 centroid 값 사이 거리 (가장 중간, 즉 무게 중심 간 거리) 
 (5) Ward Linkage: 군집 전후 Centroid과 거리 제곱합의 차이를 이용 

출처 -  https://github.com/pilsung-kang/Business-Analytics-ITS504-

 

  · 한 군집으로 만들 두 개의 클러스터의 각각의 평균(Centroid)과의 거리 제곱합(SSE)을 계산
  · 두 클러스터를 하나의 군집으로 만들었을 때의 새로운 평균과의 거리 제곱합을 계산

  · 두 값의 차이인 Ward distance가 가장 작은 경우에 두 클러스터를 합침


② 계층적 군집화 진행 과정

 

출처 -  https://medium.com/@chandu.bathula16/everything-to-know-about-hierarchical-clustering-agglomerative-clustering-divisive-clustering-badf31ae047


- 각각의 데이터를 크기 1의 군집으로 정의

- 거리가 가장 가까운 두 개의 군집을 하나로 합쳐나가는 과정 반복

- 최종적으로 하나의 군집(모든 데이터를 포함한 군집)으로 묶이면 멈춤 
 └ 군집의 갯수: (시작) n개 → (끝) 1개
 └ 각 군집의 크기: (시작) 1개 → (끝) n개

 

2. 덴드로그램(Dendrogram)

1) 정의
- 나무(déndron)를 나타내는 다이어그램(grámma)
- 계층적 군집화 결과를 한 눈에 볼 수 있어 시각화 과정에 거의 대부분 사용

출처 -  https://github.com/pilsung-kang/Business-Analytics-ITS504-


2) 덴드로그램 작성 과정

출처 - https://dashee87.github.io/data  science/general/Clustering-with-Scikit-with-GIFs/


- 거리가 가장 가까운 두 군집을 ‘ㄷ’ 형태로 잇기 
└ 이때 나무 높이(y축)는 두 군집 사이의 거리에 해당 (짧을 수록 가까운 것)
데이터와 데이터 사이를 이을 때는 가로축에 나열된 두 점을 잇기 
데이터와 군집 사이를 이을 때는 데이터와 군집의 가운데 점을 잇기

- 거리가 가까운 순으로 계속해서 모든 데이터가 하나의 군집으로 묶일 때까지 위 작업 반복