콘텐츠로 이동

클러스터링 (Clustering)

난이도: 초급~중급
선수 지식: 거리 메트릭, 기초 확률/통계
관련 문서: k-NN | 차원 축소 | 손실 함수 | 볼록성


핵심 요약: 클러스터링(Clustering)은 레이블(Label) 없이 비슷한 데이터끼리 묶는 비지도 학습(Unsupervised Learning) 기법이다. K-Means는 가장 널리 쓰이는 중심점(Centroid) 기반 방법이고, DBSCAN은 밀도(Density) 기반으로 임의 형태의 군집을 찾으며 노이즈(Noise)도 자동으로 식별한다.

핵심 용어 미리보기:

  • 중심점 (Centroid): 클러스터에 속한 데이터 포인트들의 평균 위치. K-Means에서 클러스터를 대표하는 점
  • 관성 (Inertia, WCSS): 각 데이터 포인트와 소속 클러스터 중심 사이 거리의 제곱합. 작을수록 클러스터가 조밀하다
  • 실루엣 점수 (Silhouette Score): 클러스터 내 응집도와 클러스터 간 분리도를 동시에 측정하는 지표. -1~1 범위이며 1에 가까울수록 좋다
  • 코어 포인트 (Core Point): DBSCAN에서 반경 ϵ\epsilon 내에 MinPts개 이상의 이웃을 가진 점. 클러스터의 핵심

  • 군집화(Clustering): 정답 라벨 없이 비슷한 것끼리 묶는 것. 지도 학습과 달리 “무엇이 맞는지” 알려주는 사람이 없다.
  • K-Means: 군집 개수 kk를 미리 정하고, 중심점을 옮겨가며 가장 가까운 점들을 모으는 방법. 빠르지만 동그란 모양의 군집만 잘 찾는다.
  • DBSCAN: 밀도가 높은 곳을 군집으로 보는 방법. 개수를 미리 안 정해도 되고, 이상치를 자동으로 걸러낸다.
  • 실루엣 계수(Silhouette): “내 군집 안에서는 가깝고, 다른 군집과는 먼가”를 -1~1로 잰 값. 정답이 없으니 이런 내부 지표로 평가한다.
  • 엘보 방법(Elbow Method): kk를 늘려가며 오차가 꺾이는 지점을 눈으로 고르는 방법. 객관적 기준이 아니라 판단의 보조 도구다.

클러스터링(Clustering)은 비지도 학습(Unsupervised Learning)의 대표적 기법으로, 레이블 없이 데이터를 유사한 그룹(클러스터)으로 나누는 것이 목적이다.

주요 클러스터링 알고리즘:

  • K-Means: 중심점 기반, 가장 널리 사용
  • DBSCAN: 밀도 기반, 임의 형태 클러스터 발견
  • 계층적 클러스터링 (Hierarchical Clustering): 덴드로그램 기반, 다중 스케일 분석
  • GMM (Gaussian Mixture Models): 확률 기반, 소프트 할당

비유: 군집화는 정답지 없이 하는 분류다. 처음 보는 나라의 동전 한 무더기를 받았다고 하자. 어느 것이 얼마짜리인지 아무도 알려주지 않지만, 크기와 무게가 비슷한 것끼리 모으는 일은 할 수 있다. 문제는 몇 종류로 나눠야 하는지도 스스로 정해야 하고, 나눈 결과가 맞는지 채점해 줄 사람이 없다는 점이다.


클러스터링의 역사는 “유사한 것을 묶는다”라는 인간의 가장 기본적인 인지 활동을 알고리즘으로 형식화한 여정이다. James MacQueen (1967)이 “Some Methods for Classification and Analysis of Multivariate Observations”에서 K-Means라는 이름을 처음 사용했다. 그러나 알고리즘 자체는 Stuart Lloyd가 1957년 Bell Labs에서 이미 개발했으며(1982년 출판), Hugo Steinhaus도 1957년에 유사한 방법을 독립적으로 제안했다.

K-Means의 직관은 단순하다: 교실에서 학생들을 k명의 선생님에게 배정한다고 생각하면, 각 학생은 가장 가까운 선생님의 그룹으로 가고, 선생님은 자기 그룹의 중심으로 이동하는 과정을 반복하는 것이다. 이 단순한 반복이 놀랍도록 효과적인 군집을 만들어낸다.

