huny.log

기술 포스트 · 통계·ML

Stratified A/B와 post-stratification — 세그먼트로 분산을 깎는 또 다른 길

CUPED는 사전 데이터로 분산을 깎습니다. 그런데 사전 데이터가 없을 때는? Stratified A/B는 세그먼트로 표본을 나눠 비교하고, post-stratification은 사후에 세그먼트별로 보정합니다. 같은 표본·같은 결정에 더 짧은 실험 기간으로 닿는 또 다른 분산 축소 도구.

실험을 빨리 끝내고 싶으면 분산을 깎으라고 했습니다. CUPED는 사전 실험 데이터를 활용하는 한 길이고, 이번 글의 stratified A/B는 세그먼트 정보를 활용하는 다른 길입니다. 신규 유저처럼 사전 데이터가 없는 경우, 또는 세그먼트 간 분산이 큰 메트릭(예: GMV)에서 stratified는 CUPED보다 더 큰 효과를 낼 수 있습니다. 같은 결정에 더 짧은 기간으로 닿는 두 번째 무기를 정리합니다.

1. 분산은 어디서 오나 — 그룹 안 분산 vs 그룹 간 분산

A/B 테스트의 통계적 검출력은 분산 에 반비례합니다. 분산이 크면 같은 효과를 검출하는 데 더 많은 표본·더 긴 기간이 필요합니다.

전체 분산은 다음과 같이 분해됩니다 (분산 분해 정리, ANOVA 기본).

  • — 같은 세그먼트 안에서 유저 간 분산
  • — 세그먼트 간 평균의 분산

마케팅 메트릭의 분산은 보통 두 부분이 모두 큽니다. GMV의 경우 세그먼트(고가치/저가치 유저) 간 평균 차이가 분산의 절반 이상을 차지하는 경우도 흔합니다. 세그먼트 간 분산을 빼면 검출력이 그만큼 올라갑니다.

이게 stratified A/B와 post-stratification의 출발점입니다. 처리·대조 비교를 세그먼트 안에서 따로 하고 평균을 다시 묶으면, 세그먼트 간 분산이 자연스럽게 빠집니다.

세그먼트별로 처리·대조 비교 후 가중 평균하는 다이어그램
전체에서 한 번 비교하는 대신, 세그먼트 안에서 비교하고 합친다. 세그먼트 간 분산이 빠지므로 같은 표본에서 더 강한 검출력.

2. Stratified A/B — 사전 설계로 균등 배정

stratified A/B의 한 줄짜리 아이디어는 단순합니다.

처리·대조군 배정을 전체에서 무작위로 하지 말고, 세그먼트 안에서 무작위로 한다.

세그먼트가 신규/기존 유저, iOS/Android, 광고 채널별 코호트라고 합시다. 단순 랜덤 배정으로 50:50을 굴리면 어느 한 세그먼트가 60:40으로 쏠릴 수 있습니다. stratified는 각 세그먼트 안에서 50:50을 보장하니, 그 쏠림이 사라집니다.

운영 효과는 두 가지입니다.

  • 검출력 향상 — 세그먼트 간 차이가 처리·대조 평균 차이로 흘러 들어가지 않음
  • SRM 안정 — Sample Ratio Mismatch 검출이 깨끗해짐

수식으로 보면 stratified estimator의 분산은 다음으로 떨어집니다.

여기서 는 세그먼트 의 비중, 는 세그먼트 안 분산입니다. 세그먼트 간 분산이 빠진 만큼 전체 분산이 줄어듭니다.

3. Post-stratification — 사후 보정으로 같은 효과

stratified A/B는 사전에 배정 메커니즘을 바꿔야 합니다. 운영 시스템이 단순 랜덤 배정만 지원한다면 도입이 어렵습니다.

post-stratification은 같은 효과를 사후에 만듭니다. 단순 랜덤으로 배정하고, 분석 시점에 세그먼트별로 따로 처리·대조 비교를 한 뒤 가중 평균합니다.

여기서 는 세그먼트 의 모집단 비중(처리군·대조군 비중이 아닌, 사전에 정한 모집단 비중). 사후 보정만으로 stratified A/B와 거의 같은 분산 감소를 얻을 수 있습니다.

비교Stratified A/BPost-stratification
적용 시점사전 (배정 설계)사후 (분석 단계)
운영 시스템 변경필요불필요
분산 감소동일거의 동일 (작은 비대칭 가능)
SRM 보호강함약함
사용 빈도신규 실험기존 데이터 분석

운영적으로는 post-stratification이 훨씬 가볍습니다. 배정 메커니즘은 그대로 두고, 분석 코드만 세그먼트로 나눠 가중 평균하면 됩니다.

4. 어느 변수로 stratify할 것인가

stratification은 변수 선택이 효과를 좌우합니다. 좋은 stratification 변수의 조건은 다음입니다.

  • 메트릭과 강한 상관 — GMV가 메트릭이면 “고가치 유저 vs 저가치 유저” 같은 변수
  • 처리 전에 관측 가능 — 처리·대조 배정 시점 이전 데이터로 정의 가능해야 함
  • 안정적 — 실험 기간 동안 세그먼트가 흔들리지 않아야 함
  • 카디널리티 적정 — 너무 많으면 각 셀의 표본 부족

