계층적 클러스터링
AI
qwen3-30b-a3b
계층적 클러스터링
개요/소개
계층적 클러스터링(Hierarchical Clustering)은 데이터 포인트 간의 유사도를 기반으로 계층 구조를 형성하는 비지도 학습 알고리즘입니다. 이 방법은 데이터의 자연적인 계층 구조를 탐지하고, 군집 간 관계를 시각화하는 데 효과적입니다. 주로 생물학, 마케팅 분석, 이미지 처리 등 다양한 분야에서 활용되며, K-means와 같은 다른 클러스터링 기법과 비교해 유연한 구조를 제공합니다.
개념 및 원리
클러스터링의 정의
클러스터링은 데이터 포인트를 유사도에 따라 그룹화하는 과정입니다. 목적은 동일한 특성을 가진 데이터를 묶고, 다른 그룹과의 차이를 최대화하는 것입니다. 비지도 학습으로, 레이블 없이 데이터의 내재적 구조를 탐지합니다.
계층적 클러스터링의 특징
- 계층 구조 생성: 군집 간 관계를 트리 형태로 표현 (덴드로그램).
- 단계적 접근: 두 가지 주요 방식 (Agglomerative, Divisive)으로 나뉨.
- 수치 설정 필요 없음: K-means와 달리 클러스터 수를 사전에 정하지 않아도 됨.
알고리즘 구조
Agglomerative vs. Divisive
방식 | 설명 |
---|---|
Agglomerative | 초기 단계에서 각 데이터 포인트가 독립적인 클러스터로 시작 → 점차 유사한 클러스터 합침 |
Divisive | 초기 단계에서 모든 데이터를 하나의 클러스터로 시작 → 점차 분할 |
단계별 프로세스
- 유사도 계산: 데이터 포인트 간 거리(예: 유클리드 거리) 또는 유사도 지수 계산.
- 클러스터 병합/분할: 가장 가까운 클러스터를 선택해 합치거나 분할.
- 반복: 모든 데이터가 하나의 클러스터로 통합되거나, 원하는 조건 충족 시 종료.
연결 방법 (Linkage Methods)
Single Linkage
- 정의: 두 클러스터 간 가장 가까운 포인트의 거리.
- 특징: "사슬 효과" 발생 가능 (예: 길고 얇은 클러스터 형성).
Complete Linkage
- 정의: 두 클러스터 간 가장 먼 포인트의 거리.
- 특징: 더 균일한 클러스터 형성, 단점으로 계산 비용이 높음.
Average Linkage
- 정의: 두 클러스터 내 모든 포인트 쌍의 평균 거리.
- 특징: Single과 Complete의 중간 성능, 안정적 결과 제공.
Ward's Method
- 정의: 클러스터 병합 시 분산 증가량을 최소화하는 방식.
- 특징: 구형 클러스터에 적합, K-means와 유사한 결과 도출 가능.
시각화: 덴드로그램
덴드로그램은 계층적 클러스터링의 결과를 트리 형태로 표현한 그래프입니다. 수직선은 데이터 포인트를 나타내고, 수평선은 클러스터 병합 시점과 거리를 표시합니다. 예를 들어, 두 클러스터가 0.5의 거리에서 합쳐졌다면, 해당 수평선이 0.5 높이에 위치합니다.
장단점
장점
- 계층 구조 탐지: 데이터 간 관계를 직관적으로 이해 가능.
- 유연성: 클러스터 수 조정 가능 (예: 덴드로그램에서 특정 높이로 자르기).
- 비선형 구조 처리: K-means와 달리 복잡한 형태의 데이터도 분석 가능.
단점
- 계산 비용: 대규모 데이터에 적합하지 않음 (O(n³) 복잡도).
- 결과 해석 어려움: 덴드로그램이 복잡할 경우 클러스터 정의가 모호해질 수 있음.
응용 분야
분야 | 예시 |
---|---|
생물학 | 유전자 발현 데이터 분석, 종 계층 구조 탐지 |
마케팅 | 고객 세분화, 제품 그룹화 |
이미지 처리 | 객체 분할, 영상 압축 |
사회과학 | 문화적/경제적 집단 분류 |
비교: K-means vs. 계층적 클러스터링
기준 | 계층적 클러스터링 | K-means |
---|---|---|
클러스터 수 설정 | 필요 없음 | 필수 (K 값 선택) |
계산 복잡도 | 높음 (O(n³)) | 낮음 (O(nk)) |
결과 해석 | 계층 구조 제공 | 단일 군집 분할 |
적합한 데이터 유형 | 비선형, 계층적 구조 | 균일한 분포, 구형 클러스터 |
예제 코드 (Python)
from sklearn.cluster import AgglomerativeClustering
import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import dendrogram, linkage
# 데이터 생성
X = [[1, 2], [1.5, 1.8], [5, 8], [8, 8], [1, 0.6], [9, 11]]
# 계층적 클러스터링 실행
model = AgglomerativeClustering(n_clusters=2, affinity='euclidean', linkage='ward')
labels = model.fit_predict(X)
# 덴드로그램 시각화
Z = linkage(X, 'ward')
plt.figure(figsize=(8, 5))
dendrogram(Z)
plt.title('Dendrogram')
plt.xlabel('Sample index')
plt.ylabel('Distance')
plt.show()
관련 문서
AI 생성 콘텐츠 안내
이 문서는 AI 모델(qwen3-30b-a3b)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.