K-Means의 한계 — 구형 클러스터만 발견 가능, k를 사전에 지정해야 함, 노이즈에 취약 — 를 극복하기 위해 Ester, Kriegel, Sander, Xu (1996)DBSCAN을 발표했다. DBSCAN의 혁신은 밀도(density)라는 개념을 도입한 것이다. K-Means가 “가장 가까운 선생님 그룹으로 배정”하는 방식이라면, DBSCAN은 “사람들이 자연스럽게 모여 있는 곳이 그룹이다”라는 발상이다. 덕분에 초승달 모양, 고리 모양 등 임의 형태의 클러스터를 발견할 수 있게 되었고, 어디에도 속하지 않는 노이즈 포인트도 자동으로 식별할 수 있게 되었다.


  1. k개의 중심점(centroid) 초기화
  2. 각 데이터 포인트를 가장 가까운 중심점에 할당
  3. 각 클러스터의 중심점을 해당 클러스터 평균으로 갱신
  4. 수렴할 때까지 2-3 반복

minj=1kxiCjxiμj2\min \sum_{j=1}^{k}\sum_{x_i \in C_j} \|x_i - \mu_j\|^2

이를 군집 내 제곱합 (WCSS, Within-Cluster Sum of Squares) 또는 관성(inertia)이라고 한다.

1D 직선 위에 점 8개가 있다고 하자: {1,2,3,4,  8,9,10,11}\{1, 2, 3, 4, \; 8, 9, 10, 11\}. K=2K = 2로 설정한다.

1단계 — 초기화: 중심점을 임의로 μ1=2\mu_1 = 2, μ2=9\mu_2 = 9로 설정한다.

2단계 — 할당: 각 점을 가장 가까운 중심에 배정한다.

  • 클러스터 1: {1,2,3,4}\{1, 2, 3, 4\} (모두 μ1=2\mu_1 = 2에 더 가까움)
  • 클러스터 2: {8,9,10,11}\{8, 9, 10, 11\} (모두 μ2=9\mu_2 = 9에 더 가까움)

3단계 — 중심 갱신: 각 클러스터의 평균을 새 중심으로 한다.

  • μ1=(1+2+3+4)/4=2.5\mu_1 = (1+2+3+4)/4 = 2.5
  • μ2=(8+9+10+11)/4=9.5\mu_2 = (8+9+10+11)/4 = 9.5

재할당해도 멤버가 바뀌지 않으므로 수렴(Convergence)! 최종 클러스터: {1,2,3,4}\{1,2,3,4\}{8,9,10,11}\{8,9,10,11\}.

방법설명특징
무작위랜덤으로 k개 선택불안정, 나쁜 수렴 가능
K-Means++D(x)2D(x)^2에 비례하여 초기 중심 선택표준 방법, 수렴 보장 개선
K-Means||K-Means++의 병렬 버전대규모 데이터용
방법설명
엘보우 방법 (Elbow Method)WCSS vs k 그래프에서 “팔꿈치” 지점
실루엣 점수 (Silhouette Score)클러스터 내 응집도 vs 클러스터 간 분리도
갭 통계량 (Gap Statistic)실제 WCSS와 랜덤 분포의 WCSS 차이
정보 기준 (BIC/AIC)모델 복잡도 페널티 포함
  • 가정: 구형 클러스터, 동일 분산, 동일 크기
  • 한계: 초기화에 민감, 볼록 클러스터만 가능, k를 사전 지정, 이상치에 민감
  • Mini-batch K-Means: 배치 단위 업데이트, 대규모 데이터에 빠름
  • K-Medoids (PAM): 중심을 실제 데이터 포인트로, 이상치에 강건
  • K-Modes: 범주형 데이터용
  • K-Prototypes: 혼합 데이터 (연속 + 범주)

O(nkdi)O(nkdi) (nn: 데이터 수, kk: 클러스터 수, dd: 차원, ii: 반복 횟수)


Density-Based Spatial Clustering of Applications with Noise

  • ϵ\epsilon (eps): 이웃 반경
  • MinPts: 코어 포인트가 되기 위한 최소 이웃 수

