huny.log

기술 포스트 · CRM·라이프사이클

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

k-means는 모든 유저를 한 세그먼트에 강제로 박습니다. 실제 유저는 여러 세그먼트의 혼합 — 평일엔 직장인, 주말엔 부모. Gaussian 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은 다중 세그먼트의 확률 벡터로 표현. 경계 유저·혼합 행동 유저의 정보가 살아남는다.

2. GMM의 한 줄 직관

Gaussian Mixture Model의 한 줄 직관:

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

수식으로:

여기서 는 세그먼트 의 사전 비중, 는 평균·공분산 가진 Gaussian. 각 유저 의 사후 멤버십:

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

각 유저가 모든 세그먼트에 대해 멤버십 확률을 받습니다. 합이 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: “각 점이 어느 클러스터에 속할 확률 추정”

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

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

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

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

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

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

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

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

BIC·AIC 수식

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

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

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

import numpy as np
import matplotlib.pyplot as plt
from sklearn.mixture import GaussianMixture
X = customer_features # (n_users, n_features)
bic_scores = []
aic_scores = []
k_range = range(2, 11)
for k in k_range:
gmm = GaussianMixture(
n_components=k,
covariance_type="full",
n_init=10, # 여러 초기화 중 최선 선택
random_state=42,
).fit(X)
bic_scores.append(gmm.bic(X))
aic_scores.append(gmm.aic(X))
# BIC가 가장 낮은 K 선택
best_k = k_range[np.argmin(bic_scores)]
print(f"BIC 최적 K = {best_k}") # 예: BIC 최적 K = 5
# 시각화 — 꺾이는 지점(elbow)이 최적 K
plt.figure(figsize=(8, 4))
plt.plot(list(k_range), bic_scores, marker="o", label="BIC")
plt.plot(list(k_range), aic_scores, marker="s", linestyle="--", label="AIC")
plt.axvline(best_k, color="red", linestyle=":", label=f"Best K={best_k}")
plt.xlabel("K (세그먼트 수)")
plt.ylabel("Information Criterion")
plt.legend()
plt.title("BIC/AIC vs K — 꺾이는 지점이 최적 세그먼트 수")
plt.tight_layout()
plt.savefig("bic_curve.png", dpi=150)

결과 해석: BIC 곡선이 K=5에서 꺾이고 K=6 이후 완만해진다면 K=5가 수학적 최적입니다. 이때 운영적으로 5개 세그먼트를 관리할 수 있는지도 함께 판단합니다. 보통 4-7개 안에서 BIC 최솟값을 고르는 게 마케팅 운영에서 현실적입니다.

운영 적합성

운영적으로 의미 있는 K는 보통 4-7개. 캠페인 디자인·메시지 변형이 너무 많으면 운영 부담. 4-7 안에서 BIC가 가장 낮은 K가 표준.

Bayesian Nonparametric (Dirichlet Process)

K를 미리 안 정하고 데이터가 알아서 결정. 운영 부담 크지만 K 결정의 주관성 사라짐.

도구K 결정적용
BIC·AIC수학적사전 K 후보 5-10
Cross-validation도메인 메트릭운영 메트릭이 명확할 때
Dirichlet Process자동새 도메인·탐색적 분석

5. 마케팅 운영의 활용 — soft membership으로 무엇을 하나

5-1. soft 타겟팅

같은 유저에게 여러 캠페인을 멤버십 확률에 비례해 노출:

  • Pr(A) = 0.7 → 캠페인 A에 우선 노출, 빈도 높게
  • Pr(A) = 0.4 → 캠페인 A·B 둘 다에 노출, 각각 빈도 중간
  • Pr(A) = 0.1 → 캠페인 A는 거의 노출 안 함

기존 hard assignment 기준 가장 가까운 1개 캠페인만 받았던 자리에서, 멤버십 비례 분배가 가능해집니다.

5-2. 세그먼트별 LTV 가중 계산

soft membership의 가장 강력한 활용입니다. 각 유저의 LTV 기댓값을 멤버십 확률로 가중 평균하면 경계 유저의 LTV를 더 정밀하게 추정합니다. 이 LTV 추정치는 BG/NBD LTV 모델과 결합해 세그먼트별 예산 배분의 입력으로 쓸 수 있습니다.

