DEV Community

Cover image for CUPED — A/B 테스트 표본을 절반으로 줄이는 분산 축소 기법
HyunSeok Jeong
HyunSeok Jeong

Posted on • Originally published at blog.trysitely.com

CUPED — A/B 테스트 표본을 절반으로 줄이는 분산 축소 기법

"트래픽이 부족해서 실험을 4주는 돌려야 해요." 이 한 문장 뒤에 숨은 진짜 비용은, 4주 동안 잘못된 안을 그대로 노출하는 기회비용입니다. CUPED는 표본을 늘리지 않고도 같은 결정을 더 빨리 내릴 수 있게 해주는, 분산을 직접 깎는 기법입니다. 마케팅 팀이 놓치기 쉬운 이 기법을 한 번 정리해 봅니다.

1. 왜 표본을 늘리지 말고 분산을 깎아야 하나

CUPED로 분산을 깎으면 같은 검출력을 얻는 데 표본이 절반으로 줄어든다
*같은 메트릭의 분포를 좁히기만 해도 표본을 늘린 것과 같은 효과를 낸다. CUPED의 본질은 *

실험을 빨리 끝내고 싶을 때 보통 두 가지 방법이 떠오릅니다.

  • 표본을 늘린다 — 트래픽을 더 받거나 실험 기간을 늘림
  • 임계를 풀어준다 — p-value 0.05 → 0.10, 효과 크기 임계 낮춤

두 번째는 통계적으로 위험하고, 첫 번째는 보통 비싸거나 불가능합니다. 광고 운영이라면 트래픽을 더 받기 위해 예산을 더 태워야 하고, 회원가입처럼 트래픽 자체가 적은 페이지에서는 4주가 8주가 됩니다.

세 번째 길이 있습니다. 분산을 줄이는 것입니다.

검출력은 표본 크기 nn 만의 함수가 아니라 분산 σ2\sigma^2 와의 비율로 결정됩니다. 분산을 30% 줄이면 같은 검출력을 얻는 데 필요한 표본이 약 30% 줄어듭니다. 4주 실험이 2.8주가 되는 셈입니다.

📌 이 글에서 다루는 것

CUPED(Controlled-experiment Using Pre-Experiment Data)는 Microsoft에서 2013년에 정리한 분산 축소 기법입니다. Netflix·Booking·Uber 모두 표준으로 채택했고, 마케팅 실험에도 그대로 적용됩니다. 코드 구현보다는 "어떤 메트릭에 어느 정도 효과가 있는지""언제 깨지는지"를 중심으로 풀어봅니다.

2. 분산이 검출력을 결정한다 — 한 줄 수식 직관

t-검정에서 두 그룹 평균 차이의 표준오차(standard error)는 다음과 같습니다.

SE(YˉTYˉC)=σT2nT+σC2nC \text{SE}(\bar{Y}_T - \bar{Y}_C) = \sqrt{\frac{\sigma_T^2}{n_T} + \frac{\sigma_C^2}{n_C}}

여기서 한 그룹의 표본 크기를 nn , 분산을 σ2\sigma^2 로 단순화하면 SEσ/n\text{SE} \propto \sigma / \sqrt{n} 입니다.

이 식이 의미하는 바는 단순합니다.

  • 표본을 4배로 늘려야 SE가 절반이 된다
  • 분산을 4분의 1로 줄여도 SE가 절반이 된다

표본은 시간과 돈이 필요하지만, 분산은 이미 가지고 있는 데이터를 다시 보는 것만으로 줄일 수 있습니다. 이게 CUPED의 출발점입니다.

💡 검출력과 분산의 관계 한 줄로

분산을 30% 줄이면 같은 검출력을 위해 필요한 표본도 약 30% 줄어듭니다. 정확히는 nnew/nold=(1Δσ2)n_{\text{new}} / n_{\text{old}} = (1 - \Delta\sigma^2) 비율로 줄어요. 분산 50% 절감이면 표본 절반, 실험 기간 절반.