포인트 분류 다이어그램

  1. 임의의 미방문 포인트 선택
  2. ϵ\epsilon-이웃 계산
  3. 코어 포인트면 클러스터 확장 (밀도 도달성으로 연결)
  4. 코어가 아니면 노이즈로 표시 (나중에 경계로 바뀔 수 있음)
  • k-distance plot으로 ϵ\epsilon 결정: k=MinPts에서의 거리를 정렬, 급격한 변화 지점이 적정 ϵ\epsilon
  • MinPts d+1\ge d + 1 (차원 + 1) 이 경험적 가이드
장점단점
임의 형태 클러스터 발견밀도가 다른 클러스터에 약함
노이즈 자동 식별ϵ\epsilon, MinPts에 민감
k 사전 지정 불필요고차원에서 성능 저하
결정론적경계 포인트 할당은 순서 의존
  • HDBSCAN: 계층적 + 밀도 기반, 다양한 밀도 처리 가능
  • OPTICS: 순서 기반, 다양한 밀도에서 클러스터 추출

3. 계층적 클러스터링 (Hierarchical Clustering)

섹션 제목: “3. 계층적 클러스터링 (Hierarchical Clustering)”
  1. 각 포인트를 개별 클러스터로 시작
  2. 가장 가까운 클러스터 쌍을 병합
  3. 원하는 k개가 될 때까지 반복
연결 방법정의특징
단일 연결 (Single)클러스터 간 최소 거리체이닝 문제
완전 연결 (Complete)클러스터 간 최대 거리조밀한 클러스터
평균 연결 (Average)평균 쌍별 거리절충안
Ward군집 내 분산 증가 최소화K-Means와 유사, 가장 많이 사용
  • 병합 이력의 트리 시각화
  • 원하는 수준에서 “잘라서” k개의 클러스터 획득
  • 다중 스케일(multi-scale) 분석 가능
  • 하나의 클러스터에서 시작하여 재귀적으로 분할
  • 실무에서는 병합형이 훨씬 일반적
  • 시간: O(n3)O(n^3) (일반), O(n2logn)O(n^2 \log n) (일부 구현)
  • 공간: O(n2)O(n^2) (거리 행렬)

P(x)=k=1KπkN(xμk,Σk)P(\mathbf{x}) = \sum_{k=1}^{K} \pi_k \mathcal{N}(\mathbf{x}|\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k)

각 클러스터가 가우시안 분포를 따른다고 가정하고, 데이터가 이들의 혼합으로부터 생성되었다고 모델링한다.

E-step (기대): 각 포인트의 클러스터별 소속 확률(responsibility) 계산

γik=πkN(xiμk,Σk)j=1KπjN(xiμj,Σj)\gamma_{ik} = \frac{\pi_k \mathcal{N}(\mathbf{x}_i|\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k)}{\sum_{j=1}^{K} \pi_j \mathcal{N}(\mathbf{x}_i|\boldsymbol{\mu}_j, \boldsymbol{\Sigma}_j)}

M-step (최대화): μk\boldsymbol{\mu}_k, Σk\boldsymbol{\Sigma}_k, πk\pi_k 갱신

속성K-MeansGMM
할당 방식하드 (0 또는 1)소프트 (확률적)
클러스터 형태구형만타원형 가능
불확실성없음소속 확률 제공
공분산 제약등방성full, tied, diagonal, spherical

Σk=σ2I\boldsymbol{\Sigma}_k = \sigma^2\mathbf{I} (spherical)로 제약하고 σ20\sigma^2 \to 0인 극한을 취하면, 소프트 할당이 하드 할당으로 수렴하여 K-Means와 동치가 된다. (spherical 제약만으로는 GMM이 여전히 소프트 할당을 하므로 동치가 아니다.)

유형파라미터 수클러스터 형태
fullO(d2)O(d^2) per cluster완전 자유 (타원)
tiedO(d2)O(d^2) 공유동일 형태
diagonalO(d)O(d) per cluster축 정렬 타원
sphericalO(1)O(1) per cluster구형

BIC (Bayesian Information Criterion)와 AIC (Akaike Information Criterion)로 K 결정.


속성K-MeansDBSCAN계층적GMM
k 사전 지정필요불필요선택적필요
클러스터 형태구형임의연결 방법 의존타원형
노이즈 처리불가자동 식별불가어느 정도
확장성최고양호나쁨중간
소프트 할당불가불가불가가능
결정론적아니오아니오

K-Means·DBSCAN·계층적 군집화의 군집 모양 가정과 이상치 처리 방식을 비교한 도표

