728x90
반응형
1. 정의
GMM은 데이터가 여러 개의 가우시안 분포(Gaussian Distribution)을 가진 데이터 집합들이 섞여서 생성된 것이라는 가정하에 클러스터링을 수행하는 방식이다.
가우시안 분포
흔히 정규 분포로 알려져 있으며 좌우 대칭형의 종 형태를 가진다. 평균 $\mu$를 중심으로 높은 데이터 분포를 가지며 평균이 0이고, 표준편차가 1이다.
4개의 데이터 세트가 있다면, 위와 같이 나타날 것이고 수행 방식은 다음과 같다.
1) GMM으로부터 개별 정규 분포의 평균과 분산 추정
2) 각 데이터가 어떤 정규 분포에 해당되는지의 확률 추정
위 과정을 모수 추정이라고 하고 이를 위해 GMM은 EM(Expectation and Maximaization) 방법을 적용한다.
2. 사용법
iris 데이터셋을 활용한 예시이다.
In [0]:
# 라이브러리 임포트
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
%matplotlib inline
In [1]:
# 데이터 로드
iris = load_iris()
feature_names = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
irisDF = pd.DataFrame(data=iris.data, columns=feature_names)
irisDF['target'] = iris.target
In [2]:
# GMM 수행
from sklearn.mixture import GaussianMixture
gmm = GaussianMixture(n_components=3, random_state=0).fit(iris.data)
gmm_cluster_labels = gmm.predict(iris.data)
irisDF['gmm_cluster'] = gmm_cluster_labels
irisDF['target'] = iris.target
iris_result = irisDF.groupby(['target'])['gmm_cluster'].value_counts()
print(iris_result)
target gmm_cluster
0 0 50
1 2 45
1 5
2 1 50
Name: gmm_cluster, dtype: int64
KMeans에 비해 더 잘 예측한 것을 확인할 수 있다. (KMeans 관련글)
3. GMM vs KMeans
KMeans는 거리기반이므로 원형의 범위에서 클러스터링을 수행하게 되며 데이터 세트가 원형의 범위를 가질수록 효율이 높다. 하지만 데이터가 원형의 범위로 퍼져 있지 않은 경우가 있기 때문에 이 경우에서는 효율이 떨어진다.
다음은 그에 대한 make_blobs를 활용한 예시이다.
왼쪽은 실제 target에 대한 그래프이고 오른쪽은 KMeans를 활용하여 클러스터를 예측하고 나타낸 그래프이다. 1번을 제외하고 제대로 매핑되지 않은 것을 확인할 수 있다.
4. Reference
728x90
반응형
'머신러닝 > 클러스터링' 카테고리의 다른 글
[클러스터링] 평균 이동(Mean Shift) (0) | 2022.07.30 |
---|---|
[클러스터링] K-Means 알고리즘 (0) | 2022.07.30 |