업계 뉴스레터
전문가가 전하는 최신 AI 트렌드
가장 중요하고 흥미로운 AI 뉴스에 대한 선별된 인사이트를 확인하세요. 주간 Think 뉴스레터를 구독하세요. IBM 개인정보 보호정책을 참조하세요.
구독은 영어로 제공됩니다. 모든 뉴스레터에는 구독 취소 링크가 있습니다. 여기에서 구독을 관리하거나 취소할 수 있습니다. 자세한 정보는 IBM 개인정보 보호정책을 참조하세요.
가우스 혼합 모델(GMM)은 데이터를 여러 가우스 분포의 조합으로 표현하는 확률 모델로, 각각 고유한 평균과 분산을 갖고 혼합 계수로 가중치를 부여합니다. GMM은 데이터 포인트가 단일 평균이 아닌 다른 중심을 중심으로 자연스럽게 그룹화될 수 있는 복잡한 다중 모드 분포를 캡처할 수 있기 때문에 클러스터링 및 밀도 추정에 일반적으로 사용됩니다.
'정규 분포'라고도 하는 단일 가우스 분포는 많은 종류의 자연 현상을 설명합니다. 교실에서 학생들의 키 분포, 신생아의 몸무게, 기계 부품의 작동 수명 등은 가우스 분포인 경우가 많습니다.
그러나 단일 가우스 분포는 여러 클러스터가 있는 데이터 세트나 심각한 왜곡 또는 꼬리가 있는 데이터 세트를 모델링하는 데 적합하지 않습니다. 이러한 경우에는 GMM이 더 적합할 수 있습니다.
GMM은 비지도 학습을 사용하여 데이터가 여러 가우스 분포의 조합에서 생성된다고 가정하는 확률 모델을 생성합니다. 모든 데이터가 단일 정규 분포(하나의 가우스 모델)에서 나온다고 가정하는 대신, GMM은 데이터 세트에 각각 다른 '클러스터' 또는 '하위 모집단'을 나타내는 여러 정규 분포가 있고 각 분포마다 고유한 평균과 분산을 갖는다고 가정합니다.
학생의 경우 키는 바이모달 분포이지만 학생의 성 정체성은 알 수 없는 경우를 상상해 보세요. 기계 부품의 경우, 서로 다른 두 공급업체에서 부품을 공급받았는데 그 중 한 공급업체가 다른 공급업체보다 더 높은 품질의 부품을 생산한다고 상상해 보세요. 두 경우 모두 데이터 요소가 속한 하위 모집단 및 해당 하위 모집단의 특성을 계산하는 것이 유용할 수 있습니다.
업계 뉴스레터
가장 중요하고 흥미로운 AI 뉴스에 대한 선별된 인사이트를 확인하세요. 주간 Think 뉴스레터를 구독하세요. IBM 개인정보 보호정책을 참조하세요.
구독은 영어로 제공됩니다. 모든 뉴스레터에는 구독 취소 링크가 있습니다. 여기에서 구독을 관리하거나 취소할 수 있습니다. 자세한 정보는 IBM 개인정보 보호정책을 참조하세요.
GMM은 다양한 실제 응용 부문에 활용될 수 있으며, 클러스터링 외에도 세분화, 밀도 추정, 이상 징후 감지, 패턴 인식을 모두 GMM으로 근사화할 수 있습니다.
다음은 분명히 가우스가 아닌 까다로운 분포입니다.
다항식 피팅이나 삼각 근사법을 사용하여 이 곡선의 방정식을 구할 수도 있지만, GMM은 계산 부담이 적은 강력한 대안을 제공합니다. 이 분포는 실제로 세 가지 다른 가우스 분포를 결합한 것입니다.
GMM은 위의 분포를 세 가지 다른 가우스 분포로 분해하고 각각에 대한 매개변수를 계산합니다. 위에 표시된 분포는 단일 차원을 가지고 있지만 GMM은 더 높은 차원의 분포에도 작동합니다. 두 가우스의 2D 혼합은 두 개의 서로 다른 분포로 분해될 수 있습니다.
클러스터 알고리즘으로 사용되는 경우 혼합 모델의 각 가우스에는 세 가지 주요 매개변수가 있습니다.
GMM의 목표는 모델의 각 가우스 분포의 매개변수와 각 데이터 포인트가 속하는 가우스 분포를 모두 추정하는 것입니다. 종종 z라고 하는 잠재 변수는 모델에서 식별된 모든 구성 요소 중에서 주어진 데이터 포인트를 생성한 가우스 구성 요소입니다. 이 변수는 모델에서 학습할 수 있는 숨겨진(또는 관찰되지 않은) 변수이기 때문에 '잠재' 변수라고 합니다.
각 포인트 xn에 대해 (여기서 n은 구성 요소 수) 생성된 가우스입니다. (이 경우 i는 데이터 포인트의 수입니다). 데이터에서는 관찰되지 않으며, 포인트만 . 또한, 생성된 가우스 구성 요소는 , 관찰할 수 없습니다. 대신 모델의 기대치 최대화 알고리즘은 가능한 z 값의 분포를 추론합니다.
각 가우스 구성 요소는 각 분포가 특정 데이터 포인트의 위치에 얼마나 영향을 미치는지 추정치를 나타내는 혼합 계수에 의해 가중치가 부여됩니다. 클러스터링 시나리오에서 혼합 가중치는 각 클러스터의 상대적 크기를 반영합니다. GMM에 따르면 x의 확률을 찾으려면 먼저 다음과 같이 하나의 가우스를 무작위로 선택한다고 상상해 보세요. , 그런 다음 해당 가우스에서 x를 그립니다. 그래서 구성 요소 밀도의 혼합입니다. x가 여러 평균에 가까운 경우 , 여러 가우스가 높은 확률을 할당할 수 있으며 기여도가 합산됩니다. 전체 모델은 이러한 가우스 확률 분포의 가중치 합입니다.
수학적으로 데이터 포인트의 확률 밀도 함수는 K 구성 요소가 포함된 GMM에서
이를 세분화하면 다음과 같습니다.
: 혼합물 성분 k의 혼합 가중치로, 가우스 k가 데이터 포인트에 얼마나 기여하는지에 대한 추정치입니다.
: 다음을 갖는 가우스 분포입니다.
총 확률 밀도 는 모든 가우스의 가중치 합입니다.
GMM은 E-단계라고 하는 각 가우스에 속하는 확률을 반복적으로 할당하고 M-단계라고 하는 각 가우스의 매개변수를 업데이트하는 기대치 최대화(EM) 알고리즘을 사용하여 가장 자주 적합됩니다.
EM은 예를 들어 GMM의 경우 최대 우도 추정(MLE)과 같은 알고리즘을 사용하기 어려울 때 매개변수를 추정하는 강력한 방법입니다. GMM에서는 거의 항상 로그 우도 함수를 사용하여 모델을 피팅합니다. 이 로그 우도는 비선형이며 분석적으로 최대화하기 어렵기 때문에 MLE는 직접 최대화할 수 없습니다. 또한 GMM에는 데이터에서 직접 관찰할 수 없는 잠재 변수(혼합 가중치)가 있으며, MLE는 레이블을 순열할 때 이러한 변수를 발견하지 못합니다.
또 다른 접근 방식인 확률적 경사하강법(SGD)에서는 기본 목적 함수가 미분 가능해야 하지만 항상 그런 것은 아닙니다. 또한 EM과 달리 SGD는 쉽게 병렬화할 수 없으며 대규모 데이터에 상당한 컴퓨팅 리소스가 필요합니다. 맵 축소와 같은 접근 방식을 사용하여 EM을 병렬화하는 것은 강력한 최적화입니다.
EM은 다음과 같은 네 단계로 구성됩니다.
EM 알고리즘은 무작위 초기 매개변수 값으로 시작하여 관찰된 데이터가 추정할 수 있는 모델에서 나온다고 가정합니다. 많은 GMM 구현을 통해 실무자는 K-평균, 무작위 값 또는 학습 데이터에서 샘플링을 사용하여 초기 책임 설정과 같은 다양한 초기화 중에서 선택할 수 있습니다.
데이터 포인트를 구성 요소에 '소프트 할당'하는 사후 확률을 계산합니다. 이는 사실상 현재의 매개변수 추측을 고려할 때 "각 가우스가 각 데이터 포인트를 얼마나 '소유'하는가?"라는 질문을 던집니다.
먼저, 관측된 데이터를 기반으로 각 잠재 변수의 사후 확률을 계산합니다. zi=k , 즉 xi가 k번째 구성 요소에 속할 확률은 Bayes의 규칙을 사용하여 계산할 수 있습니다.
다음으로, 관측된 데이터의 로그 우도는 현재 매개변수 추정치를 사용하여 계산됩니다. 잠재 변수의 분포와 관련하여 예상되는 로그 우도는 이제 다음과 같이 작성할 수 있습니다.
함수 Q는 각 가우스 구성 요소에 있는 모든 데이터 포인트의 로그 우도의 가중 합이며, 가중치는 책임입니다. 로그 우도는 각 가우스 구성 요소의 추정 값을 사용하여 데이터 포인트가 해당 분포에서 발생할 수 있는 가능성을 계산합니다. 이는 혼합 모델 전체에서 관찰된 데이터의 가능성과는 다릅니다. 대신 이 Q-함수는 관측된 데이터와 추정된 잠재 변수 분포 모두에 대한 예상 로그 우도를 나타냅니다.
M-단계는 각 가우스 분포에 대해 세 가지 고유한 값을 업데이트합니다.
다음 단계는 데이터를 생성하는 모델의 로그 우도를 최대화하여 모델 매개변수를 업데이트하는 것입니다. 모델이 우수할수록 이 값은 높아집니다.
즉, 새로운 평균은 번째 구성 요소는 모든 데이터 포인트의 가중 평균이며, 가중치는 이러한 포인트가 구성 요소에 속할 확률입니다 .
이는 구성 요소의 새로운 공분산이 구성 요소 평균에서 각 데이터 포인트의 제곱 편차의 가중 평균이며, 여기서 가중치는 해당 구성 요소에 할당된 포인트의 확률입니다.
마지막으로 M-단계는 혼합물 가중치를 업데이트합니다.
새로운 가중치 번째 구성 요소는 이 구성 요소에 속하는 포인트의 총 확률을 포인트 수로 정규화한 값입니다. .
마지막으로 EM은 모델 매개변수가 안정적이고 수렴하는지 확인합니다. 로그 우도 또는 매개변수의 변경이 설정된 임계값 미만이면 알고리즘이 중지됩니다. 그렇지 않은 경우 수렴에 도달할 때까지 EM을 2단계와 3단계를 반복합니다.
즉, EM 알고리즘은 반복적으로 반복되는 두 단계로 구성됩니다. 먼저 E-단계는 각 데이터 포인트에 대한 모든 가우스의 혼합 가중치를 계산합니다. 그런 다음 M-단계는 업데이트된 혼합 가중치를 사용하여 각 가우스에 대한 매개변수를 다시 추정합니다. 그런 다음 EM은 로그 우도의 변화를 비교하고 설정된 임계값 미만이면 수렴을 가정하고 반복을 중지합니다.
GMM은 강력하지만 가우스 가정에 의존합니다. GMM이 데이터를 잘 표현하려면 클러스터가 타원형이어야 하고 클러스터 전반의 밀도가 매끄러워야 합니다. 타원형이 아닌 모양의 클러스터나 매우 조밀하고 희박한 섹션이 있는 데이터는 GMM으로 잘 표현되지 않을 수 있습니다.
클러스터링에 사용되는 GMM은 K-평균 클러스터링과 유사하지만 몇 가지 주요 차이점이 있습니다. 첫째, 각 포인트를 하나의 클러스터에 할당하는 k-평균과 달리 GMM은 각 클러스터에 속할 확률을 부여합니다. 이를 '소프트 클러스터'라고 합니다. 클러스터는 타원형일 수도 있고 겹칠 수도 있기 때문에 GMM은 종종 더 유연하고 클러스터 경계에 더 많은 불확실성을 허용합니다.
이진 또는 범주형 데이터의 경우 GMM은 잘 작동하지 않지만, 베르누이 분포 또는 다항식 분포를 사용하는 유사한 접근 방식이 데이터에 잘 맞을 수 있습니다. 반대로, 이러한 유형의 모델은 GMM이 데이터에 잘 맞는 경우가 많은 연속 변수로 구성된 데이터에는 적합하지 않습니다.
GMM은 가우스 분포의 매개변수를 추정하려고 하기 때문에 일부 데이터는 커널 밀도 추정(KDE)과 같은 비모수 방법을 사용하여 더 잘 모델링됩니다. KDE는 클러스터 또는 하위 모집단의 분포에 대해 어떠한 가정도 하지 않고, 대신 각 데이터 포인트의 작은 로컬 커널에 대한 밀도를 추정합니다. 이 접근 방식은 데이터가 특정 형태를 가정하지 않고 복잡한 분포로 구성되어 있을 때 유용합니다.
GMM의 확장으로 유연한 잠재 분포를 학습하는 생성 모델인 가변 오토인코더(VAE)가 있습니다. VAE의 전반적인 목표는 동일하지만 VAE는 EM을 사용하지 않습니다. VAE는 확률적 인코더-디코더 프레임워크를 사용하여 GMM이 각 데이터 포인트에 혼합 가중치를 할당하는 것과 같은 방식으로 잠재적 표현을 학습합니다. 가장 큰 차이점은 EM은 사후 확률을 계산할 수 있어야 하지만 VAE에서는 그렇지 않으므로 훨씬 더 유연하다는 점입니다. 단, VAE는 학습에 더 복잡하고 시간이 많이 소요되는 경우가 많다는 단점이 있습니다.
이 설명서는 클러스터링에 대한 직관적인 소개를 제공하기 때문에 클러스터링에 중점을 두었지만, GMM이 도움이 될 수 있는 다른 시나리오도 있습니다. 기능 엔지니어링, 이상 징후 감지 및 밀도 추정은 모두 GMM이 강력할 수 있는 일반적인 작업입니다.
특징 엔지니어링: XGBoost와 같은 일부 머신 러닝 알고리즘은 모델이 다양한 입력 특징 분포를 학습할 수 있게 해주지만, 다른 알고리즘은 요구 사항이 더 엄격합니다. 선형 및 로지스틱 회귀, 선형 판별 분석 (LDA) 및 다변량 가우스 분포는 일반적으로 특징이 정규 분포를 예상하며 데이터가 다중 모달인 경우 제대로 작동하지 않을 수 있습니다. 다중 양식을 처리하는 데 유용한 다른 분석적, 시각적 이유가 있으며 GMM이 도움이 될 수 있습니다.
비지도 분류: GMM은 K-평균 알고리즘과 유사하게 작동하지만 출력이 이진 지표인 K-평균과 달리 클래스 소속을 확률적으로 결정할 수 있습니다. 이는 분류를 위해 사용자 지정 임계값이 필요하거나 확률적 아웃풋이 필요한 사용 사례에 특히 유용할 수 있습니다.
이상 징후 감지: 다변량 가우스 분포를 사용하여 하나 이상의 가우스 분포를 따를 확률이 낮은 데이터 포인트를 식별할 수 있습니다. 이러한 방식으로 GMM은 모집단의 이상치인 이상 징후(예: 데이터 입력 실수)와 자체 그룹을 형성하는 이상 징후(예: 신용카드 사기 행위) 두 가지 유형의 비정상 데이터를 찾는 데 도움이 될 수 있습니다.
GMM은 빠르게 학습하고 쉽게 최적화할 수 있는 다양한 작업에 적합한 모델입니다. 처리하기에 적합한 데이터 유형이라는 측면에서 몇 가지 제한 사항이 있지만, 다양한 머신 러닝 및 데이터 과학 작업에서 유용할 수 있습니다.
Python에서는 scikit-learn 라이브러리를 사용하여 GMM을 빠르게 생성할 수 있습니다.
from sklearn.datasets import make_blobs
from sklearn.mixture import GaussianMixture
from sklearn.metrics import accuracy_score
# create some clusters
X, y = make_blobs(n_samples=400, centers=3, cluster_std=0.75, random_state=0)
# fit the GMM
gmm = GaussianMixture(n_components=3).fit(X)
GMM 클러스터링 결과 시각화:
# predict the labels themselves
labels = gmm.predict(X)
# print the accuracy
print(f" Accuracy is {accuracy_score(y, labels)}")
# scatterplot the X values
plt.scatter(X[:, 0], X[:, 1], c=labels, s=40, cmap='viridis')
R에서는 모델 기반 클러스터링을 의미하는 mclust라는 패키지를 사용하여 GMM을 생성할 수 있습니다.
# Install and load the 'mclust' package
library(mclust)
# create a matrix of data from normal distributions
data <- rbind(matrix(c(rnorm(50, mean = 0, sd = 1), rnorm(50, mean = 1, sd = 1.25)), ncol=2),
matrix(c(rnorm(50, mean = 4, sd = 1), rnorm(50, mean = 2, sd = 1.25)), ncol = 2),
matrix(c(rnorm(50, mean = 8, sd = 1.25), rnorm(50, mean = 4, sd = 0.75)), ncol = 2))
# Perform GMM clustering, G represents the number of expected clusters
gmm_model <- Mclust(data, G = 3)
# Get the cluster assignments
cluster_assignments <- predict(gmm_model)$classification
# Visualize the results
plot(data, col = cluster_assignments, main = "GMM Clustering Results")
points(gmm_model$parameters$mean, col = 1:3)
Python과 R 모두에서 개발자는 클러스터 수를 지정하는 하이퍼 매개변수를 GMM의 매개변수로 설정해야 합니다. KNN과 마찬가지로 이 클러스터 수를 선택하는 데 일반적으로 사용되는 전략은 다양한 수의 클러스터에 대한 모델을 학습하고 각 클러스터를 비교하는 것입니다. 모델을 비교하는 데 가장 많이 사용되는 지표는 다음과 같습니다.
실루엣 계수: 이는 각 샘플에 대해 정의되며 샘플과 동일한 클러스터의 다른 모든 포인트 사이의 평균 거리와 샘플과 가장 가까운 클러스터의 다른 모든 포인트 사이의 평균 거리의 두 가지 점수로 구성됩니다.
Jensen-Shannon: 분포 간의 차이를 측정하는 것으로, 먼저 샘플에 대한 로그 우도 비율의 평균인 Kullback–Leibler 발산을 계산한 다음 두 KL 발산 값의 평균을 구하는 방식으로 가장 많이 계산합니다. 분포 유사성의 개념은 Jensen-Shannon(JS) 지표로 표현됩니다. 두 GMM 간의 JS 거리가 작을수록 데이터를 맞추는 방법에 대해 두 GMM이 더 많이 동의합니다.
Bayesian 정보 기준(BIC): 모델에 포함된 매개변수의 수에 따라 모델이 데이터를 얼마나 잘 예측하는지를 추정합니다. K가 너무 작으면 모형의 로그 우도가 낮고 BIC 값이 커집니다. K가 너무 크면 가능성이 높을 수 있지만 큰 값에 대한 페널티(따라서 과적합)로 인해 BIC 값도 더 커집니다.
AIC(Akaike 정보 기준): BIC와 매우 유사하게 작동하지만 매개변수 수에 대한 페널티를 더 작게 계산합니다.
AI 빌더를 위한 차세대 엔터프라이즈 스튜디오인 IBM watsonx.ai로 생성형 AI, 파운데이션 모델 및 머신 러닝 기능을 학습, 검증, 조정 및 배포하세요. 적은 데이터로 짧은 시간 내에 AI 애플리케이션을 구축하세요.
업계 최고의 AI 전문성과 솔루션 포트폴리오를 보유한 IBM과 함께 AI를 비즈니스에 활용하세요.
AI 추가를 통해 중요한 워크플로와 운영을 혁신함으로써 경험, 실시간 의사 결정 및 비즈니스 가치를 극대화합니다.
AI 빌더를 위한 차세대 엔터프라이즈 스튜디오인 IBM watsonx.ai로 생성형 AI, 파운데이션 모델 및 머신 러닝 기능을 학습, 검증, 조정 및 배포하세요. 적은 데이터로 짧은 시간 내에 AI 애플리케이션을 구축하세요.
업계 최고의 AI 전문성과 솔루션 포트폴리오를 보유한 IBM과 함께 AI를 비즈니스에 활용하세요.
AI 추가를 통해 중요한 워크플로와 운영을 혁신함으로써 경험, 실시간 의사 결정 및 비즈니스 가치를 극대화합니다.