가우시안 혼합 모델

Beginner

This tutorial is from open-source community. Access the source code

소개

이 실습에서는 Python 의 scikit-learn 라이브러리를 사용하여 가우시안 혼합 모델 (GMM) 을 구현하는 방법을 안내합니다. GMM 은 데이터가 여러 개의 가우시안 분포의 혼합에서 생성된다는 것을 가정하는 확률 모델입니다. 컴퓨터 비전, 금융, 생물정보학 등 다양한 분야에서 클러스터링 및 밀도 추정 작업에 널리 사용됩니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습용 Jupyter Notebook에 접근합니다.

때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사를 자동화할 수 없습니다.

학습 중 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.

라이브러리 가져오기

이 단계에서는 이 실습에 필요한 라이브러리를 가져옵니다. 숫자 계산에는 NumPy, 데이터 시각화에는 Matplotlib, GMM 구현에는 scikit-learn 을 사용합니다.

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

데이터 생성

이 단계에서는 평균과 공분산이 다른 두 개의 가우시안 분포로 구성된 샘플 데이터셋을 생성합니다.

n_samples = 500

np.random.seed(0)
C = np.array([[0.0, -0.1], [1.7, 0.4]])
X = np.r_[
    np.dot(np.random.randn(n_samples, 2), C),
    0.7 * np.random.randn(n_samples, 2) + np.array([-6, 3]),
]

가우시안 혼합 모델 구현

이 단계에서는 scikit-learn 의 GaussianMixture 클래스를 사용하여 가우시안 혼합 모델을 구현합니다. 모델을 데이터셋에 맞추고 각 데이터 포인트의 클러스터 레이블을 예측합니다. 마지막으로 결과를 시각화합니다.

## 5 개의 구성 요소를 가진 GMM 객체 생성
gmm = mixture.GaussianMixture(n_components=5, covariance_type="full")

## 데이터에 GMM 적합
gmm.fit(X)

## 클러스터 레이블 예측
Y_ = gmm.predict(X)

## 결과 시각화
color_iter = ["navy", "c", "cornflowerblue", "gold", "darkorange"]

for i, color in enumerate(color_iter):
    plt.scatter(
        X[Y_ == i, 0], X[Y_ == i, 1], 0.8, color=color, label="클러스터 {}".format(i)
    )

plt.legend(loc="best")
plt.title("가우시안 혼합 모델")
plt.show()

베이지안 가우시안 혼합 모델 구현

이 단계에서는 scikit-learn 의 BayesianGaussianMixture 클래스를 사용하여 베이지안 가우시안 혼합 모델을 구현합니다. 이 모델은 데이터에 기반하여 클러스터 수를 자동으로 조정하는 디리클레 과정 사전 (Dirichlet process prior) 을 가지고 있습니다. 모델을 데이터셋에 맞추고 각 데이터 포인트의 클러스터 레이블을 예측합니다. 마지막으로 결과를 시각화합니다.

## 5 개의 구성 요소를 가진 베이지안 GMM 객체 생성
dpgmm = mixture.BayesianGaussianMixture(n_components=5, covariance_type="full")

## 데이터에 베이지안 GMM 적합
dpgmm.fit(X)

## 클러스터 레이블 예측
Y_ = dpgmm.predict(X)

## 결과 시각화
color_iter = ["navy", "c", "cornflowerblue", "gold", "darkorange"]

for i, color in enumerate(color_iter):
    plt.scatter(
        X[Y_ == i, 0], X[Y_ == i, 1], 0.8, color=color, label="클러스터 {}".format(i)
    )

plt.legend(loc="best")
plt.title("디리클레 과정 사전을 가진 베이지안 가우시안 혼합 모델")
plt.show()

요약

이 실습에서는 파이썬의 scikit-learn 라이브러리를 사용하여 가우시안 혼합 모델 (GMM) 을 구현하는 방법을 배웠습니다. 또한 데이터셋을 생성하고 모델을 데이터에 맞추고 결과를 시각화하는 방법을 학습했습니다. GMM 은 클러스터링 및 밀도 추정 작업에 강력한 도구이며 다양한 분야에서 널리 사용됩니다.