huny.log

기술 포스트 · 퍼포먼스 마케팅

MMM 모델은 어떻게 검증하나 — backtest·holdout·robustness

MMM 결과를 회의에 띄우기 전에 모델이 진짜로 데이터를 잘 잡고 있는지 확인하는 단계입니다. backtest·holdout·prior 민감도·lift 결과 비교 4가지 검증법과 실패 시 대응을 정리합니다.

들어가며

MMM이 fit되어 채널 기여도와 한계 ROAS posterior가 손에 들어왔다고 끝이 아닙니다. “이 모델이 진짜 데이터를 잘 잡고 있는가, 미래에도 비슷하게 동작할 것인가”를 검증하는 단계가 남아 있고, 이 단계를 건너뛰면 분기 회의에서 자주 나오는 “MMM은 못 믿을 숫자”라는 인식이 강화됩니다. 이 글은 마케터·분석가가 분기마다 돌릴 만한 4가지 검증법과 실패 시 대응을 정리합니다.

MMM 모델 검증 흐름 — backtest와 holdout window 다이어그램
모델이 회의에 가기 전에 거쳐야 할 4개의 관문

왜 검증이 필요한가

in-sample fit의 함정

MMM 모델이 학습 데이터를 잘 따라간다는 건 R^2가 높다는 의미일 뿐, 미래 예측력이 좋다는 뜻은 아닙니다. 모델이 학습 구간의 노이즈까지 학습한 overfitting일 수 있고, 그러면 다음 분기 데이터로 가면 예측이 어긋납니다.

의사결정 신뢰의 근거

분기 회의에서 마케팅 헤드가 “이 채널 기여도 12%를 어떻게 믿어?”라고 물을 때, 검증 결과 슬라이드 한 장이 답입니다. backtest 정확도, holdout 예측 오차, prior 민감도, lift 비교 — 이 네 가지가 통과한 모델이라면 결정에 쓸 만합니다.

검증 1 — Posterior Predictive Check

in-sample 적합 점검

학습된 모델이 학습 데이터의 매출 시계열을 얼마나 잘 따라가는지 시각화합니다.

PyMC-Marketing은 mmm.plot_posterior_predictive()로 한 줄에 그릴 수 있습니다. 보는 것은 다음 4가지:

  1. 전체 트렌드 — 모델 추정선이 실제 매출선의 큰 흐름을 잡는가
  2. 큰 캠페인 시기 — 신제품 런칭·세일 등 특이 시점에서 추정선이 어떻게 움직이는가
  3. 잔차 패턴 — 잔차에 시계열 패턴(autocorrelation)이 남으면 모델 명세 오류
  4. 신뢰구간 — 90% 구간이 실제 매출의 90%를 포함하는가

잔차에 큰 캠페인 직후 양의 패턴이 남으면 adstock peak가 미뤄져야 한다는 신호이고, 시즌 패턴이 남으면 시즌 더미가 모델에 추가되어야 한다는 신호입니다.

검증 2 — Time-series Holdout

절차

학습 구간에서 마지막 4~8주를 떼어 holdout으로 두고, 나머지로 모델을 학습한 뒤 holdout 매출을 예측해 실제와 비교합니다.

단계활동
1데이터를 학습(95100주)·holdout(48주)로 분할
2학습 데이터로 모델 fit
3holdout 광고비를 입력해 매출 예측
4예측 vs 실제 매출 비교

MAPE·NRMSE — 평가 지표

MAPE 10% 이내, NRMSE 15% 이내가 일반적인 안전 기준입니다. 그보다 크면 모델이 미래를 못 잡는다고 봐도 무방합니다.

검증 3 — Rolling Backtest

시간을 슬라이딩 윈도우로

한 번의 holdout만으로는 운이 좋아서 잘 맞은 건지 모릅니다. rolling backtest는 학습 구간을 시간상 슬라이딩해서 여러 번의 holdout을 평가합니다.

학습 윈도우평가 윈도우
1~80주81~92주
13~92주93~104주
25~104주105~116주 (현재 분기 시작 시점)

각 윈도우에서 MAPE를 계산하고 평균과 변동성을 봅니다. 모델이 안정적이라면 윈도우마다 비슷한 정확도를 보이고, 변동성이 크다면 모델이 시간에 따라 휘어지는 신호입니다.

모델 변동성 진단

