[파이썬으로 하는 클러스터링 분석 by 강민구 튜터]
1. 계층적 군집화 (Hierarchical Clustering)
1) 정의
- 각 개별 데이터를 하나의 군집으로 가정하고, 가까이 있는 군집부터 순차적으로 합치는 방식
└ 다른 말로 하면, 여러 군집들을 모아서 하나의 커다란 군집을 만드는 과정
- 덴드로그램이라는 트리 형태 그래프로 시각화 가능
2) 계층적 군집화 방식
① Agglomerative Clustering(상향식 군집화)
- 각각의 데이터를 하나의 군집으로 여기고, bottom-up으로 묶어나가는 방식
- 일반적으로 이야기하는 계층적 군집화는 상향식 군집화에 해당
② Divisive Clustering(하향식 군집화)
- 전체 데이터가 포함된 하나의 군집을 top-down 방식으로 영역을 쪼개며 구분하는 방식
- 절반씩 쪼개면서 세분화 해나가는 것이 일반적
3) 계층적 군집화의 장점
① 군집의 갯수를 정할 필요 없음
- 다른 알고리즘은 어떤 것이 최적의 클러스터링 개수인지도 모른 채 군집 개수를 임의로 정해야 함
- 계층적 군집화는 진행한 후, 결과를 바탕으로 원하는 수 만큼의 군집 선택(cutting) 가능
② 클러스터 간 계층적 관계를 찾아낼 수도 있음 (ex. 택소노미(Taxonomy))
4) 계층적 군집화 방법 및 과정
① 군집 간 거리 측정 방법
🌰 계층적 군집화에서는 클러스터 간 Linkage(링키지)라고 부르는데, distance랑 유사한 의미
(1) Single Linkage: 두 군집 사이 최소 거리를 이용
(2) Complete Linkage: 두 군집 사이 최대 거리를 이용
(3) Average Linkage: 포인트와 포인트 사이 모든 거리들의 평균
(4) Centroid Linkage: 각 군집의 centroid 값 사이 거리 (가장 중간, 즉 무게 중심 간 거리)
(5) Ward Linkage: 군집 전후 Centroid과 거리 제곱합의 차이를 이용
· 한 군집으로 만들 두 개의 클러스터의 각각의 평균(Centroid)과의 거리 제곱합(SSE)을 계산
· 두 클러스터를 하나의 군집으로 만들었을 때의 새로운 평균과의 거리 제곱합을 계산
· 두 값의 차이인 Ward distance가 가장 작은 경우에 두 클러스터를 합침
② 계층적 군집화 진행 과정
- 각각의 데이터를 크기 1의 군집으로 정의
- 거리가 가장 가까운 두 개의 군집을 하나로 합쳐나가는 과정 반복
- 최종적으로 하나의 군집(모든 데이터를 포함한 군집)으로 묶이면 멈춤
└ 군집의 갯수: (시작) n개 → (끝) 1개
└ 각 군집의 크기: (시작) 1개 → (끝) n개
2. 덴드로그램(Dendrogram)
1) 정의
- 나무(déndron)를 나타내는 다이어그램(grámma)
- 계층적 군집화 결과를 한 눈에 볼 수 있어 시각화 과정에 거의 대부분 사용
2) 덴드로그램 작성 과정
- 거리가 가장 가까운 두 군집을 ‘ㄷ’ 형태로 잇기
└ 이때 나무 높이(y축)는 두 군집 사이의 거리에 해당 (짧을 수록 가까운 것)
└ 데이터와 데이터 사이를 이을 때는 가로축에 나열된 두 점을 잇기
└ 데이터와 군집 사이를 이을 때는 데이터와 군집의 가운데 점을 잇기
- 거리가 가까운 순으로 계속해서 모든 데이터가 하나의 군집으로 묶일 때까지 위 작업 반복
'TIL' 카테고리의 다른 글
[240404] 클러스터링 분석 - ④ K-means 군집화 (0) | 2024.04.04 |
---|---|
[240403] 클러스터링 분석 - ③ 계층적 군집화와 덴드로그램 (실습) (1) | 2024.04.03 |
[240401] 파이썬 유저 코호트 분석 (월별/주차별) (0) | 2024.04.01 |
[240329] 파이썬 sqlalchmey로 SQL DB 연동해 데이터 불러오기 (0) | 2024.04.01 |
[240328] 파이썬: 코드카타 49 & SQL: 코드카타 167 (0) | 2024.03.28 |