마케팅 메트릭별 자주 쓰이는 stratification 변수는 다음과 같습니다.

  • GMV·매출 — 사전 30일 누적 GMV 분위(고/중/저), 신규/기존, 디바이스
  • 전환율 — 광고 채널, 캠페인 그룹, 도착 페이지
  • 리텐션 — 첫 방문 코호트, 디바이스, 지역
import pandas as pd
import numpy as np
# df: ['user_id', 'group', 'segment', 'y']
agg = df.groupby(['segment', 'group'])['y'].agg(['mean', 'count']).unstack()
diff = agg['mean']['T'] - agg['mean']['C']
weights = df.groupby('segment').size() / len(df)
tau_post = (diff * weights).sum()

이게 본문의 유일한 코드입니다. pandas 한 묶음이면 post-stratification 추정량이 나옵니다.

5. CUPED와 무엇이 다른가

CUPED와 stratified·post-stratification은 같은 목표 — 분산 감소 — 의 다른 도구입니다.

도구활용 자원잘 듣는 자리잘 안 듣는 자리
CUPED사전 실험 데이터 (같은 메트릭의 과거값)기존 유저 메트릭신규 유저, 신규 채널
Stratified A/B세그먼트 변수세그먼트 간 분산 큰 메트릭세그먼트 정의가 약할 때
Post-stratification세그먼트 변수같은 자리 (사후 적용)같은 자리

운영적으로 두 도구는 결합 가능합니다. CUPED로 사전 메트릭의 분산을 깎고, post-stratification으로 세그먼트 분산을 추가로 깎으면 두 효과가 합쳐집니다. 분산 감소율이 30%(CUPED) + 20%(post-strat) = 50%까지 나오는 케이스도 흔합니다.

CUPED를 더 깊이 보려면 huny.log의 CUPED — A/B 표본을 절반으로 글이 있습니다. 함께 읽으면 분산 도구상자가 채워집니다.

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

6-1. GMV 메트릭의 분산 — 고가치 유저가 다 가져간다

GMV는 마케팅 메트릭 중 분산이 가장 큰 축에 속합니다. 상위 5% 고가치 유저의 GMV가 전체의 절반을 차지하는 경우도 흔합니다. 단순 랜덤 배정에서 처리·대조군에 고가치 유저가 한쪽에 더 많이 들어가면 결과가 통째로 흔들립니다. GMV 분위로 post-stratification만 추가해도 표준오차가 30~40% 줄어드는 경우가 흔합니다.

6-2. 신규 vs 기존 유저 분리

신규 유저는 사전 메트릭이 없어 CUPED가 안 듣습니다. 신규/기존이라는 단일 stratification만 추가해도 검출력이 살아나는 경우가 많습니다. 두 그룹의 메트릭 평균이 워낙 다르기 때문에, 한쪽에 어느 그룹이 더 많이 들어가는지가 결과를 흔드는 가장 큰 요인이기 때문입니다.

6-3. 광고 채널별 stratify — 캠페인 효과의 진짜 신호

광고 채널별로 유저 구성이 다르고 메트릭 분산도 다릅니다. 채널 stratification 없이 단순 비교하면 “Meta 유저가 더 많은 그룹이 더 잘 나오는” 가짜 신호를 잡을 수 있습니다. 채널 stratify 후 비교하면 진짜 처리 효과만 남습니다.

7. Stratified가 깨질 때 — 흔한 함정 3가지

7-1. 너무 많은 변수로 stratify

신규/기존 × 디바이스 × 채널 × 지역 4개로 stratify하면 셀이 수십 개가 되고 각 셀의 표본이 부족해 분산이 다시 흔들립니다. 보통 1~2개 핵심 변수로 충분합니다. 더 필요하면 변수를 결합한 단일 변수(예: “RFM 점수 분위”)를 만드는 게 안전합니다.

7-2. stratification 변수가 처리에 영향을 받는다

처리·대조 배정 이후 세그먼트가 바뀌는 변수(예: 처리에 의해 세그먼트가 변하는 lifecycle 단계)로 stratify하면 분산 감소가 아니라 편향이 들어옵니다. 처리 전에 관측 가능한 변수만 써야 합니다.

7-3. 가중치 가 처리·대조 비중과 같아짐

post-stratification의 가중치 는 모집단의 세그먼트 비중이어야 합니다. 실수로 처리군 또는 대조군의 세그먼트 비중을 쓰면 보정이 깨집니다. 사전 정의된 모집단 비중 또는 양 그룹 합한 비중을 써야 합니다.

8. 마치며 — 분산 도구상자의 두 번째 무기

마케터의 실험 도구상자에는 분산 감소 도구가 두 개 정도 있어야 합니다.

  • 첫 번째 — CUPED, 사전 데이터가 풍부할 때
  • 두 번째 — Stratified A/B 또는 post-stratification, 세그먼트 정보가 풍부할 때

둘 다 마케팅 데이터에 흔히 있는 자원입니다. 두 도구를 결합 운영하면 같은 결정에 더 짧은 실험 기간으로 닿을 수 있고, 검출력이 부족한 메트릭(예: 매출·LTV)이 깨끗하게 보고됩니다.

다음 글에서는 마케팅에서 자주 쓰이는 또 다른 도구, 코호트 retention curve의 운영 해석을 다룹니다. 같은 곡선이 가지는 정보의 층을 풀어냅니다.

참고

통계·ML 카테고리의 다른 글

전체 보기 →