가우시안 혼합 모델(GMM)이란? AI에서 여러 정규분포로 데이터의 분포를 추정하는 방법
TL;DR
가우시안 혼합 모델(Gaussian Mixture Model, GMM)은 여러 정규분포를 가중합해 데이터의 확률밀도를 나타내는 모델입니다. 각 성분의 중심·퍼짐·비중을 학습하고, 한 사례가 어느 성분에서 나왔을 가능성이 큰지 계산합니다. 그룹이 겹치는 소프트 군집화와 밀도 추정에 쓰이며, 성분 수·공분산 형태·초기화와 과적합을 함께 점검해야 합니다.
핵심 3줄 요약
- 핵심 1
여러 정규분포를 섞습니다. 성분마다 중심과 퍼짐이 있고 혼합 가중치가 전체에서 차지하는 비중을 나타냅니다. - 핵심 2
소속을 확률로 표현합니다. 경계의 사례를 바로 한 그룹으로 잘라 버리지 않고 성분별 책임도를 확인합니다. - 핵심 3
분포 가정과 설정을 검증합니다. 성분 수가 실제 집단 수를 보장하지 않으며, 수렴했다는 사실만으로 좋은 모델이 되지는 않습니다.
이 글에서 다룰 내용
- 가우시안 혼합 모델의 한 문장 정의
- 겹치는 센서 기록으로 보는 쉬운 예시
- 혼합 가중치·평균·공분산과 EM 학습 과정
- 공분산 형태와 성분 수를 고르는 기준
- K-means·DBSCAN·ICA와의 차이
- 밀도 추정과 소프트 군집화의 실전 사용처
- 수렴·초기화·과적합을 확인하는 체크리스트
가우시안 혼합 모델을 한 문장으로 정의하면 무엇인가요?
가우시안 혼합 모델은 관측 데이터가 유한한 여러 정규분포 성분에서 생성됐다고 가정하고 각 성분의 평균·공분산·혼합 가중치를 추정하는 확률 모델입니다.
가우시안은 정규분포를 뜻합니다. 특징이 하나라면 익숙한 종 모양의 곡선으로, 여러 특징이라면 중심 주변에 퍼진 타원형의 밀도로 생각하면 됩니다. 각 성분이 담당하는 분포를 섞어 하나의 정규분포로 설명하기 어려운 전체 모양을 근사합니다.
혼합 가중치는 음이 아니며 전체 합이 1입니다. 먼저 이 비중에 따라 성분 하나를 고르고 그 성분의 정규분포에서 관측값을 뽑는 것이 모델의 생성 관점입니다. 실제 학습에서는 어느 관측이 어느 성분에서 왔는지 모르므로 그 소속도 함께 추정합니다.
한 줄 정리: GMM은 데이터의 분포를 모델링합니다. 성분별 소속 확률을 이용하면 군집화에도 쓸 수 있지만, 모델이 만든 성분과 현실의 집단이 반드시 일치하지는 않습니다.
쉬운 예시로 이해해 볼까요?
장비의 온도와 진동을 함께 기록한다고 가정해 보겠습니다. 대기 중인 장비와 작업 중인 장비는 대체로 다른 영역에 모이지만, 작업을 막 시작하거나 멈추는 시점에는 두 영역이 겹칠 수 있습니다. 여기서는 원리를 설명하려고 두 성분을 가정하며 실제 실험 결과를 제시하는 것은 아닙니다.
- 평균은 각 운전 패턴의 온도·진동 중심을 나타냅니다.
- 공분산은 각 패턴이 얼마나 넓게 퍼지고 어느 방향으로 길어지는지 나타냅니다.
- 혼합 가중치는 모델 전체에서 각 성분이 차지하는 비중을 나타냅니다.
- 책임도는 특정 기록을 각 성분이 설명하는 상대적인 정도입니다.
겹치는 구간의 기록은 한 성분에 압도적으로 속하지 않을 수 있습니다. 이때 성분별 책임도를 함께 보면 경계 사례임을 알 수 있습니다. 다만 GMM은 대기와 작업이라는 이름을 자동으로 알아내지 않습니다. 운전 로그와 대표 기록을 대조해 사람이 의미를 붙입니다.
쉬운 예시: 서로 겹친 종 모양 곡선을 여러 개 놓고, 각 곡선의 위치·너비·비중을 조절해 관측된 분포에 맞추는 과정입니다.
왜 AI에서 가우시안 혼합 모델이 중요한가요?
그룹의 겹침을 남길 수 있습니다
군집 번호 하나만 저장하면 경계에 있는 사례와 확실한 사례가 같은 모양으로 보입니다. GMM의 성분별 확률은 이런 차이를 확인하는 단서입니다. 사람이 검토할 대상을 고르거나 후속 모델의 입력으로 쓸 때 소속의 애매함을 남길 수 있습니다.
중심뿐 아니라 퍼진 방향을 모델링합니다
평균이 비슷해도 한 집단은 온도가 크게 변하고 다른 집단은 진동이 크게 변할 수 있습니다. 공분산을 허용하는 GMM은 특징 간 함께 움직이는 관계를 반영합니다. 어느 방향으로 긴 분포인지까지 표현한다는 점이 중심점만 보는 설명과 다릅니다.
새 관측의 밀도를 계산합니다
학습한 분포에서 새 입력이 얼마나 자연스러운 위치에 있는지 로그밀도로 살펴볼 수 있습니다. 데이터 탐색과 이상 후보 점검에 유용하지만 낮은 밀도가 고장이나 사기라는 뜻은 아닙니다. 드문 정상 상황도 낮은 값을 받을 수 있습니다.
가우시안 혼합 모델은 어떻게 작동하나요?
성분 수와 시작 상태를 정합니다
scikit-learn의 GaussianMixture는 EM 알고리즘으로 모수를 학습합니다. 먼저 성분 수를 정하고 평균·공분산·가중치의 시작값을 준비합니다. 초기화에 K-means를 사용할 수 있지만, K-means 결과가 GMM의 최종 결과로 고정되는 것은 아닙니다.
E 단계에서 책임도를 계산합니다
현재 모수를 기준으로 각 관측값이 각 성분에서 나왔을 조건부 확률을 계산합니다. 성분의 밀도에 혼합 가중치를 곱한 뒤 모든 성분의 기여 합으로 나눕니다. 같은 관측에 대한 책임도를 전부 더하면 1이 되며, 한 사례가 여러 성분의 모수 갱신에 나누어 기여합니다.
M 단계에서 모수를 다시 맞춥니다
앞서 계산한 책임도로 관측값에 가중치를 주어 각 성분의 평균·공분산·혼합 가중치를 갱신합니다. 이어 새 모수로 책임도를 다시 계산합니다. 소속 추정과 분포 갱신을 번갈아 반복하는 것이 기대값 최대화, 즉 EM의 기본 흐름입니다.
종료 조건과 최종 출력을 확인합니다
반복 개선량이 설정한 기준보다 작아지거나 최대 반복 횟수에 도달하면 학습이 끝납니다. predict_proba는 성분별 확률을, predict는 가장 가능성이 큰 성분 번호를 반환합니다. score_samples는 각 사례의 로그밀도를 돌려주므로 세 출력을 같은 점수로 해석하면 안 됩니다.
핵심 인사이트: EM이 좋은 출발점에서 시작한다는 보장은 없습니다. 초기화가 달라지면 다른 해를 얻을 수 있으므로 수렴 여부와 여러 시작점의 결과를 함께 봅니다.
공분산 형태와 성분 수는 무엇을 뜻하나요?
full은 성분마다 자유로운 공분산을 둡니다
각 성분이 자기 공분산 행렬을 사용합니다. 특징 사이의 상관관계와 서로 다른 타원 방향을 표현하기 좋습니다. 대신 추정할 값이 많아 표본이 적거나 차원이 높으면 불안정해질 수 있습니다. 자유도가 크다는 이유로 무조건 선택하지 않습니다.
tied는 모든 성분이 공분산을 공유합니다
각 성분의 평균은 달라도 공분산 행렬은 함께 사용합니다. 서로 다른 위치에 비슷한 퍼짐을 가진 집단을 가정하는 방식입니다. full보다 제약이 크지만 데이터가 적을 때는 그 제약이 과적합을 줄이는 데 도움이 될 수 있습니다.
diag와 spherical은 퍼짐을 더 제한합니다
diag는 성분마다 대각 공분산을 써서 성분 안의 특징 간 공분산을 0으로 둡니다. spherical은 각 성분에서 모든 방향에 같은 분산을 사용합니다. 이는 입력 전체의 특징들이 서로 무관하다는 선언이 아니라 각 성분의 분포에 부여한 제약입니다.
성분 수와 공분산 형태를 함께 비교합니다
n_components는 정규분포 성분의 수입니다. 성분을 늘리면 복잡한 모양을 표현하기 쉬워지지만 훈련 데이터에 지나치게 맞출 위험도 커집니다. 공식 모델 선택 예시는 성분 수와 공분산 형태를 함께 바꾸며 BIC를 비교합니다. 같은 데이터와 표현에서 계산한 AIC·BIC는 낮은 쪽을 선호하는 기준이며 절대적인 정답표는 아닙니다.
가우시안 혼합 모델과 헷갈리는 용어는 무엇이 다른가요?
K-means와 GMM의 차이
K-means는 중심까지의 거리로 사례를 한 그룹에 배정합니다. GMM은 성분별 분포와 비중을 학습하고 소속 확률을 계산합니다. 두 방법은 특정 가정 아래 연결되지만 일반적인 GMM을 단순히 확률을 붙인 K-means라고만 설명하면 공분산과 밀도 추정의 역할을 놓칩니다.
DBSCAN과 GMM의 차이
DBSCAN은 이웃이 충분한 영역을 연결해 군집을 만들고 노이즈를 따로 남깁니다. GMM은 정한 수의 정규분포로 전체 분포를 설명하며 기본 predict는 각 입력에 성분 번호를 붙입니다. 기본 GMM에 DBSCAN처럼 자동으로 노이즈 번호를 남기는 기능이 있다고 생각하면 안 됩니다.
ICA와 GMM의 차이
ICA는 함께 섞여 관측된 신호를 통계적으로 독립적인 원천 성분으로 분리하려는 방법입니다. GMM은 각 관측이 어느 확률분포 성분에서 나왔는지 추정합니다. 둘 다 성분이나 혼합이라는 말을 쓰지만, 여러 신호의 선형 결합을 푸는 문제와 분포의 혼합을 맞추는 문제는 다릅니다.
베이지안 가우시안 혼합과의 차이
BayesianGaussianMixture는 사전분포를 포함한 변분 추론을 사용합니다. 일부 성분의 가중치를 매우 작게 만들어 유효 성분 수를 줄일 수 있지만 구현에서는 성분 수의 상한과 사전분포 설정을 확인해야 합니다. 모든 설정 없이 현실의 집단 수를 알아내는 기능으로 해석하지 않습니다.
더 넓은 개념은 클러스터링 용어 설명에서 확인할 수 있습니다. 그 글이 비슷한 사례를 묶는 목적과 대표 방법을 다룬다면, GMM은 확률밀도·책임도·공분산을 갖춘 특정 모델을 이해하는 데 초점을 둡니다.
실전에서는 어디에 쓰이나요?
겹치는 사용자·센서 패턴을 탐색합니다
수치 특징으로 표현한 사례에서 소속이 뚜렷한 영역과 겹치는 영역을 나눠 살펴봅니다. 그룹별 평균만 볼 때 놓치는 경계 사례를 확인할 수 있습니다. 이름이나 등급을 먼저 정하기보다 각 성분의 대표 사례와 책임도가 분산된 사례를 함께 읽는 편이 좋습니다.
밀도 추정과 이상 후보 점검을 보조합니다
정상 참고 데이터를 모델링한 뒤 새 입력의 로그밀도가 낮은 사례를 검토 대상으로 삼을 수 있습니다. 별도의 검증 자료로 판정 기준을 정하고 드문 정상 사례가 얼마나 걸리는지 확인합니다. 밀도 모델을 학습하는 일과 이상 여부의 임계값을 정하는 일은 구분합니다.
표본 생성과 후속 특징을 만듭니다
학습한 혼합분포에서 새 표본을 뽑거나 성분별 책임도를 다른 모델의 입력으로 활용할 수 있습니다. 생성된 표본은 실제 관측의 복사본도, 현실을 완벽히 재현한 데이터도 아닙니다. 후속 예측에 쓸 때는 원래 특징을 사용하는 기준 모델과 별도 평가 데이터에서 비교합니다.
가우시안 혼합 모델을 적용할 때 어떤 순서로 확인하나요?
1. 입력 특징과 평가 분할을 정합니다
한 행이 무엇을 뜻하는지, 숫자의 단위와 결측값 처리 규칙이 무엇인지 기록합니다. 필요하면 척도를 맞추되 변환기는 훈련 데이터에서만 학습합니다. 평가 데이터의 평균이나 분산까지 미리 쓰면 새 데이터에 대한 검증이 흐려집니다.
2. 성분 수와 공분산 후보를 비교합니다
작은 수의 성분부터 시작해 표현할 패턴에 맞는 후보를 시험합니다. 동일한 전처리와 평가 조건에서 정보 기준과 별도 데이터의 로그밀도를 봅니다. 공식 공분산 예시도 작은 데이터에서는 full이 훈련 자료에 과하게 맞을 수 있음을 보여 주므로 복잡한 설정을 기본 정답으로 두지 않습니다.
3. 초기화·수렴·수치 상태를 확인합니다
random_state와 n_init를 기록하고 converged_와 n_iter_를 확인합니다. 공분산 대각에 더하는 reg_covar는 지나치게 작은 분산으로 생기는 수치 문제를 완화합니다. 경고를 없애려고 값만 크게 바꾸기 전에 중복 관측·부족한 표본·과도한 성분 수를 점검합니다.
4. 확률과 밀도를 따로 저장합니다
성분 번호, 성분별 책임도, 사례별 로그밀도를 구분해 저장합니다. 모델과 전처리 버전도 함께 남깁니다. 재학습 뒤에는 성분 번호가 바뀔 수 있으므로 번호만으로 과거 집단과 새 집단을 같은 유형이라고 연결하지 않습니다.
사용할 때 무엇을 주의해야 하나요?
첫째, 정규분포 가정이 맞는지 살펴봅니다. 휘어진 띠나 복잡한 고리 모양을 소수의 타원형 성분으로 잘 설명하기는 어렵습니다. 많은 성분으로 모양을 근사할 수 있어도 그 성분 각각이 별개의 현실 집단을 뜻하지는 않습니다.
둘째, 책임도를 정답 확률로 오해하지 않습니다. 소속 확률은 학습한 모델과 선택한 성분 안에서 계산한 값입니다. 입력이 모든 성분에서 멀리 떨어져 있어도 합이 1이 되도록 정규화되므로 가장 큰 소속 확률만 보고 정상이라고 판단하지 않습니다.
셋째, 로그밀도는 퍼센트가 아닙니다. score_samples의 값은 연속 데이터의 확률밀도에 로그를 취한 값입니다. 단위와 특징 표현이 달라지면 값도 달라질 수 있으므로 다른 전처리나 차원의 숫자를 그대로 비교하지 않습니다.
넷째, 수렴과 품질을 분리합니다. 종료 조건을 만족해도 전역 최적해나 새로운 데이터에서의 성능을 보장하지 않습니다. 여러 초기화와 평가 분할에서 성분의 크기·위치·퍼짐이 얼마나 안정적인지 확인합니다.
주의: 작은 성분이나 낮은 밀도만으로 데이터를 삭제하거나 사람의 위험도를 확정하지 마세요. 원자료와 업무 맥락을 확인하고 자동 판정의 범위를 따로 검증합니다.
자주 묻는 질문
Q1. GMM은 딥러닝 모델인가요?
기본적인 GMM은 신경망이 아닌 확률 모델입니다. 보통 정답 라벨 없이 EM으로 분포의 모수를 학습합니다. 신경망이 만든 특징에 GMM을 적용할 수 있지만, 두 단계를 함께 쓴다고 GMM 자체가 신경망으로 바뀌지는 않습니다.
Q2. 전체 데이터가 정규분포여야 하나요?
아닙니다. 각 성분이 정규분포라고 가정하며, 여러 성분을 섞은 전체 분포는 봉우리가 여럿일 수 있습니다. 하나의 정규분포에 잘 맞지 않는다는 이유만으로 GMM을 쓸 수 없는 것은 아닙니다.
Q3. 성분 수가 실제 집단 수인가요?
항상 그렇지는 않습니다. 한 현실 집단의 복잡한 모양을 여러 성분으로 근사할 수도 있고, 서로 다른 집단이 비슷한 특징 때문에 겹칠 수도 있습니다. BIC가 고른 성분 수도 모델 가정과 후보 범위 안에서 나온 선택입니다.
Q4. predict_proba가 높으면 이상치가 아닌가요?
아닙니다. 그 값은 해당 입력을 성분끼리 비교한 상대적인 소속 확률입니다. 전체 분포에서 드문 위치인지 보려면 로그밀도와 검증된 판정 기준을 따로 확인해야 합니다.
Q5. 새 데이터가 오면 전체를 다시 학습하나요?
학습한 GaussianMixture로 새 입력의 성분 번호·책임도·로그밀도를 바로 계산할 수 있습니다. 같은 전처리를 적용하고 입력 특징의 순서를 유지합니다. 데이터 분포가 바뀌었다면 재학습 필요성을 별도로 평가합니다.
출처
마무리
가우시안 혼합 모델은 여러 정규분포를 섞어 데이터의 분포를 추정하고, 각 관측이 어느 성분에서 나왔을 가능성이 큰지 계산하는 모델입니다. 중심뿐 아니라 퍼짐과 비중을 학습하므로 소속이 겹치는 패턴과 밀도를 함께 살펴볼 수 있습니다.
처음 사용할 때는 성분 수와 공분산 형태를 함께 비교하고, 초기화와 수렴 상태를 남기세요. 성분 번호·책임도·로그밀도가 각각 무엇을 뜻하는지 구분하면 확률 출력에 과도한 의미를 붙이지 않고 결과를 검토할 수 있습니다.