클러스터링 평가 지표 (레이블 없이)

섹션 제목: “클러스터링 평가 지표 (레이블 없이)”
지표범위설명
실루엣 점수 (Silhouette)[-1, 1]1에 가까울수록 좋음
Davies-Bouldin Index[0, ∞)0에 가까울수록 좋음
Calinski-Harabasz Index[0, ∞)클수록 좋음

실루엣 점수 공식:

s(i)=b(i)a(i)max(a(i),b(i))s(i) = \frac{b(i) - a(i)}{\max(a(i), b(i))}

  • a(i)a(i): 같은 클러스터 내 평균 거리
  • b(i)b(i): 가장 가까운 다른 클러스터까지의 평균 거리

상황추천 알고리즘
대규모 데이터, 구형 클러스터K-Means / Mini-batch K-Means
임의 형태 클러스터, 노이즈 포함DBSCAN / HDBSCAN
다중 스케일 분석, 시각적 탐색계층적 클러스터링
확률적 소속, 불확실성 필요GMM
이상치에 강건해야 하는 경우K-Medoids, DBSCAN

소매업 고객 세분화 - K-Means로 5개 고객 페르소나를 발견하다

섹션 제목: “소매업 고객 세분화 - K-Means로 5개 고객 페르소나를 발견하다”

한 대형 소매 유통 기업이 300만 고객의 구매 데이터를 분석하여 마케팅 전략을 재설계한 사례이다. 기존에는 마케터의 직관에 기반한 3개 세그먼트(고가치/중가치/저가치)만 사용했으나, K-Means 클러스터링을 적용하자 5개의 뚜렷한 고객 페르소나가 드러났다.

분석에 사용한 특성은 RFM(Recency, Frequency, Monetary) 지표와 카테고리별 구매 비율이었다. 엘보우 방법(Elbow Method)과 실루엣 점수(Silhouette Score)를 결합하여 k=5를 선택했다. 발견된 페르소나는 다음과 같았다:

  • 충성 고객(Loyal Champions): 최근 구매, 높은 빈도, 높은 금액 (전체의 8%)
  • 잠재 이탈 고객(At Risk): 과거 고빈도였으나 최근 활동 감소 (12%)
  • 신규 고객(New Customers): 최근 첫 구매, 낮은 빈도 (18%)
  • 할인 추구형(Bargain Hunters): 프로모션 기간에만 활성화 (25%)
  • 비활성 고객(Hibernating): 오랜 기간 미구매 (37%)

이 세분화를 기반으로 각 그룹에 맞는 차별화된 캠페인을 실행한 결과, 마케팅 ROI가 34% 향상되었다. 특히 “잠재 이탈 고객” 세그먼트에 집중적인 리텐션 캠페인을 실시하여 이탈률을 크게 줄인 것이 주효했다.

이 사례는 클러스터링이 단순한 탐색적 분석(EDA) 도구를 넘어, 실제 비즈니스 의사결정을 이끄는 강력한 도구가 될 수 있음을 보여준다.


# --- 실행을 위한 준비 (예제 데이터) ---
from sklearn.datasets import make_blobs
X, _ = make_blobs(n_samples=300, centers=4, random_state=0)
from sklearn.cluster import KMeans, DBSCAN, AgglomerativeClustering
from sklearn.mixture import GaussianMixture
from sklearn.metrics import silhouette_score
# K-Means
kmeans = KMeans(n_clusters=3, init='k-means++', n_init=10, random_state=42)
labels = kmeans.fit_predict(X)
print(f"Silhouette: {silhouette_score(X, labels):.3f}")
# DBSCAN
dbscan = DBSCAN(eps=0.5, min_samples=5)
labels = dbscan.fit_predict(X)
n_noise = (labels == -1).sum()
print(f"Clusters: {len(set(labels)) - (1 if -1 in labels else 0)}, Noise: {n_noise}")
# 계층적 클러스터링
agg = AgglomerativeClustering(n_clusters=3, linkage='ward')
labels = agg.fit_predict(X)
# GMM
gmm = GaussianMixture(n_components=3, covariance_type='full', random_state=42)
labels = gmm.fit_predict(X)
proba = gmm.predict_proba(X) # 소프트 할당
# 엘보우 방법으로 k 선택
inertias = []
for k in range(1, 11):
km = KMeans(n_clusters=k, random_state=42)
km.fit(X)
inertias.append(km.inertia_)

  • 맞다. 하지만 지역 최적해(local optimum)에 수렴한다. 전역 최적이 아닐 수 있으므로 여러 번 다른 초기화로 실행해야 한다.