from sklearn.mixture import GaussianMixture
import numpy as np
import pandas as pd
X = customer_features # (n_users, n_features)
ltv_per_user = ltv_array # (n_users,) — 개인별 LTV 예측값
gmm = GaussianMixture(n_components=5, n_init=10, random_state=42).fit(X)
memberships = gmm.predict_proba(X) # (n_users, 5) — 각 행 합 = 1
# 세그먼트별 가중 평균 LTV
# memberships[:, k] 가 k번 세그먼트 멤버십 확률
segment_ltv = {}
for k in range(5):
weights = memberships[:, k]
# 멤버십 확률이 0.3 이상인 유저만 포함 (경계 유저 노이즈 감소)
mask = weights >= 0.3
if mask.sum() == 0:
segment_ltv[k] = 0.0
continue
segment_ltv[k] = np.average(ltv_per_user[mask], weights=weights[mask])
# 결과: {0: 45200, 1: 128000, 2: 31000, 3: 89000, 4: 210000}
# 세그먼트 4의 LTV가 가장 높음 → 해당 세그먼트 획득에 예산 집중
print(pd.Series(segment_ltv).sort_values(ascending=False))

5-3. 캠페인 평가의 보정

A/B 결과를 세그먼트별로 분석할 때 hard assignment는 경계 유저를 한 쪽에 박습니다. soft membership으로 가중 평균하면 경계의 노이즈가 줄어듭니다.

5-4. 신규 유저 cold start

GMM은 새 유저가 들어와도 각 세그먼트의 likelihood를 계산해 즉시 멤버십을 줍니다. k-means는 단순히 가장 가까운 centroid에 배정하지만 GMM은 분산까지 고려해 더 의미 있는 매칭.

6. GMM이 깨질 때 — 흔한 함정 3가지

6-1. 차원이 너무 높음

GMM은 공분산 행렬을 추정. 변수 100개면 공분산 행렬이 100×100 — 추정 불안정. 차원 축소(PCA)나 diagonal·spherical covariance로 단순화.

6-2. Gaussian 가정이 깨진다

GMM은 각 세그먼트가 Gaussian이라고 가정. 비정형 분포(skewed·multi-modal)가 같은 세그먼트 안에 있으면 잘못 분리. variational autoencoder·t-distribution mixture 같은 변형이 답.

6-3. 멤버십을 hard 결정으로 환원

GMM 결과를 받고서 argmax로 한 세그먼트만 결정해 운영하면 GMM의 가치 절반이 사라집니다. soft membership 자체를 운영에 활용해야 합니다.

7. 마케팅 실무 케이스 3개

7-1. RFM 세그먼테이션 보강

전통 RFM(Recency·Frequency·Monetary) 4×4×4 = 64개 세그먼트 대신, GMM으로 5-7 soft 세그먼트. 멤버십 확률을 캠페인 가중치에 직접 사용.

7-2. 광고 매체 풀 세그먼테이션

매체별 유저 풀의 행동 패턴이 다름. GMM으로 매체 풀별 세그먼트 추정 → 각 풀의 적합한 메시지 결정.

7-3. 신규 유저 빠른 매칭

가입 첫 7일 행동으로 GMM 멤버십 추정. 멤버십 확률에 비례한 메시지·할인 코드 자동 노출. cold start 환경의 빠른 개인화.

8. 마치며 — 세그먼테이션의 도구상자

마케터의 세그먼테이션 도구상자에는 이제 두 층이 있습니다.

  • k-means — 단순, 빠름, hard assignment. 빠른 탐색·BI 보고용
  • GMM·mixture model — soft membership, 분포 다룸. 운영·캠페인 타겟팅용

두 도구는 같은 자리에 경쟁하지 않습니다 — 다른 자리에 답합니다. k-means로 세그먼트를 빠르게 발견하고, GMM으로 운영에 가져가는 패턴이 운영 표준이 되어가고 있습니다.

EM 알고리즘이 학습한 soft membership을 LTV 모델과 결합하면 세그먼트별 예산 배분까지 자동화할 수 있습니다. 그 연결 고리는 BG/NBD LTV 예측코호트 retention 분석에서 이어집니다.

다음 글로 이어가기

참고

CRM·라이프사이클 카테고리의 다른 글

전체 보기 →