3. CUPED의 핵심 아이디어 — 사전 데이터로 노이즈 제거

같은 사용자를 실험 전에도 관측했다면, 실험 중 측정값에는 두 가지가 섞여 있습니다.

  • 그 사용자가 원래 가지고 있던 성향 — 평소에 GMV가 높은 헤비 유저는 실험 중에도 GMV가 높음
  • 실험 처치의 효과 — A안이냐 B안이냐로 인한 차이

A/B 테스트의 본질은 두 번째만 분리하는 것입니다. 그런데 첫 번째가 노이즈처럼 작용해서 실험 결과의 분산을 키웁니다.

핵심 통찰

만약 우리가 실험 전 1-2주의 같은 메트릭 XX 를 알고 있다면, YY 에서 XX 가 설명할 수 있는 부분을 빼낼 수 있습니다. 남는 잔차는 처치 효과 + 실험 중에 새로 생긴 노이즈뿐. 이 잔차의 분산이 원래 YY 의 분산보다 작아집니다.

즉 CUPED는 회귀의 잔차를 새로운 메트릭으로 쓰는 기법이에요. 회귀에 익숙하지 않다면 다음처럼 생각하세요.

"각 사용자의 평소 점수를 빼서 본 처치 효과는, 평소 점수가 섞여 있을 때보다 훨씬 깔끔하다."

📌 중요한 가정 — 처치와 사전 데이터는 독립

XX 실험 시작 전에 측정한 값입니다. 처치 그룹 배정 이전이라 처치와 독립이에요. 이 독립성 덕분에 보정을 해도 처치 효과 추정량은 편향되지 않습니다. 실험 중에 측정한 값으로 보정하면 추정이 망가집니다.

4. CUPED 공식 — Y_cuped 정의

원래 메트릭 YY 와 사전 메트릭 XX 가 있을 때, CUPED 변환된 메트릭은 다음과 같이 정의됩니다.

Ycuped=Yθ(XXˉ) Y_{\text{cuped}} = Y - \theta \, (X - \bar{X})

여기서 θ\theta 는 보정 계수입니다. θ\theta 를 어떻게 정해야 분산이 가장 많이 줄어들까요? 미적분으로 풀면 다음 값이 최적입니다.

θ=Cov(Y,X)Var(X) \theta^* = \frac{\text{Cov}(Y, X)}{\text{Var}(X)}

이 식은 사실 XX YY 를 회귀했을 때의 기울기와 같습니다. 즉 CUPED는 "사전 메트릭으로 본 메트릭을 회귀하고 그 잔차를 쓴다"는 것의 다른 이름이에요.

분산은 얼마나 줄어드나

θ\theta^* 을 대입하면 변환된 메트릭의 분산은 다음 비율로 줄어듭니다.

Var(Ycuped)Var(Y)=1ρ2 \frac{\text{Var}(Y_{\text{cuped}})}{\text{Var}(Y)} = 1 - \rho^2

여기서 ρ=Corr(Y,X)\rho = \text{Corr}(Y, X) — 사전과 사후의 상관계수입니다.

  • ρ=0.7\rho = 0.7 이면 분산은 10.49=0.511 - 0.49 = 0.51 , 약 49% 절감
  • ρ=0.5\rho = 0.5 이면 분산은 10.25=0.751 - 0.25 = 0.75 , 25% 절감
  • ρ=0.3\rho = 0.3 이면 분산은 10.09=0.911 - 0.09 = 0.91 , 9% 절감

상관이 강한 메트릭일수록 분산 절감이 크다는 게 직관적이에요. 마케팅 메트릭 중 GMV·매출/유저처럼 사용자 고유 성향이 크게 작용하는 지표일수록 ρ\rho 가 높아 CUPED 효과가 큽니다.

최소 코드 — numpy로 8줄


python
Enter fullscreen mode Exit fullscreen mode

Top comments (0)