반응형
롯데V3
롯데 우승하는 그날까지 개발...ing
롯데V3
전체 방문자
오늘
어제
  • 분류 전체보기 (216)
    • Computer Science (0)
      • 운영체제 (0)
    • Problem Solving (160)
      • 프로그래머스 (93)
      • 백준 (60)
      • 리트코드 (2)
      • SQL (5)
    • 언어 (8)
      • 파이썬 (8)
    • 취준 (1)
      • 합격후기 (1)
    • 도서 리뷰 (21)
      • IT 도서 리뷰 (20)
      • 기타 도서 리뷰 (1)
    • 논문 리뷰 (1)
    • 회고 (5)
      • TIL (5)
    • 머신러닝 (9)
      • 통계 (3)
      • 전처리 (1)
      • 클러스터링 (3)
    • 딥러닝 (3)
      • 자연어처리 (1)
      • LLM (1)
    • 프로젝트 (5)
    • Util (0)
    • Tool (1)
      • Poetry (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • DP
  • 티스토리챌린지

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
롯데V3

롯데 우승하는 그날까지 개발...ing

[클러스터링] GMM(Gaussain Mixture Model)
머신러닝/클러스터링

[클러스터링] GMM(Gaussain Mixture Model)

2022. 7. 30. 22:34
728x90
반응형

1. 정의

GMM은 데이터가 여러 개의 가우시안 분포(Gaussian Distribution)을 가진 데이터 집합들이 섞여서 생성된 것이라는 가정하에 클러스터링을 수행하는 방식이다.

가우시안 분포
흔히 정규 분포로 알려져 있으며 좌우 대칭형의 종 형태를 가진다. 평균 $\mu$를 중심으로 높은 데이터 분포를 가지며 평균이 0이고, 표준편차가 1이다.

출처: https://medium.datadriveninvestor.com/using-an-unsupervised-machine-learning-algorithm-to-detect-different-stock-market-regimes-5c6354a1826a

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

  • http://www.yes24.com/product/goods/69752484
 

파이썬 머신러닝 완벽 가이드 - YES24

자세한 이론 설명과 파이썬 실습을 통해 머신러닝을 완벽하게 배울 수 있다!『파이썬 머신러닝 완벽 가이드』는 이론 위주의 머신러닝 책에서 탈피해 다양한 실전 예제를 직접 구현해 보면서

www.yes24.com

 

728x90
반응형
저작자표시 (새창열림)

'머신러닝 > 클러스터링' 카테고리의 다른 글

[클러스터링] 평균 이동(Mean Shift)  (0) 2022.07.30
[클러스터링] K-Means 알고리즘  (0) 2022.07.30
    '머신러닝/클러스터링' 카테고리의 다른 글
    • [클러스터링] 평균 이동(Mean Shift)
    • [클러스터링] K-Means 알고리즘
    롯데V3
    롯데V3

    티스토리툴바