-목차-
1. GMM(Gaussian Mixture Model)
GMM은 clustering을 적용하고자 하는 데이터가 여러 개의 가우시안 분포를 가진 데이터 집합들이 섞여서 생성된 것이라는 가정하에 군집화를 수행하는 방법이다.
GMM은 데이터를 여러 개의 가우시안 분포가 섞인 것으로 간주하므로 섞인 데이터 분포에서 개별 유형의 가우시안 분포를 추출한다. 따라서 전체 dataset은 서로 다른 정규 분포 형태를 가진 여러 가지 확률 분포 곡선으로 구성될 수 있으며, 이러한 서로 다른 정규 분포에 기반해 군집화를 수행하는 것이 GMM 군집화 방식이며, 각각의 개별 데이터가 어떤 정규 분포에 속하는지 결정하는 방식이다. 모수 추정이라고 하는데, 모수 추정은 대표적으로 개별 정규 분포의 평균과 분산, 각 데이터가 어떤 정규 분포에 해당되는지의 확률을 추정하는 것이다. 이러한 모수 추정을 위해 GMM은 EM(Expectation and Maximization) 방법을 적용한다.
2. 모수 추정
모수 추정은 최대 우도법(Maximum Likelihood Estimation)을 사용하여 추정할 수 있다.
최대 우도법(Maximum Likelihood Estimation)은 모수적인 데이터 밀도 추정 방법으로써 파라미터 \(\theta = \left\{\theta _1, ... \theta _m\right\} \)으로 구성된 어떤 확률 밀도 함수 \(P(x|\theta )\)에서 관측된 표본 데이터 집합을 \(x = \left\{x _1, ... x _n\right\} \)이라 할 때, 이 표본들에서 파라미터 \(\theta = \left\{\theta _1, ... \theta _m\right\} \)를 추정하는 방법이다.
예를 들어 평균 \(\mu \)와 분산 \(\sigma^2 \)를 모르는 정규분포에서 표본 \(x_1, x_2, ..., x_n\)을 추출했을 때, 이들 값을 이용해서 모분포의 평균과 분산을 추정한다고 가정해보자. 결론부터 얘기하자면 표본을 위와 같이 추출한다고 하였다고 하면 모평균과 모분산의 추정 값은 각각 아래와 같다.
\[\widehat{\mu } = \frac{1}{n}\sum_{i=1}^{n}x_i\]
\[\widehat{\sigma }^2 = \frac{1}{n}\sum_{i=1}^{n}(x_i-\mu )^2\]
위 식은 최대 우도법을 통해 유도될 수 있으며 각각의 표본들은 정규분포에서 추출된다고 했을 때 각 표본의 표본 분포는 아래와 같다.
\[f_{\mu ,\sigma^2}(x_i) = \frac{1}{\sigma \sqrt{2\pi }}\exp(-\frac{(x_i-\mu )^2}{2\sigma ^2})\]
이때 로그-우도는 아래와 같다. 이 로그-우도 함수를 찾고자 하는 파라미터 \(\theta \)에 대하여 편미분 하고 그 값이 0이 되도록 하는 \(\theta \)를 찾는 과정을 통해 모평균과 모분산을 추정할 수 있다.
\[L(\theta |x) = \sum_{i=1}^{n}\log\frac{1}{\sigma \sqrt{2\pi }}\exp(-\frac{(x_i-\mu )^2}{2\sigma ^2})\]
따라서 위의 수식을 각각 \(\mu \)와 \(\sigma \)로 각각 편미분 하고 그값이 0이 되도록 하는(최대 우도를 만들어주는) 모평균과 모분산의 추정량은 각각 아래와 같음을 유도할 수 있다.
\[\widehat{\mu } = \frac{1}{n}\sum_{i=1}^{n}x_i\]
\[\widehat{\sigma }^2 = \frac{1}{n}\sum_{i=1}^{n}(x_i-\mu )^2\]
자세한 방법은 https://angeloyeo.github.io/2020/07/17/MLE.html 에 잘 정리되어있다.
3. GMM의 동작 원리
비지도 학습인 clustering에서는 데이터에 label이 주어지지 않는다. 따라서 데이터가 어떠한 모집단으로부터 추출되었는지 결정할 수 없기 때문에 모수를 추정할 수 없게 된다.
때문에 GMM은 K개의 분포를 랜덤 하게 주어주고 이를 최적화하는 방법으로 진행된다. 분포가 주어지게 되면 각 데이터 포인트에 대한 label을 우도에 따라 구할 수 있다. 그러면 주어진 label에 따라 최대 우도 법을 통해 각 그룹에 대한 모수를 추정할 수 있게 되고 바뀐 분포를 이용해 label을 새롭게 바꾸게 된다.
이 과정을 계속 수행하다 보면 결국 분포는 수렴할 것이라고 예상할 수 있다. 즉, K개의 정규 분포를 따르는 cluster가 생성된다. 정리하자면
- K개(cluster 수)만큼의 랜덤 분포를 초기화한다.
- 각 데이터 포인트를 주어진 분포에 대한 우도 값을 계산하여 레이블링 한다.
- 레이블링 데이터 포인트에 대해 최대우도법을 적용하여 각 그룹에 대한 분포를 추정한다.
- 추정된 분포를 이용해 데이터 포인트에 새로운 label을 부여한다.
- 분포가 더 이상 바뀌지 않을 때까지 2, 3, 4 과정을 반복한다.
참고 자료
https://angeloyeo.github.io/2021/02/08/GMM_and_EM.html#gmm
https://angeloyeo.github.io/2020/07/17/MLE.html
https://velog.io/@sset2323/07-04.-GMMGaussian-Mixture-Model
'머신러닝, 딥러닝 > Clustering' 카테고리의 다른 글
[ML] DBSCAN(Density Based Spatial Clustering of Applications with Noise) (0) | 2022.03.02 |
---|---|
[ML] 평균 이동(Mean Shift) 군집화 (0) | 2022.03.02 |
[ML] K-평균(K-means) 알고리즘 (0) | 2022.03.01 |
댓글