DEV Community

Cover image for Customer segmentation 너머 — k-means 아닌 mixture model로 세그먼트 다루기
HyunSeok Jeong
HyunSeok Jeong

Posted on • Originally published at blog.trysitely.com

Customer segmentation 너머 — k-means 아닌 mixture model로 세그먼트 다루기

"이 유저는 어느 세그먼트인가요?"의 답이 늘 한 개여야 할 이유가 있을까요. 평일엔 직장인 캠페인, 주말엔 부모 캠페인이 잘 듣는 같은 유저. k-means는 한 세그먼트만 강제 배정하지만, 실제 행동은 여러 세그먼트의 혼합입니다. Gaussian Mixture Model(GMM)·Latent Class Analysis 같은 mixture model은 유저의 확률적 멤버십을 추정합니다. 같은 행동 데이터에서 더 풍부한 세그멘테이션을 빼내는 도구.

1. k-means의 한계 — hard assignment

k-means는 마케팅 BI에서 가장 흔한 클러스터링 도구입니다. 단순하고 빠르고 운영 가벼움. 그런데 한 가지 가정이 강합니다.

모든 유저를 정확히 한 세그먼트에 hard assign.

이 가정의 운영 한계:

  • 경계 유저 — A·B 두 세그먼트 사이의 유저도 한쪽에 강제 박힘
  • 혼합 행동 — 직장인 + 부모 행동을 섞은 유저는 한 세그먼트만 받음
  • 불확실성 정보 손실 — "이 유저가 A 세그먼트일 확률"의 정보 사라짐

마케팅 캠페인 타겟팅에서 이 한계가 비용을 만듭니다.

  • 경계 유저에 한 메시지만 보내면 다른 효과를 놓침
  • 혼합 행동 유저는 두 캠페인 모두에 적합한데 한 쪽만 받음
  • 캠페인 평가 시 세그먼트 멤버십이 흔들리면 결과 해석이 깨짐

mixture model은 이 hard assignment를 soft probabilistic membership으로 바꿉니다. 같은 데이터에 더 풍부한 정보.

k-means hard vs GMM soft membership 비교 다이어그램
k-means는 유저를 한 점으로, GMM은 다중 세그먼트의 확률 벡터로 표현. 경계 유저·혼합 행동 유저의 정보가 살아남는다.

📌 이 글에서 다루는 것

이 글은 Gaussian Mixture Model을 중심으로 mixture model의 마케팅 적용을 정리합니다. 변형(Latent Class Analysis·Bayesian GMM)도 짧게. k-means를 대체하는 게 아니라 운영 자리에 따라 골라 쓰는 도구로 봐야 합니다.

2. GMM의 한 줄 직관

Gaussian Mixture Model의 한 줄 직관:

데이터를 K개의 Gaussian 분포의 혼합으로 모델링. 각 유저는 K개 분포 중 어디에서 나왔을 확률을 가진다.

수식으로:

p(x)=k=1KπkN(xμk,Σk) p(x) = \sum_{k=1}^{K} \pi_k \cdot \mathcal{N}(x \mid \mu_k, \Sigma_k)

여기서 πk\pi_k 는 세그먼트 kk 의 사전 비중, N(μk,Σk)\mathcal{N}(\mu_k, \Sigma_k) 는 평균·공분산 가진 Gaussian. 각 유저 xx 의 사후 멤버십:

Pr(z=kx)=πkN(xμk,Σk)jπjN(xμj,Σj) \Pr(z = k \mid x) = \frac{\pi_k \cdot \mathcal{N}(x \mid \mu_k, \Sigma_k)}{\sum_j \pi_j \cdot \mathcal{N}(x \mid \mu_j, \Sigma_j)}

직관: 분자는 "세그먼트 kk 가 이 유저를 얼마나 잘 설명하는가", 분모는 모든 세그먼트의 설명력 합. 이 비율이 사후 멤버십 확률.

각 유저가 모든 세그먼트에 대해 멤버십 확률을 받습니다. 합이 1.

운영적 의미:

  • 경계 유저 — Pr(A) = 0.55, Pr(B) = 0.45 같이 표현
  • 혼합 행동 — Pr(직장인) = 0.4, Pr(부모) = 0.6
  • 명확한 유저 — Pr(A) = 0.95, Pr(나머지) = 0.05

3. EM 알고리즘 — GMM이 파라미터를 학습하는 방법

GMM을 학습시키는 엔진이 EM(Expectation-Maximization) 알고리즘입니다. 왜 EM인가를 이해하면 GMM이 언제 잘 작동하고 언제 실패하는지가 보입니다.

E-step: "각 점이 어느 클러스터에 속할 확률 추정"

현재 파라미터( μk\mu_k , Σk\Sigma_k , πk\pi_k )를 고정한 채, 모든 유저에 대해 사후 멤버십 확률을 계산합니다.

rik=Pr(zi=kxi)=πkN(xiμk,Σk)jπjN(xiμj,Σj) r_{ik} = \Pr(z_i = k \mid x_i) = \frac{\pi_k \mathcal{N}(x_i \mid \mu_k, \Sigma_k)}{\sum_j \pi_j \mathcal{N}(x_i \mid \mu_j, \Sigma_j)}

직관: "지금 알고 있는 클러스터 모양으로 봤을 때, 이 유저는 어느 클러스터에서 나왔을 것 같나?" 를 각 유저마다 계산.

M-step: "그 확률로 가중평균해 파라미터 업데이트"

E-step에서 계산한 rikr_{ik} 를 가중치로 삼아 파라미터를 다시 추정합니다.

μkirikxiirik,πkirikN \mu_k \leftarrow \frac{\sum_i r_{ik} x_i}{\sum_i r_{ik}}, \quad \pi_k \leftarrow \frac{\sum_i r_{ik}}{N}

직관: "클러스터 k에 속할 확률이 높은 유저들을 더 많이 반영해서 클러스터 중심·분산을 다시 계산." rikr_{ik} 가 클수록 그 유저가 클러스터 k의 파라미터 추정에 더 많이 기여.

이 E·M 두 단계를 수렴할 때까지 반복합니다. 수렴 보장이 있고(log-likelihood 단조 증가), 구현이 단순합니다.

⚠️ EM의 한계 — 초기화 민감도

EM은 로컬 최적해에 수렴합니다. 초기 파라미터 설정에 따라 결과가 달라집니다. sklearn의 GaussianMixture는 기본으로 n_init=1이지만, 실무에서는 n_init=10처럼 여러 번 초기화해 가장 좋은 결과를 고르는 게 안전합니다.

4. K(세그먼트 수)를 어떻게 정하나 — BIC 실예시

GMM의 가장 어려운 자리. K가 너무 작으면 세분화 부족, 너무 많으면 운영 부담.

BIC·AIC 수식

BIC=2lnL+plnn \text{BIC} = -2 \ln L + p \ln n

LL 은 likelihood, pp 는 파라미터 수, nn 은 데이터 수. BIC는 모델 복잡도에 페널티를 줍니다. AIC보다 보수적 — 작은 K를 더 선호.

K=2~10 모델 fit 후 BIC 곡선 코드

아래 코드가 K를 자동으로 탐색하고 BIC 곡선을 그려 "꺾이는 지점"을 찾아줍니다.


python
Enter fullscreen mode Exit fullscreen mode

Top comments (0)