클러스터탐지로 데이터 군집 구조 해석하기
클러스터탐지의 전처리, 거리 설계, 알고리즘 선택, 군집 평가와 대표값 기반 프로파일링 방법을 정리한다.
2026-08-14 · 최초 발행 2025-10-14
라벨 없는 데이터에서 집단의 성격을 찾는 방법
클러스터탐지는 라벨이 없는 데이터를 유사도에 따라 여러 집단으로 나누는 비지도 학습 기법이다. 군집 내부의 응집도는 높이고 군집 사이의 분리도는 크게 만드는 것이 목적이며, 결과로 군집 레이블, 대표값, 군집별 특성 요약을 얻는다.
분석의 핵심은 단순히 데이터를 나누는 데 있지 않다. 센트로이드처럼 평균 벡터를 쓰거나, 실제 샘플 가운데 중심 역할을 하는 메도이드, 모드 또는 프로토타입을 사용해 각 군집을 설명한다. 이 대표값을 바탕으로 군집 프로파일을 만들고, 상·하위 기여 특징과 의사결정 규칙을 도출할 수 있다.
K-Means는 사전에 정한 K개 집단으로 데이터를 분할하고, 거리 최소화 기준에 따라 센트로이드를 갱신한다. 탐색적 분석에 쓰기 쉽고 다양한 데이터셋에 적용할 수 있으며 대규모 데이터에도 효율적이다. 반면 군집 수를 미리 결정해야 하고 거리와 가중치 설계가 필요하다. 비구형이거나 밀도가 고르지 않은 군집에서는 성능이 떨어질 수 있다.
결과를 좌우하는 전처리와 거리 설계
스케일링을 위한 표준화 또는 정규화, 결측치 보간 또는 제거, 범주형 데이터 인코딩은 군집화 전에 처리해야 할 항목이다. 이상치에는 윈저라이징이나 로버스트 스케일을 적용할 수 있고, 데이터 규모와 목적에 따라 샘플링 전략도 함께 검토한다.
거리 또는 유사도는 데이터 분포와 업무적 의미를 반영해 선택한다. 유클리드 거리, 코사인 거리, 맨해튼 거리가 대표적이다. 특징별 가중치를 두거나 PCA·UMAP으로 차원을 줄이면 잡음을 낮추고 해석성을 높일 수 있다.
데이터 형태에 맞춰 알고리즘 고르기
K-Means는 구형 군집을 빠르게 수렴시켜야 하거나 대용량 데이터를 다룰 때 적합하다. 소·중규모 데이터에서 덴드로그램을 통해 구조를 해석해야 한다면 계층적 군집을 고려할 수 있다.
잡음이 있고 임의 형태의 군집이나 밀도 차이가 중요한 경우에는 DBSCAN/HDBSCAN이 맞는다. 군집 간 겹침을 다루고 확률적 소속도나 혼합 분포 가정이 필요하다면 GMM을 선택한다.
군집 수 K는 엘보우, 실루엣(Silhouette), Calinski-Harabasz, Davies-Bouldin 지표를 함께 보며 정한다. 다양한 시드와 서브샘플로 재학습한 뒤 클러스터 매칭의 일관성을 확인하면 안정성도 점검할 수 있다.
탐색부터 운영 전환까지의 흐름
학습 후에는 군집별 대표값과 핵심 특징의 상위·하위 기여도를 산출한다. 이어서 군집에 설명적인 이름을 붙이고 의사결정 룰을 만들어 운영 규칙으로 전환한다.
알고리즘별 운영 특성
| 알고리즘 | 성능(시간/메모리) | 확장성 | 일관성(재현성) | 안정성(노이즈/형태) | 운영 편의 |
|---|---|---|---|---|---|
| K-Means | 높음 | 높음(MiniBatch 등) | 중간(초기화 민감) | 중간(이상치 민감, 구형 가정) | 높음(구현 단순) |
| 계층적 군집 | 중간~낮음 | 낮음(n^2 메모리) | 높음(결정적 연결법) | 중간 | 중간(덴드로그램 해석 용이) |
| DBSCAN | 중간 | 중간(공간 인덱스 시 향상) | 높음(파라미터 고정 시) | 높음(노이즈 감내, 임의 형태) | 중간(파라미터 튜닝 난이도) |
| GMM | 중간 | 중간 | 중간(초기화·로컬 옵티마) | 중간(겹침 모델링) | 중간(확률 해석, 튜닝 필요) |
세그먼트가 운영 판단으로 이어지는 지점
고객 세그먼테이션에서는 구매·행동 데이터에 K-Means 또는 GMM을 적용해 군집별 LTV와 이탈 위험을 프로파일링하고, 맞춤 캠페인과 가격 정책을 운영할 수 있다.
이상치·사기 탐지에서는 정상 거래를 군집화한 뒤 군집 외 점수로 이상치를 탐지한다. DBSCAN/HDBSCAN 결과를 모델 기반 룰과 결합해 하이브리드 심사 체계를 구성하는 방식도 가능하다.
제조·설비 모니터링에서는 센서 시계열을 임베딩한 뒤 군집화해 정상 패턴과 다른 변형을 감지한다. 군집 대표값은 공정 기준선을 설정하고 예방정비 트리거를 만드는 데 쓸 수 있다.
물류·입지 분석에서는 지역 특성과 수요 밀도를 군집화해 허브와 거점 배치를 최적화하고, 군집별 서비스 레벨과 재고 정책을 분리한다. 콘텐츠 추천과 퍼스널라이제이션에서는 이용자 임베딩을 군집화해 군집 기반 콜드스타트 추천 전략을 수립한다.
기대할 수 있는 변화와 검증 범위
사례 범위에서 마케팅 캠페인의 CTR/전환율은 515% 개선되고 CAC는 812% 절감될 가능성이 있다. 물류 이동 거리는 812% 감소하고 재고 회전율은 510% 개선될 수 있다. 데이터와 도메인별 변동성이 있으므로 사전 A/B 테스트 검증이 권장된다.
군집화는 데이터 구조를 가시화해 이해도를 높이고, 설명 가능한 의사결정 규칙을 확보하게 한다. 세그먼트 기반 운영 자동화와 협업 효율 증대에도 연결된다.
Python으로 K-Means 탐색과 프로파일링 실행하기
전제조건: Python 3.10+, scikit-learn 1.4+, numpy/pandas, 데이터프레임 df(수치형 컬럼만 또는 적절히 인코딩된 상태)
# pip install scikit-learn==1.4.2 pandas numpy
import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import silhouette_score
from sklearn.cluster import KMeans
# 1) 입력
num_cols = [c for c in df.columns if df[c].dtype != 'O'] # 수치형 컬럼 가정
X = df[num_cols].copy()
# 2) 전처리
X = X.replace([np.inf, -np.inf], np.nan).dropna()
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# 3) K 탐색
best_k, best_score = None, -1
for k in range(2, 11):
km = KMeans(n_clusters=k, n_init='auto', random_state=42)
labels = km.fit_predict(X_scaled)
score = silhouette_score(X_scaled, labels)
if score > best_score:
best_k, best_score, best_model, best_labels = k, score, km, labels
print(f"선택된 K: {best_k}, Silhouette: {best_score:.3f}")
# 4) 군집 대표값(센트로이드) 및 프로파일링
centroids = pd.DataFrame(best_model.cluster_centers_, columns=num_cols)
centroids_unscaled = pd.DataFrame(scaler.inverse_transform(centroids), columns=num_cols)
cluster_sizes = pd.Series(best_labels).value_counts().sort_index()
profile = centroids_unscaled.round(3)
print("군집 크기:\n", cluster_sizes)
print("군집 대표값(원 스케일):\n", profile)
# 5) 군집 라벨 부여 예시(상위 특징 기준)
top_features = np.argsort(np.abs(centroids.values), axis=1)[:, -3:] # 상위 3특징
labels_named = []
for i, idxs in enumerate(top_features):
names = [num_cols[j] for j in idxs]
labels_named.append(f"Seg{i}_" + "_".join(names))
print("군집 라벨 제안:\n", labels_named)
이상치 비중이 높으면 로버스트 스케일러 사용을 검토한다. 비구형이거나 밀도 차이가 큰 데이터는 DBSCAN/HDBSCAN 또는 GMM을 대안으로 볼 수 있다. 재현성을 위해 시드를 고정하고, 주기적 재학습과 드리프트 모니터링 체계를 둔다.