Gaussian Mixture Model (GMM)
1. GMM (Gaussian Mixture Model)
-
전체 데이터가 K개의 서로 다른 정규분포(Gaussian)의 혼합으로 생성되었다고 가정하는 모델
-
정규분포는 다변량 가우시안(정규) 분포를 사용하고 수식은 아래와 같이 μ와 Σ를 변수로 가짐
N(x)=(2π)D/2∣Σ∣1/21exp(−21(x−μ)TΣ−1(x−μ))
-
비지도 학습으로 rik라는 확률을 스스로 예측하고 다시 자기를 튜닝하는 과정을 수렴할 때까지 반복 (EM Algorithm)
-
GMM은 likelihood를 최대화하는 최적의 GMM 파라미터(π,μ,Σ)를 찾는 과정 (rik를 아래 수식에 결합)
p(x)=k=1∑KπkN(x∣μk,Σk)(whereπk:가중치,μk:평균,Σk:공분산)
- 정규분포를 따르는 데이터에 대해 비모수적인 Clustering(K-Means)보다 일반화에 높은 성능을 가짐
- Soft Clustering으로 특정 데이터가 A클러스터일 확률 0.7, B클러스터일 확률 0.3 처럼 확률적인 결과를 가짐
2. 학습 원리: EM 알고리즘
GMM은 아무것도 모르는 상태에서 시작해서, E(Expectation) 단계와 M(Maximization) 단계를 반복하며 정답을 찾아갑니다.
① 초기화
먼저 지도 위에 무작위로 K개의 원(가우시간 분포)을 던져놓습니다. 처음에는 위치도 크기도 엉망이겠죠.
② E-Step: "너는 어느 쪽일 확률이 높니?" (기대치 계산)
모든 데이터 포인트에게 물어봅니다.
- "너는 빨간색 원에 가까우니, 파란색 원에 가까우니?"
- 이때 "난 빨간색 70%, 파란색 30% 정도인 것 같아"라고 확률(Responsibility)을 부여합니다.
- 이것이 K-Means와 가장 큰 차이인 'Soft Clustering'입니다.
③ M-Step: "확률을 바탕으로 원을 다시 그려보자" (최대화)
이제 각 원의 정보를 업데이트 합니다.
- 평균 이동: 빨간색 원은 자기에게 "70% 정도 속한다"고 말한 데이터들의 위치를 참고해서 중심점을 그쪽으로 옮깁니다.
- 모양 변경: 데이터들이 길쭉하게 늘어서 있다면, 원의 모양을 길쭉한 타원형으로 바꿉니다.
④ 반복 (Convergence)
E-step과 M-step을 계속 반복하다 보면, 원들이 데이터가 밀집된 구역을 정확하게 감싸게 됩니다. 더 이상 원의 위치나 모양이 변하지 않으면 학습이 종료됩니다.
모든 클러스터링은 모델을 평가하기 위해 관측되지 않은 숨겨진 변수, 즉 Latent Variable(잠재 변수)이 필요합니다. GMM에서는 데이터의 정답(Label)이 없기 때문에 파라미터를 한 번에 구할 수 없습니다.
따라서 EM(Expectation-Maximization) 알고리즘을 사용하여 최적의 파라미터를 찾습니다.
3. 단계별 상세 과정

1) E-step (Expectation)
"잠재 변수(Latent Variable) 추정"
- 현재 설정된 파라미터(θ)를 고정한 상태에서 진행합니다.
- 각 데이터가 각 클러스터에 속할 확률인 Responsibility (rik)를 업데이트합니다.
- 즉, "현재 분포 기준에서 이 점은 어느 클러스터 것인가?"를 추측하는 단계입니다.
2) M-step (Maximization)
"파라미터 업데이트 (MLE)"
-
E-step에서 구한 Responsibility(rik)를 기반으로 파라미터 θ={π,μ,Σ} 전체를 업데이트합니다.
- μk,Σk 업데이트: rik를 가중치로 하여 평균과 분산을 이동시킵니다.
- πk 업데이트: 각 클러스터에 속할 확률(rik)의 평균값으로 혼합 계수(Mixing Coefficient)를 갱신합니다. (πk=N1∑rik)
즉, E-step에서 "각 점의 소속"을 추정했다면, M-step에서는 이를 바탕으로 "모델의 모양(평균, 분산, 클러스터 비율)"을 확정 짓습니다.
- MLE (Maximum Likelihood Estimation)를 이용하지만, 단순 평균이 아닙니다.
- Log-Likelihood Function에 Prior인 E[rik]를 반영하여, 이전에 더 적합했던(확률이 높았던) 클러스터(k)에 가중치를 더 주어 평균과 분산을 이동시킵니다.
4. Pseudo Code (알고리즘 흐름)
전체적인 학습 흐름은 다음과 같습니다.
-
Initialize θ: 초기 파라미터 (π,μ,Σ) 설정
-
Loop (수렴할 때까지 반복):

요약
GMM은 "데이터가 여러 개의 정규분포가 섞여 있다"고 가정하며,
E-step에서 '데이터가 어디에 속하는지(rik)'를 추측하고,
M-step에서 '그 추측을 믿고 가중치를 두어' 분포의 모양(θ)을 수정하는 과정을 반복합니다.