728x90
반응형
반응형
1. 계층적 군집 분석(Hierarchical Clustering) 개요
계층적 군집 분석(Hierarchical Clustering)은 데이터를 계층적으로 군집화하는 비지도 학습(Unsupervised Learning) 알고리즘입니다. 군집의 개수를 미리 지정할 필요 없이 데이터를 점진적으로 병합 또는 분할하는 방식으로 작동합니다.
계층적 군집 분석의 주요 특징:
- 군집 수(K)를 사전에 정하지 않아도 됨.
- 군집 간의 계층적 관계를 시각적으로 표현할 수 있음.
- 데이터 특성에 따라 병합(Agglomerative) 또는 분할(Divisive) 방법을 선택 가능.
- 덴드로그램(Dendrogram)을 이용하여 군집 형성 과정을 시각화 가능.
2. 계층적 군집 분석의 작동 원리
계층적 군집 분석은 크게 두 가지 방식으로 나뉩니다.
📌 2.1 병합적 계층적 군집 분석(Agglomerative Hierarchical Clustering)
- Bottom-up 방식: 개별 데이터 포인트를 개별 클러스터로 시작 → 가장 유사한 클러스터를 반복적으로 병합 → 최종적으로 하나의 군집으로 합쳐짐.
- 일반적으로 가장 많이 사용되는 방식.
📌 병합적 군집화 단계
- 각 데이터를 하나의 클러스터로 간주.
- 가장 유사한 두 클러스터를 찾아 병합.
- 위 과정을 반복하여 최종적으로 하나의 클러스터가 될 때까지 수행.
- 덴드로그램(Dendrogram)으로 군집 형성 과정 시각화.
📌 2.2 분할적 계층적 군집 분석(Divisive Hierarchical Clustering)
- Top-down 방식: 전체 데이터를 하나의 클러스터로 시작 → 점진적으로 가장 상이한 클러스터를 분할 → 개별 데이터 포인트까지 분할됨.
- 비교적 덜 사용되는 방법.
3. 거리 측정 방법 (클러스터 유사도 측정 방식)
클러스터 간 거리를 측정하는 방식에 따라 군집 형성 방식이 달라집니다.
거리 측정 방법 설명
Single Linkage (최단 거리) | 가장 가까운 두 점 사이의 거리로 측정 |
Complete Linkage (최장 거리) | 가장 먼 두 점 사이의 거리로 측정 |
Average Linkage (평균 거리) | 클러스터 내 모든 점들의 평균 거리로 측정 |
Centroid Linkage (중심 거리) | 클러스터 중심(centroid) 간 거리로 측정 |
🚀 예시:
👉 Single Linkage를 사용하면 데이터 포인트 간 가장 가까운 거리를 기준으로 군집화가 진행됩니다.
👉 Complete Linkage를 사용하면 데이터 포인트 간 가장 먼 거리를 기준으로 군집화가 진행됩니다.
4. 계층적 군집 분석의 장점과 단점
✅ 장점
- 군집 수(K)를 사전에 지정할 필요 없음 → 덴드로그램을 통해 적절한 K 값을 시각적으로 결정 가능.
- 계층적 관계를 명확히 표현 → 데이터 간 유사도를 시각화하여 이해하기 쉬움.
- 해석이 용이 → 비즈니스 영역에서 직관적으로 활용 가능.
- 이상치 탐지에 유용 → 이상치는 계층적으로 분리되며 명확히 구분됨.
❌ 단점
- 대규모 데이터 처리 어려움 → 데이터 수가 많을수록 계산 복잡도가 급격히 증가.
- 한 번 형성된 군집은 수정 불가능(Greedy Algorithm) → 초기 설정이 중요한 영향을 미침.
- 데이터 추가/삭제 시 결과 변화 가능 → 데이터가 변경될 때마다 재계산이 필요함.
5. 계층적 군집 분석 구현 (Python)
🚀 실습 1: 덴드로그램(Dendrogram) 생성하기
Python의 scipy.cluster.hierarchy를 사용하여 덴드로그램을 생성할 수 있습니다.
# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import scipy.cluster.hierarchy as sch
#데이터 생성
df = pd.read_csv('../data/Cust_Spend_Data.csv')
df
X = df.iloc[ : ,2:]
X
# 덴드로그램 시각화
sch.dendrogram( sch.linkage(X, method = 'ward') )
plt.show()
🔍 설명:
- sch.linkage(X, method='ward')를 사용하여 데이터의 계층적 관계를 생성.
- sch.dendrogram()을 이용하여 덴드로그램을 시각화.
🚀 실습 2: Agglomerative Hierarchical Clustering (병합적 계층적 군집화)
from sklearn.cluster import AgglomerativeClustering
# Agglomerative Clustering 모델 생성 (군집 개수: 3)
hc = AgglomerativeClustering(n_clusters = 3)
y_pred = hc.fit_predict( X )
df['Group'] = y_pred
df
🔍 설명:
- AgglomerativeClustering(n_clusters=3, linkage='ward'): 3개의 클러스터로 병합적 군집화 수행.
- fit_predict(X): 데이터에 대해 군집화 진행 후 각 데이터 포인트에 대한 군집 할당.
6. 계층적 군집 분석 결과 해석
🔹 1. 덴드로그램 해석
- 수평선이 길수록 클러스터 간 차이가 큼 → 즉, 먼 거리에서 병합됨.
- 짧은 수평선 → 클러스터들이 유사하여 가까운 거리에서 병합됨.
- 적절한 K 값 설정 방법:
- 덴드로그램에서 가장 긴 수직선을 찾아 그 지점을 기준으로 클러스터 개수 결정.
🔹 2. 군집 해석
- 각 군집이 의미하는 바를 해석하고 도메인 지식을 적용하여 활용 가능.
- 비즈니스에서 고객 세분화, 문서 분류, 생물학적 분류 등에 응용 가능.
7. 계층적 군집 분석 활용 분야
✅ 마케팅 및 고객 세분화
👉 고객 데이터를 바탕으로 비슷한 행동 패턴을 보이는 그룹을 찾아 맞춤형 마케팅 진행.
✅ 의료 데이터 분석
👉 환자의 유전자 데이터나 건강 상태를 기반으로 유사한 특성을 가진 그룹을 식별.
✅ 이미지 분류
👉 비슷한 스타일의 사진이나 그림을 자동으로 그룹화.
✅ 이상 탐지
👉 이상치를 탐지하여 금융 사기 예방이나 시스템 장애 감지.
728x90
반응형
'AI > 이론' 카테고리의 다른 글
154. [AI] [Fine-Tuning] Transformer 모델을 활용한 감성 분석 (0) | 2025.02.19 |
---|---|
153. [AI] [Fine-Tuning] Pipeline을 활용한 이미지 생성 (0) | 2025.02.18 |
136. [Python] [Machine Learning] : 비지도 학습(Unsupervised Learning)의 알고리즘 종류 (0) | 2025.01.31 |
135. [Python] [Machine Learning] : K-평균 군집화(K-Means Clustering) (0) | 2025.01.31 |
134. [Python] [Machine Learning] : 의사결정나무(Decision Tree) (2) | 2025.01.31 |