데이터를 분석할 때 마주치는 가장 근본적인 질문 중 하나는 바로 "이 데이터들을 어떻게 의미 있는 그룹으로 묶을 것인가?"입니다.
머신러닝과 통계학은 지난 수십 년간 이 단순한 질문에 답하기 위해 모델을 발전시켜 왔습니다. "딱딱한 원형 구역"을 나누던 단순한 방식에서 출발해, "유연한 타원형 구름", "그룹 개수를 스스로 학습하는 모델", 나아가 "시간의 흐름까지 엮어내는 동적 모델"로 확장되어 온 여정을 한 편의 흐름으로 정리해 봅니다.
이해를 돕기 위해 어느 동네 카페에서 손님들의 (키, 몸무게)를 측정하는 상황을 일관된 예시로 활용해 보겠습니다.
1. K-Means: 단순함의 미학, 그러나 엄격한 한계
군집화(Clustering)를 배울 때 가장 먼저 만나는 알고리즘은 단연 K-Means입니다.
- 핵심 아이디어: 데이터 공간에 사람이 정해준 $K$개의 중심점을 찍고, 모든 데이터는 가장 가까운 중심점 그룹으로 배속됩니다.
- 카페 비유: 카페 주인이 "손님을 3개 그룹으로 나눠!"라고 지시하면, 좌표평면에 원형 울타리 3개를 쳐서 각 손님을 가장 가까운 울타리로 강제 배정합니다.
- 한계:
- 구형(Spherical) 가정: 중심점으로부터의 유클리드 거리만을 측정하므로, 군집이 오직 완벽한 원/구형이라고 가정합니다. 현실에서 흔히 나타나는 '키가 클수록 몸무게도 많이 나간다'는 대각선 상관관계를 전혀 포착하지 못합니다.
- Hard Assignment: 어떤 손님이 경계선에 애매하게 걸쳐 있어도 오직 1개의 그룹에만 100% 속해야 합니다.
- 클러스터 수 고정: 분석가가 사전에 $K$를 직접 정해주어야 합니다.
2. Gaussian Mixture Model (GMM): 타원형 구름과 부드러운 확률
K-Means의 기하학적 경직성을 극복하기 위해 등장한 모델이 바로 GMM(가우시안 혼합 모델)입니다.
- 핵심 아이디어: 데이터를 단단한 경계로 자르는 대신, 각 군집을 확률 통계의 대표 주자인 가우시안 정규분포(Gaussian Distribution)들의 혼합으로 바라봅니다.
- 카페 비유: 키와 몸무게가 함께 늘어나는 대각선 경향성을 반영해 대각선으로 기울어진 타원형 안개 구름 3개를 띄웁니다.
- 개선점:
- 타원형(Elliptical) 유연성: 공분산 행렬(Covariance Matrix)을 학습하여 군집의 크기(Scale), 찌그러진 정도(Eccentricity), 기울기(Orientation)를 자유자재로 표현합니다.
- Soft Assignment: "이 손님은 70% 확률로 성인 여성 그룹, 30% 확률로 청소년 그룹에 속한다"와 같이 부드러운 확률값(사후 확률)을 제공합니다.
- 여전한 숙제: 여전히 모델을 학습시키기 전에 $K$(구름의 개수)를 사람이 지정해야 합니다.
3. DP-GMM: 그룹 개수까지 데이터가 스스로 결정하는 무한 확장
"데이터가 몇 개의 그룹으로 쪼개져야 하는지 모델이 스스로 결정할 수는 없을까?"라는 질문에서 비모수 베이지안(Bayesian Nonparametrics) 모델인 DP-GMM(디리클레 과정 가우시안 혼합 모델)이 탄생했습니다.
- 핵심 아이디어: 클러스터 개수 $K$를 고정하지 않고 무한($K \to \infty$)으로 열어둡니다. 대신 디리클레 과정(Dirichlet Process)이라는 사전 확률을 주어, 데이터가 들어옴에 따라 필요한 만큼만 유한한 군집을 동적으로 형성합니다.
- 카페 비유 (중국집 과정, CRP):
- 손님이 카페에 들어오면 두 가지 선택지가 있습니다.
- 이미 사람들이 많이 앉아 있고 자신의 체형과 유사한 기존 테이블에 앉는다.
- 일정 확률($\alpha$, 집중 매개변수)로 완전히 새로운 빈 테이블을 개설해 앉는다.
- 프로 농구선수나 보디빌더처럼 기존 3개 그룹(어린이, 성인 여성, 성인 남성)과 체형이 완전히 다른 희귀 데이터가 오더라도, 억지로 기존 그룹에 끼워 넣지 않고 새로운 소수 클러스터를 자율적으로 생성합니다.
- 손님이 카페에 들어오면 두 가지 선택지가 있습니다.
- 추론 방식: 깁스 샘플링(Collapsed Gibbs Sampling) 등을 통해 각 데이터를 뺐다가 다시 넣는 과정을 반복하며 최적의 클러스터 개수와 각 타원의 모수(평균, 공분산)를 스스로 수렴시킵니다.
4. Hidden Markov Model (HMM): 시간의 흐름과 상태 전이를 담다
지금까지의 K-Means, GMM, DP-GMM은 모두 정적(Static) 데이터를 다루었습니다. 즉, 손님이 언제 들어왔는지 순서는 신경 쓰지 않고 좌표평면 위의 흩어진 점으로만 보았습니다.
하지만 현실 세계의 많은 데이터는 시간의 순서가 있는 시계열(Time-series/Sequence)입니다.
- 핵심 아이디어: 관측되는 데이터(키, 몸무게) 뒤편에 시간의 흐름에 따라 변하는 보이지 않는 숨겨진 상태(Hidden State)가 존재하며, 이 상태들이 마르코프 체인(이전 상태가 다음 상태에 영향을 줌)을 따라 변화한다고 가정합니다.
- 카페 비유: 손님이 방문한 '시간대'를 고려합니다.
- 숨겨진 상태: [출근길 직장인 러시] $\rightarrow$ [오전 주부·아이 여유 시간대] $\rightarrow$ [오후 학생 방과 후 시간대] $\rightarrow$ [저녁 퇴근 시간대]
- 관측 데이터: 손님들의 (키, 몸무게)
- 특징: 단순히 키 150cm, 몸무게 45kg인 점만 보는 것이 아니라, 오전 11시에 관측되었는지 방과 후 오후 4시에 관측되었는지에 따라 그 상태를 다르게 해석할 수 있습니다.
- 한계: 전통적인 HMM 역시 숨겨진 상태의 개수 $K$를 사전에 고정해야 합니다.
5. HDP-HMM: 시계열과 비모수 베이지안의 결합
마지막 종착점은 HMM의 '시계열 상태 전이'와 DP의 '상태 개수 자동 학습'을 결합한 HDP-HMM(계층적 디리클레 과정 은닉 마르코프 모델)입니다.
- 핵심 아이디어: 상태 전이 행렬의 각 행(현재 상태에서 다음에 갈 수 있는 상태들의 확률 분포)마다 디리클레 과정(DP)을 적용하되, 이들이 전체 상태 풀(Global Pool)을 공통으로 공유하도록 계층적(Hierarchical) 구조를 설계합니다.
- 왜 일반 DP가 아닌 HDP인가?:
- 상태 1번에서 새 상태를 만들고, 상태 2번에서 또 새 상태를 만들어버리면 서로 다른 상태 집합을 가지게 됩니다.
- 따라서 상위 DP에서 '전체 상태 목록'을 관리하고, 하위 DP들(각 상태별 전이 확률)이 이를 참조하게 만들어 무한한 상태 공간 속에서도 동일한 상태들을 공유할 수 있게 합니다.
- 카페 비유: 하루 동안 손님들의 체형 흐름을 분석할 때, 분석가가 "하루 일과 상태는 총 4개다"라고 지정하지 않아도 데이터 스스로 "아침 출근 $\to$ 점심 유아 동반 $\to$ 오후 학생 $\to$ 저녁 직장인 $\to$ 심야 야근족"처럼 최적의 상태 개수와 상태 간의 전환 확률 패턴을 완전히 자동으로 학습합니다.
한눈에 보는 알고리즘 진화 지도
| 모델 | 클러스터 경계 | 그룹(상태) 개수 K | 시간/순서 반영 | 한 줄 정의 |
| K-Means | 딱딱한 구형 | 사람 지정 (고정) | X | 가장 가까운 원형 영역으로 쪼개기 |
| GMM | 유연한 타원형 | 사람 지정 (고정) | X | 데이터의 상관관계를 반영한 확률 구름 |
| DP-GMM | 유연한 타원형 | 데이터가 자동 학습 | X | 그룹 개수를 스스로 결정하는 무한 GMM |
| HMM | 확률적 상태 | 사람 지정 (고정) | O (시계열) | 시간 흐름에 따른 상태 전이 모델 |
| HDP-HMM | 확률적 상태 | 데이터가 자동 학습 | O (시계열) | 상태 개수를 스스로 찾아내는 동적 시계열 모델 |
단순한 거리 계산에서 출발한 클러스터링은 확률적 유연성(GMM)을 얻었고, 고정된 개수의 굴레를 벗어났으며(DP-GMM), 시간이라는 연속적 차원을 품어내며(HDP-HMM) 현실 세계의 복잡한 데이터를 더욱 온전하게 설명할 수 있는 도구로 발전해 왔습니다.
'데이터 분석 > 군집화' 카테고리의 다른 글
| 결합분포: 1) 공의 무게 군집, 2) 손님 키와 몸무게 쌍 군집 (0) | 2026.10.03 |
|---|---|
| 확률의 벽돌쌓기: 표준 정규분포에서 DP-GMM의 기저분포까지 (0) | 2026.09.05 |
| 군집이 몇 개인지 모를 때: 비모수 베이지안 이야기 (0) | 2026.08.14 |
| 디리클레 과정에서 기저 분포 (0) | 2026.08.06 |
| 군집 개수 미리 지정하지 않고 찾기: 디리클레 과정 (0) | 2026.08.06 |