728x90
반응형
SMALL
이전 글에서는 K-Means 클러스터링을 통해 비지도 학습에서 데이터를 그룹으로 나누는 기본적인 방법을 알아보았습니다.
이번에는 그보다 더 유연하고 복잡한 데이터를 다룰 수 있는 고급 군집 기법 두 가지인 계층적 군집(Hierarchical Clustering)과 DBSCAN을 소개하겠습니다.
1️⃣ 계층적 군집 (Hierarchical Clustering)
계층적 군집은 데이터를 군집화할 때 계층적인 구조를 만들어나가는 방식입니다.
K-Means와는 달리, 클러스터 개수를 사전에 지정할 필요가 없다는 점이 큰 특징입니다.
이 구조는 덴드로그램(Dendrogram)이라는 트리 형태의 그래프로 시각화할 수 있어 해석이 직관적입니다.
✅ 주요 방식
방식 | 설명 |
병합형(Agglomerative) | 각 데이터를 하나의 클러스터로 시작하여 점차 병합해 나가는 방식 (가장 많이 사용됩니다) |
분할형(Divisive) | 모든 데이터를 하나의 클러스터로 시작한 뒤 점점 나누는 방식 |
📌 실습: 덴드로그램을 활용한 계층적 군집 시각화
import numpy as np
import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import dendrogram, linkage
from sklearn.datasets import make_blobs
# 데이터 생성
X, _ = make_blobs(n_samples=50, centers=3, random_state=42)
# 계층적 군집 수행 (Ward 방법 사용)
linkage_matrix = linkage(X, method='ward')
# 덴드로그램 시각화
plt.figure(figsize=(10, 5))
dendrogram(linkage_matrix)
plt.title("Hierarchical Clustering Dendrogram")
plt.xlabel("Sample Index")
plt.ylabel("Distance")
plt.show()
🔍 해석 팁
- 덴드로그램의 수직선을 수평으로 자르는 선을 기준으로 군집 수를 시각적으로 결정할 수 있습니다.
- 예를 들어, 긴 수직선을 자르면 상대적으로 명확하게 분리된 클러스터를 얻을 수 있습니다.
2️⃣ DBSCAN (Density-Based Spatial Clustering of Applications with Noise)
DBSCAN은 밀도(Density)를 기준으로 클러스터를 형성하는 알고리즘입니다.
K-Means와는 달리 비구형(복잡한 형태)의 데이터도 잘 분리할 수 있고, 특히 이상치(Outlier) 탐지에 뛰어난 성능을 보입니다.
✅ 핵심 개념
- eps: 반경 거리. 이 범위 안에 얼마나 많은 데이터 포인트가 있는지를 확인합니다.
- min_samples: 해당 반경 안에 있어야 할 최소 데이터 수.
- 이 조건을 만족하는 포인트를 핵심 포인트(core point)로 정의하고, 인접한 포인트들을 확장하며 클러스터를 구성합니다.
- 밀도가 낮은 포인트는 노이즈(이상치)로 분류됩니다.
📌 실습: DBSCAN을 이용한 비선형 데이터 클러스터링
from sklearn.cluster import DBSCAN
from sklearn.datasets import make_moons
import matplotlib.pyplot as plt
# 비선형 구조의 데이터 생성
X, _ = make_moons(n_samples=300, noise=0.05, random_state=42)
# DBSCAN 모델 적용
dbscan = DBSCAN(eps=0.2, min_samples=5)
labels = dbscan.fit_predict(X)
# 결과 시각화
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap="viridis", edgecolors="k")
plt.title("DBSCAN Clustering")
plt.show()
🔍 결과 해석
- make_moons는 비선형 구조를 가진 데이터셋으로, K-Means가 잘 분리하지 못하는 데이터입니다.
- DBSCAN은 이런 비선형 구조를 잘 감지하고, 밀도가 낮은 점들은 이상치로 구분할 수 있습니다.
- labels == -1인 데이터는 노이즈(이상치)로 간주됩니다.
🏆 오늘의 핵심 요약
항목 | 설명 |
✅ 계층적 군집 | 덴드로그램으로 시각화 가능하며, 클러스터 수를 시각적으로 결정할 수 있습니다. |
✅ DBSCAN | 밀도 기반 알고리즘으로, 복잡한 형태의 데이터나 이상치 탐지에 강력한 성능을 보입니다. |
728x90
반응형
LIST
'인공지능 (AI) > 머신러닝 (ML)' 카테고리의 다른 글
10 - 나에게 딱 맞는 콘텐츠는 어떻게 찾아질까?: 추천 시스템과 협업 필터링 (0) | 2025.04.04 |
---|---|
9 - 복잡한 데이터를 간단하게 보기: 차원 축소와 PCA, t-SNE (0) | 2025.04.03 |
7 - 정답 없이 배우는 머신러닝: 비지도 학습과 K-Means 클러스터링 (0) | 2025.04.03 |
6 - 숫자부터 문자까지, 분류의 확장: 다중 클래스 분류와 소프트맥스 회귀 (0) | 2025.04.03 |
5 - 분류의 시작: 로지스틱 회귀와 시그모이드 함수 (0) | 2025.04.03 |