2. “K-Means의 클러스터는 항상 같은 크기이다”

섹션 제목: “2. “K-Means의 클러스터는 항상 같은 크기이다””
  • K-Means는 같은 크기를 가정하지는 않지만, 불균형한 크기에서 성능이 저하되는 경향이 있다.

3. “DBSCAN은 모든 상황에서 K-Means보다 낫다”

섹션 제목: “3. “DBSCAN은 모든 상황에서 K-Means보다 낫다””
  • DBSCAN은 밀도가 균일하지 않은 데이터에서 어려움을 겪는다. 또한 파라미터(ϵ\epsilon, MinPts) 튜닝이 필요하다.

4. “클러스터링 결과는 객관적이다”

섹션 제목: “4. “클러스터링 결과는 객관적이다””
  • 클러스터링은 본질적으로 주관적이다. 같은 데이터에 대해 다른 알고리즘/파라미터는 다른 결과를 줄 수 있으며, 어떤 것이 “정답”인지 판단하기 어려울 수 있다.

1. K-Means에서 kk를 미리 정해야 하는 것이 왜 문제인가?

정답 보기

정답 라벨이 없으므로 몇 개가 맞는지 알 방법이 없다. 엘보 방법이나 실루엣 계수는 판단을 돕는 보조 도구일 뿐 객관적 정답을 주지 않는다.

2. K-Means가 잘 찾지 못하는 군집 모양은?

정답 보기

초승달 모양처럼 볼록하지 않거나 크기·밀도가 크게 다른 군집이다. K-Means는 중심으로부터의 거리로 나누므로 구형 군집을 전제한다. 이럴 때는 DBSCAN이나 스펙트럴 군집화를 쓴다.

3. DBSCAN이 K-Means보다 나은 점 두 가지는?

정답 보기

① 군집 개수를 미리 정하지 않아도 되고, ② 이상치를 자동으로 걸러낸다. 대신 밀도가 고르지 않으면 파라미터 조정이 까다롭다.


  • k-NN: 거리 기반 접근, 거리 메트릭 공유
  • 차원 축소: 클러스터링 전 전처리, 시각화
  • 볼록성: K-Means 목적 함수는 비볼록 (지역 최적해)
  • VC 차원: 비지도 학습의 복잡도 이론

  1. K-Means 수렴이 보장되는가?

    • 예, 지역 최적해에는 반드시 수렴. 목적 함수가 매 반복마다 단조 감소하고 유한한 할당 경우의 수
  2. K-Means가 초기화에 민감한 이유는?

    • 비볼록 최적화 문제이므로 초기점에 따라 다른 지역 최적에 수렴
  3. DBSCAN vs K-Means: 각각 언제 선호하는가?

    • DBSCAN: 임의 형태, 노이즈 존재, k 모름. K-Means: 구형 클러스터, 대규모, k를 알거나 추정 가능
  4. 하드 클러스터링과 소프트 클러스터링의 차이는?

    • 하드: 각 포인트가 정확히 하나의 클러스터에 속함 (K-Means). 소프트: 확률적 소속 (GMM)
  5. 레이블 없이 클러스터링을 평가하는 방법은?

    • 내부 지표: 실루엣 점수, Davies-Bouldin, Calinski-Harabasz

영어한국어
Clustering클러스터링 (군집화)
Centroid중심점 (무게중심)
Inertia (WCSS)관성 (군집 내 제곱합)
Silhouette Score실루엣 점수
Dendrogram덴드로그램
Core Point코어 포인트
Noise Point노이즈 포인트
Soft Clustering소프트 클러스터링
Hard Clustering하드 클러스터링
Linkage연결 방법

  • MacQueen (1967) - “Some Methods for Classification and Analysis of Multivariate Observations”
  • Arthur & Vassilvitskii (2007) - “k-means++: The Advantages of Careful Seeding”
  • Ester et al. (1996) - “A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise” (DBSCAN)
  • McInnes et al. (2017) - “hdbscan: Hierarchical density based clustering”
  • Dempster, Laird, Rubin (1977) - “Maximum Likelihood from Incomplete Data via the EM Algorithm”