들어가며 — 마케터가 이 글을 읽어야 하는 이유
MMM 모델이 fit되어 채널별 saturation 곡선과 한계 ROAS posterior를 얻었다면, 절반 작업이 끝난 것입니다. 나머지 절반은 그 결과를 다음 분기 예산 시트에 어떻게 옮기느냐입니다.
"어느 채널에 얼마를 써야 하나"라는 질문은 표면상 단순하지만, 답에 도달하려면 세 가지를 동시에 다뤄야 합니다. 첫째, 총 예산이 고정일 때 매출을 최대화하는 수학적 최적점 찾기. 둘째, 그 최적점의 불확실성을 posterior 분포로 표현하기. 셋째, 계약·인력·크리에이티브 등 운영 제약 안에서 현실적으로 옮기기. 이 세 가지를 묶는 것이 예산 재배분 사이클입니다.
이 글은 한계 ROAS 균등화 룰, scipy로 짜는 최적화 코드, 파레토 프론티어 시각화, PyMC posterior에서 추천 배분 샘플링까지 마케터 시선에서 정리합니다. mmm-saturation-curves에서 saturation 곡선과 한계 ROAS를 이해했다면 이 글이 그 다음 단계입니다.

총 예산 고정에서 채널 비중을 옮기는 작은 게임 — MMM이 그 룰을 알려준다
최적 배분의 경제학 — 한계 ROAS 균등화
총 예산이 고정되어 있을 때 매출을 최대화하는 배분은 모든 채널의 한계 ROAS가 같은 지점입니다. 이건 라그랑주 승수법(제약 최적화)의 결과이고, 마케팅에서는 "채널 간 1원의 한계 가치가 같아야 더 옮길 이유가 없다"는 직관으로 받아들이면 됩니다.
이 한 줄이 예산 재배분의 골격입니다. saturation 곡선 위에서 모든 채널의 접선 기울기를 같게 만드는 작업과 동일합니다.
📌 이 글의 전제
독자가 saturation 곡선과 한계 ROAS의 의미는 알고 있다고 가정합니다(mmm-saturation-curves 참고). MMM의 fit 결과 posterior 분포가 손에 있다고 가정합니다. 모델 검증은 mmm-validation-holdout을 먼저 읽으세요.
평균 ROAS가 가장 높은 채널에 다 부으면 그 채널은 바로 saturation 영역으로 들어가 한계 ROAS가 떨어집니다. 예를 들어 Meta의 평균 ROAS가 4x이고 Naver의 평균 ROAS가 2x라 해도, Meta가 이미 saturation 영역 깊이 들어가 있고 한계 ROAS가 1.2x라면 Naver 한계 ROAS 3x인 쪽으로 예산을 옮기는 게 맞습니다. 채널 간 평균 ROAS 비교는 의사결정에 거의 쓰이지 않고, 한계 ROAS 비교가 정답에 가깝습니다.
세 가지 최적화 도구 — scipy·파레토·PyMC
scipy로 짜는 예산 최적화
plt.xlabel('변동성 (stddev)'); plt.ylabel('기대 매출')
plt.title('파레토 프론티어 — 매출 vs 위험')
plt.legend(); plt.tight_layout(); plt.show()
# → 좌상단에 몰린 점들이 효율적 프론티어
x축에 변동성, y축에 기대 매출을 두면 파레토 프론티어가 그려집니다. 같은 위험 수준에서 가장 높은 매출을 주는 배분이 효율적 배분이고, 회사의 위험 선호에 따라 이 곡선 위 한 점을 선택합니다.
PyMC posterior에서 추천 배분 샘플링
불확실성을 배분에 반영하기
점추정 최적화는 posterior 평균 파라미터 한 세트로 최적화합니다. 더 정직한 방법은 posterior 샘플 각각에 대해 최적화를 돌려 추천 배분의 분포를 얻는 것입니다.
python
Top comments (0)