MAPE 변동해석액션
< 3% 차이안정OK
3~7% 차이시간 변동시간 변동 변수 추가
> 7% 차이불안정모델 명세 재검토

검증 4 — Prior Sensitivity

절차

prior 평균을 ±30%로 흔들고 다시 fit해 채널 기여도가 얼마나 흔들리는지 측정합니다(mmm-prior-elicitation 참고).

변화율해석의사결정 신뢰
< 5%데이터가 답을 결정높음
5~15%prior와 데이터 균형중간
> 15%prior가 답을 결정낮음

데이터가 충분한 채널은 prior에 둔감하고, 데이터 부족 채널은 prior에 민감합니다. 이 정보가 의사결정 슬라이드에 함께 표시되면 회의에서 “이 채널은 데이터 기반, 저 채널은 가정 기반”이 투명해집니다.

검증 5 — Lift 결과와 비교

외부 ground truth

가장 강한 검증은 lift 실험 결과와의 비교입니다. lift는 인과 강도가 가장 높은 측정이므로, MMM이 그 값과 가까이 가면 모델이 진짜를 잡고 있다고 볼 수 있습니다.

lift 결과MMM 결과해석
Meta incremental ROAS 1.3MMM Meta mROAS 1.4 (CI [1.1, 1.7])일치, 모델 신뢰
Meta incremental ROAS 1.3MMM Meta mROAS 0.6불일치, 모델 의심
Meta incremental ROAS 1.3MMM Meta mROAS 2.1불일치, 자기잠식 의심

불일치 시 우선 점검할 것: prior 잡았는지, adstock·saturation 형태 적절한지, 외생 변수 누락 없는지.

검증 실패 시 대응 매뉴얼

Posterior predictive 잔차 큼

  • 큰 캠페인 시기 잔차 → adstock peak 조정 또는 외생 더미 추가
  • 시즌 패턴 잔차 → 시즌·요일 dummy 추가
  • 추세 잔차 → 시간 추세 변수 추가
  • random walk → OK, 무시 가능

Holdout MAPE 큼

  • 추세 학습 부족 → 시간 추세 prior 강화
  • 채널 mix 변경 → 학습 구간 단축, 최근 데이터 비중 강화
  • 외부 충격 → 충격 더미 추가 후 재학습

Prior 민감도 큼

  • 데이터 부족 채널 → prior stddev 확대해 데이터에 더 맡김
  • 다중공선성 → 채널 그룹화 또는 변동 큰 시기 데이터 우선

Lift 불일치

  • MMM > Lift → 자기잠식·외생 변수 누락 의심
  • MMM < Lift → spillover·잔향 누락 의심

분기 1회 검증 워크플로

단계활동시간
1posterior predictive plot 점검10분
213주 holdout MAPE 계산30분
33-window rolling backtest1시간
4prior 민감도 ±30% 분석30분
5lift 결과와 채널별 비교30분
6검증 결과 슬라이드 1장 정리30분

총 3시간이면 한 분기 의사결정에 쓸 모델 검증 슬라이드가 나옵니다. 회의실에 들어가는 자료의 질을 좌우합니다.

함정 모음

  • in-sample R^2 의존 — 학습 적합만 보고 미래 예측력으로 착각
  • 한 번의 holdout으로 결론 — 운에 좌우되는 평가
  • 검증 단계 생략 — 시간 부족으로 fit만 하고 회의에 가져감
  • lift 불일치 무시 — 두 측정 어긋남을 합리화
  • 모든 검증 통과 신화 — 모델은 항상 어딘가 깨져 있음. 의사결정 신뢰도 등급 매기는 게 현실적

마치며

MMM 검증은 fit보다 더 시간이 들 수 있지만, 검증을 거친 모델은 분기 회의에서 다른 무게를 갖습니다. posterior predictive·holdout·rolling backtest·prior 민감도·lift 비교 — 이 다섯 단계가 분기 워크플로에 정식으로 들어가면, 회의실에서 MMM 결과를 의사결정으로 끌고 가는 마찰이 크게 줄어듭니다.

다음 분기에 한 번만 시도해 볼 만한 것은 검증 결과를 5색 신호등(녹색·노란색·빨간색)으로 단순화해 의사결정 슬라이드 헤더에 띄우는 흐름입니다. 마케팅 헤드는 모델 디테일 대신 신호등을 보고 신뢰도를 빠르게 판단할 수 있습니다.

참고

퍼포먼스 마케팅 카테고리의 다른 글

전체 보기 →