가우시안 혼합 모델(GMM)은 샘플이 파라미터가 알려지지 않은 여러 개의 혼합된 가우시안 분포에서 생성되었다고 가정하는 확률 모델이다. 하나의 가우시안 분포에서 생성된 모든 샘플은 하나의 클러스터를 형성한다. 일반적으로 이 클러스터는 타원형이다. 각 클러스터는 타원의 모양, 크기, 밀집도, 방향이 다르다. 샘플이 주어지면 가우시안 분포 중 하나에서 생성되었다는 것을 안다. 하지만 어떤 분포인지 또 이 분포의 파라미터는 무엇인지 알지 못한다.
여러 GMM 변종이 있는데 가장 간단한 버전이 GaussianMixture 클래스에 구현되어 있다. 여기에서는 사전에 가우시안 분포의 개수 k를 알아햐 한다. 데이터셋 X가 다음 확률 과정을 통해 생성되었다고 가정한다.
from sklearn.mixture import GaussianMixture
gm=GaussianMixture(n_components=3,n_init=10)
gm.fit(X)
이 알고리즘이 추정한 파라미터를 확인해보자.
gm.weights_
gm.means_
gm.covariances_
이 클래스는 기댓값-최대화(EM) 알고리즘을 사용한다. 이 알고리즘은 k-평균 알고리즘과 공통점이 많다. 클러스터 파라미터를 랜덤하게 초기화하고 수렴할 때까지 두 단계를 반복한다. 먼저 샘플을 클러스터에 할당한다(이를 기댓값 단계 라고 부른다). 그 다음 클러스터를 업데이트한다(이를 최대화 단계라고 부른다).
알고리즘이 수렴했는지 여부와 반복 횟수를 확인할 수 있다.
이제 각 클러스터의 위치, 크기, 모양, 방향, 상대적인 가중치를 예측했다. 이 모델은 새로운 샘플을 가장 비슷한 클러스터에 손쉽게 할당할 수 있다(하드 군집). 또는 특정 클러스터에 속할 확률을 예측할 수 있다(소프트 군집). 하드 군집을 위해서는 predict() 메서드를 사용하고 소프트 군집을 위해서는 predict_proba() 메서드를 사용한다.
가우시안 혼합 모델은 생성 모델(generative model)이다. 즉 이모델에서 새로운 샘플을 만들 수 있다. (반환된 샘플은 클러스터 인덱스 순으로 정렬되어 있다).
또한 주어진 위치에서 모델의 밀도를 추정할 수 있다. 이를 위해 score_samples() 메서드를 사용한다. 샘플이 주어지면 이 메서드는 그 위치의 확률 밀도 함수(probability density function(PDF))의 로그를 예측한다. 점수가 높을수록 밀도가 높다.
자세한 내용은 책을 참조하는것이 더 좋을것 같다.
출처: 핸즈온 머신러닝
'Machine Learning > Advanced (hands on machine learning)' 카테고리의 다른 글
11. 심층 신경망 훈련 - 그레이디언트 소실과 폭주(활성화 함수) (0) | 2021.06.03 |
---|---|
30. 비지도학습 - DBSCAN (0) | 2021.05.30 |
29. 비지도학습 - 군집(k-평균(2)) (0) | 2021.05.26 |
28. 비지도 학습 - 군집(K-평균(1)) (0) | 2021.05.26 |
26. 차원 축소 - 커널 PCA (0) | 2021.05.26 |