동네 카페 손님들의 (키, 몸무게) 데이터를 바탕으로, 앞서 살펴본 EM 알고리즘과 동일한 구조(목표, 단계별 흐름, 최종 결과)에 맞추어 깁스 샘플링(Gibbs Sampling)을 적용한 베이지안 GMM 군집화 과정을 단계별로 설명합니다.
상황 설정
- 관측 데이터: 하루 동안 방문한 손님들의 (키, 몸무게) 2차원 좌표점들.
- 목표: 손님들을 3개의 타원형 구름($K=3$)으로 분류하기.
- 예: 어린이 그룹, 성인 여성 그룹, 성인 남성 그룹
- 찾아야 하는 정보 (각 구름의 파라미터 및 소속 변수):
- 손님의 소속 번호표($z_i$): 각 손님이 1, 2, 3번 구름 중 어디에 속하는지 명확한 번호
- 중심점(평균 $\boldsymbol{\mu}$): 각 그룹의 평균 키와 몸무게
- 모양과 기울기(공분산 $\boldsymbol{\Sigma}$): 구름이 대각선으로 얼마나 길쭉하고 퍼져 있는지
- 크기 비중(혼합 비율 $\boldsymbol{\pi}$): 전체 손님 중 각 그룹이 차지하는 비율
깁스 샘플링을 적용한 GMM의 4단계 군집화 과정
1단계: 초기화 (초기 명찰과 파라미터 무작위 부여)
- 손님 번호표($z_i$) 초기화: 카페에 있는 모든 손님에게 1, 2, 3번 구름 명찰 중 하나를 무작위로 달아줍니다.
- 구름 파라미터 초기화: 사전 분포(Prior)를 바탕으로 각 구름의 초기 위치(평균 $\boldsymbol{\mu}$), 모양(공분산 $\boldsymbol{\Sigma}$), 비율($\boldsymbol{\pi}$)을 무작위로 하나씩 뽑아둡니다.
- 초기 상태이므로 당연히 실제 체형과 상관없이 엉뚱한 번호표가 손님들에게 달려 있습니다.
2단계: 손님들의 소속 번호표 추첨 (Latent Variable Sampling)
EM의 E-단계(확률 계산)에 대응: 확률에 따라 '주사위를 던져 번호표를 확정'합니다.
현재 설정된 구름들의 상태($\boldsymbol{\mu}, \boldsymbol{\Sigma}, \boldsymbol{\pi}$)를 기준으로, 각 손님 $\mathbf{x}_i$에 대해 1, 2, 3번 구름에 속할 확률을 계산합니다.
- 손님 A (키 162cm, 몸무게 52kg)가 있을 때:
- 1번 구름(어린이)에서 나올 확률: 5%
- 2번 구름(성인 여성)에서 나올 확률: 85%
- 3번 구름(성인 남성)에서 나올 확률: 10%
- EM 알고리즘과의 차이점:
- EM은 $(0.05, 0.85, 0.10)$이라는 지분율을 그대로 유지하지만,
- 깁스 샘플링은 이 확률을 가진 3면체 주사위를 굴려 단 하나의 번호표를 추첨(Sampling)합니다.
- 손님 A는 85%의 높은 확률에 의해 이번 턴에 "2번 구름 명찰($z_A = 2$)"을 달게 됩니다. (10% 확률로 3번을 달 수도 있습니다.)
- 이 과정을 거쳐 모든 손님이 1, 2, 3번 중 정확히 하나의 명찰을 확정짓습니다.
3단계: 구름의 파라미터 새로 뽑기 (Parameter Sampling)
EM의 M-단계(최적값 미분 갱신)에 대응: 명찰을 단 손님들로부터 '새로운 구름 파라미터를 무작위 추출'합니다.
모든 손님이 명찰을 달았으므로, 번호표별로 손님들을 모아 사후 확률 분포(Posterior)를 만들고 그 분포에서 새로운 파라미터를 표본 추출합니다.
- 구름의 전체 크기 비율($\boldsymbol{\pi}$) 뽑기:
- 각 번호표를 단 손님의 머릿수($n_1, n_2, n_3$)를 바탕으로, 디리클레 사후 분포(Dirichlet Posterior)에서 새로운 구름 크기 비율 벡터를 하나 뽑습니다.
- 중심과 모양·기울기($\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k$) 뽑기:
- $k$번 명찰을 단 손님들의 실제 (키, 몸무게) 분포를 계산합니다.
- 사전 지식과 손님 데이터를 결합한 사후 분포(Normal-Inverse-Wishart 분포)로부터 새로운 평균 벡터 $\boldsymbol{\mu}_k$와 공분산 행렬 $\boldsymbol{\Sigma}_k$를 무작위로 하나 추출합니다.
- 이에 따라 구름의 중심이 이동하고 대각선 타원 형태가 새롭게 그려집니다.
4단계: 수천 번 반복 및 표본 수집 (Markov Chain Sampling)
- [2단계: 손님 번호표 뽑기] $\to$ [3단계: 구름 파라미터 뽑기] 과정을 수천~수만 번 반복(Iteration)합니다.
- Burn-in(준비 구간): 초기 무작위 상태에서 벗어나 실제 체형 패턴으로 찾아가는 초반 수백 번의 샘플은 버립니다.
- Stationary(안정 구간): 이후 반복되는 과정에서는 구름들이 성인 남성, 성인 여성, 어린이 체형 주변에서 조금씩 흔들리며 안정적인 표본들을 계속 생성해 냅니다. 이 표본들을 차곡차곡 기록해 둡니다.
최종 결과: 무엇을 얻게 되는가?
반복이 완료되면 EM 알고리즘보다 훨씬 풍부한 확률적 결과물을 얻게 됩니다.
- 파라미터의 분포와 신뢰 구간 (불확실성 파악):
- EM처럼 "성인 여성의 평균 키는 161.2cm"라는 단 하나의 고정된 숫자가 아니라, "성인 여성의 평균 키는 160.8cm ~ 161.6cm 사이에 95% 확률로 존재한다"는 사후 확률 분포 전체를 얻을 수 있습니다.
- 유연한 소속 확률 추정:
- 수천 번의 샘플링 동안 손님 A가 2번 명찰을 8,500번 달았고, 3번 명찰을 1,500번 달았다면, 자연스럽게 "손님 A는 2번 그룹일 확률 85%, 3번 그룹일 확률 15%"로 사후 소속 확률을 계산할 수 있습니다.
- 국소 최적해(Local Optima) 탈출:
- 중간에 구름들이 엉뚱한 곳에 뭉쳐 있더라도, 매 턴마다 확률적으로 주사위를 던지기 때문에 덫에서 벗어나 실제 자연스러운 체형 분포를 찾아갑니다.
'데이터 분석 > 군집화' 카테고리의 다른 글
| 손님 키와 몸무게 쌍 군집화: GMM (EM 알고리즘) (0) | 2026.10.17 |
|---|---|
| 데이터 군집화의 진화: K-Means에서 HDP-HMM까지 (0) | 2026.10.04 |
| 결합분포: 1) 공의 무게 군집, 2) 손님 키와 몸무게 쌍 군집 (0) | 2026.10.03 |
| 확률의 벽돌쌓기: 표준 정규분포에서 DP-GMM의 기저분포까지 (0) | 2026.09.05 |
| 군집이 몇 개인지 모를 때: 비모수 베이지안 이야기 (0) | 2026.08.14 |