MODELS / GMM / CLUSTERING BASICS
겹치는 데이터를 소속 확률로 나누는 GMM
서로 겹치는 두 종 모양 분포가 한 관측값을 설명하는 몫을 비교하며 GMM의 소속 확률, EM 반복과 K-Means와의 차이를 익힙니다.
겹치는 데이터를 소속 확률로 나누기
이름표가 없는 데이터를 비슷한 무리로 나누되, 경계에 있는 값을 억지로 한쪽에만 넣지 않는 것이 이 페이지의 목표다.
이름표가 사라진 부품을 어떻게 나눌까
두 기계가 같은 종류의 부품을 만든다고 생각해 보자. 첫 번째 기계는 대체로 짧은 부품을, 두 번째 기계는 대체로 긴 부품을 만든다. 그런데 완성된 부품에서 기계 이름표가 떨어졌다. 우리에게 남은 정보는 각 부품의 길이뿐이다.
길이가 비슷한 부품끼리 모으면 두 무리가 보일 수 있다. 이렇게 서로 비슷한 값이 모인 무리를 Cluster(군집)라고 부른다. 문제는 두 기계 모두 중간 길이의 부품을 만들 수 있다는 점이다. 중간에 있는 부품을 어느 한쪽에만 넣으면 확실하지 않은 판단을 확실한 것처럼 보이게 된다.
여러 종 모양을 겹쳐 전체 데이터를 설명한다
한 기계에서 만든 부품의 길이는 어떤 중심 주변에 많이 모이고, 중심에서 멀어질수록 드물어진다고 가정해 보자. 그러면 각 기계의 부품 길이를 하나의 종 모양 곡선으로 나타낼 수 있다. 이 곡선을 Gaussian distribution(가우시안 분포, 정규분포)이라고 한다.
Gaussian Mixture Model(가우시안 혼합 모델, GMM)은 이런 종 모양 곡선을 여러 개 겹쳐 전체 데이터를 설명한다. 각 곡선은 하나의 숨은 군집을 나타낸다. GMM이 알아내려는 것은 다음 세 가지다.
- 군집의 중심은 어디인가
- 군집은 중심 주변에 얼마나 넓게 퍼져 있는가
- 전체 데이터에서 각 군집이 차지하는 비율은 얼마인가
먼저 아래 도구에서 군집 사이 거리를 줄여 보자. 두 곡선이 겹칠수록 가운데 부품의 소속은 더 모호해진다. 살펴볼 부품 길이를 한쪽 중심으로 옮기면 그 군집의 소속 확률이 커진다.
- 군집 A 중심
- 38 mm
- 군집 B 중심
- 62 mm
- 각 군집의 폭·비중
- 9 mm · 50%
선택한 부품 길이50 mm
두 군집이 거의 같은 정도로 이 값을 설명합니다.
회색 점은 이름표가 없는 가상 관측값입니다. 이 도구는 한 가지 측정값과 두 군집만 보여 주지만, 실제 GMM은 여러 특성과 여러 군집을 함께 다룰 수 있습니다.
한 점을 잘라 나누지 않고 비율로 나눈다
가운데에 있는 부품은 군집 A일 수도 있고 군집 B일 수도 있다. GMM은 이 부품을 바로 한쪽에 넣지 않고, 각 군집이 그 값을 얼마나 잘 설명하는지 비교한다. 예를 들어 군집 A 70%, 군집 B 30%처럼 나타낸다.
이처럼 한 관측값이 여러 군집에 속할 가능성을 함께 남기는 방법을 Soft clustering(연성 군집화)이라고 한다. 각 군집이 한 관측값을 설명하는 몫을 Responsibility(책임도)라고 부른다. 어려운 이름이지만, 여기서는 “이 점의 소속 확률”이라고 읽으면 된다.
먼저 여러 곡선을 합쳐 전체 밀도를 만드는 식을 보자.
- 관측값 주변에 전체 데이터가 모이는 정도를 나타내는 혼합밀도
- 단위:
- 어느 군집에서 왔는지 살펴볼 부품 길이
- 단위:
- 모델에 넣은 전체 군집 수
- 단위:
- 여러 군집 가운데 현재 계산하는 군집의 번호
- 단위: 없음
- 번째 군집이 전체에서 차지하는 Mixture weight(혼합 비율)
- 단위: 없음
- 평균 와 분산 을 가진 번째 가우시안 곡선이 를 받치는 높이
- 단위:
- 번째 군집의 중심인 평균
- 단위:
- 번째 군집이 중심 주변에 퍼진 폭인 표준편차
- 단위:
각 군집의 곡선 높이에 그 군집의 혼합 비율을 곱한 뒤 모두 더한 값이 전체 혼합밀도다. 따라서 큰 군집은 같은 곡선 높이에서도 더 큰 몫을 가질 수 있다.
이제 번째 군집의 책임도를 계산한다.
- 관측값 가 번째 군집에 속한다고 모델이 계산한 Responsibility(책임도)
- 단위: 없음
- 소속 확률을 계산할 부품 길이
- 단위:
- 책임도를 구하려는 군집의 번호
- 단위: 없음
- 분모에서 모든 군집을 차례로 더할 때 사용하는 번호
- 단위: 없음
- 모델에 넣은 전체 군집 수
- 단위:
- 번째 군집이 전체에서 차지하는 혼합 비율
- 단위: 없음
- 번째 가우시안 곡선이 관측값 를 받치는 높이
- 단위:
- 번째 군집의 평균
- 단위:
- 번째 군집의 표준편차
- 단위:
분자는 한 군집이 관측값을 설명하는 몫이고, 분모는 모든 군집의 몫을 더한 값이다. 그래서 한 관측값에 대한 모든 책임도를 더하면 1, 즉 100%가 된다.
곡선의 위치와 폭은 번갈아 고친다
처음에는 어느 점이 어느 기계에서 왔는지 모른다. 그래서 임시 곡선을 놓고, 소속 확률과 곡선 모양을 번갈아 다시 계산한다. 이 반복 방법을 Expectation-Maximization Algorithm(기댓값-최대화 알고리즘, EM)이라고 한다.
- 데이터 위에 임시 가우시안 곡선을 놓는다.
- 각 점에 대해 모든 군집의 책임도를 계산한다.
- 책임도가 큰 점이 더 많이 영향을 주도록 각 군집의 중심·폭·혼합 비율을 다시 계산한다.
- 곡선이 거의 움직이지 않을 때까지 2번과 3번을 반복한다.
점의 이름표를 먼저 확정하지 않는 것이 핵심이다. 한 점이 군집 A에 60%, 군집 B에 40% 속해 보인다면 다음 중심을 계산할 때도 두 군집에 각각 그만큼 영향을 준다.
K-Means와 무엇이 다를까
| 비교 항목 | K-Means | GMM |
|---|---|---|
| 한 점의 결과 | 가장 가까운 중심 하나에 넣는다. | 모든 군집의 소속 확률을 남긴다. |
| 군집 모양 | 중심까지의 거리로 나누므로 둥글고 크기가 비슷한 군집에 잘 맞는다. | 군집마다 폭과 방향을 다르게 배울 수 있다. |
| 경계의 점 | 아주 작은 차이로도 한쪽에만 들어간다. | 50%와 50%처럼 모호함을 그대로 보여 줄 수 있다. |
| 잘 맞는 상황 | 빠르고 단순한 묶음이 필요할 때 | 군집이 겹치거나 소속의 불확실성이 중요할 때 |
GMM이 언제나 더 좋은 것은 아니다. 군집이 뚜렷하고 속도가 중요하면 K-Means의 단순함이 장점이 될 수 있다.
소속 확률을 정답 확률로 오해하지 않는다
- 군집 수 는 먼저 정해야 한다. 데이터에 맞는 군집 수를 비교하는 방법은 별도의 모델 선택 문제다.
- 각 군집이 가우시안 모양이라는 가정이 크게 틀리면 결과도 어색해질 수 있다.
- 측정 단위가 크게 다른 특성을 그대로 넣으면 숫자가 큰 특성이 거리를 지배할 수 있으므로 Scale(척도)을 맞춰야 한다.
- 아주 멀리 떨어진 이상치는 군집의 중심과 폭을 끌어당길 수 있다.
- 처음 곡선을 어디에 놓았는지에 따라 서로 다른 결과에 멈출 수 있다. 여러 초기값을 시험하는 이유다.
- 책임도 80%는 모델의 가정과 현재 파라미터 아래에서 계산한 값이다. 실제 기계 이름이 80% 확률로 맞는다는 보증은 아니다.
핵심만 다시 정리하기
GMM은 데이터를 칼로 자르듯 나누지 않는다. 여러 종 모양 분포가 각 점을 얼마나 잘 설명하는지 비교하고, 그 몫을 소속 확률로 남긴다. 그래서 서로 겹치는 군집과 애매한 경계를 표현할 수 있다.
두 군집의 한가운데에 있는 점은 왜 50%와 50%에 가까운가?
두 군집의 폭과 혼합 비율이 같고 점이 두 중심에서 같은 거리에 있다면, 두 곡선이 그 점을 받치는 높이도 같다. 전체 몫을 똑같이 나누므로 책임도가 각각 50%가 된다.
GMM의 소속 확률이 높으면 실제 이름표도 확실한가?
아니다. 소속 확률은 현재 선택한 군집 수와 가우시안 가정 아래에서 모델이 계산한 값이다. 실제 정답을 보증하지 않는다.
모든 군집이 종 모양이 아니면 어떻게 되는가?
한 개의 가우시안 곡선으로 굽은 모양이나 아주 긴 꼬리를 정확히 설명하기 어렵다. 여러 성분을 쓰거나 데이터 모양에 더 잘 맞는 다른 군집 방법을 검토해야 한다.