Colab으로 하루에 하나씩 딥러닝

클러스터링_2.가우시안 혼합 모델 본문

딥러닝_개념

클러스터링_2.가우시안 혼합 모델

Elleik 2023. 1. 30. 23:25
728x90

가우시안 혼합 모델(Gaussian Mixture Model, GMM)

  • 가우시안 분포가 여러 개 혼합된 클러스터링 알고리즘
    • 가우시안 분포: 평균을 중심으로 대칭적인 종 모양의 사건의 발생할 확률을 나타냄
  • 현실에 있는 복잡한 형태의 확률 분포를 K개를 혼합하여 표현하자는 것(K=하이퍼파라미터)
  • 클러스터링에서는 주어진 데이터에 대해 이 데이터가 어떤 가우시안 분포에 속하는지 찾는 것

가우시안 혼합 모델 실습

### 라이브러리 호출

import numpy as np
import matplotlib.pyplot as plt
from sklearn.mixture import GaussianMixture

### git 클론을 통한 필요 데이터셋 로드

!git clone https://github.com/gilbutITbook/080263.git

데이터셋 로드 완료


### 데이터 로딩

X_train = np.load('/content/080263/chap11/data/data.npy')

상세 설명

  • 파일을 배열로 불러오는 방법
    • np.load(): np.save()로 저장된 data.npy 파일을 배열로 불러옴
    • np.save(): 배열 한 개를 numpy 형식의 바이너리 파일로 저장

### GMM 생성 

gmm = GaussianMixture(n_components=2)
gmm.fit(X_train)

print(gmm.means_)
print('\n')
print(gmm.covariances_)

X, Y = np.meshgrid(np.linspace(-1,6), np.linspace(-1,6))
XX = np.array([X.ravel(), Y.ravel()]).T
Z = gmm.score_samples(XX)
Z = Z.reshape((50,50))

plt.contour(X, Y, Z)
plt.scatter(X_train[:,0], X_train[:,1])
plt.show()

GMM 생성 왼료

상세 설명

  • 평균 주위에 대부분의 데이터가 모여 있음
  • 타원 가장 안쪽 부분에 대부분의 데이터가 있음
  • GMM은 데이터가 두 개 이상의 가우시안 분포를 따르는 경우에 사용 가능

 

참고: 서지영, 『딥러닝 텐서플로 교과서』, 길벗(2022)