huny.log

기술 포스트 · 통계·ML

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

실험 기간을 줄이고 싶다면 표본을 늘리지 말고 분산을 깎아라. Microsoft·Netflix·Booking이 표준으로 쓰는 CUPED를 마케터 시각으로 풀어봅니다.

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

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

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

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

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

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

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

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

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

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

여기서 한 그룹의 표본 크기를 , 분산을 로 단순화하면 입니다.

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

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

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

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

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

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

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

핵심 통찰

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

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

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

4. CUPED 공식 — Y_cuped 정의

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

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

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

분산은 얼마나 줄어드나

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

여기서 — 사전과 사후의 상관계수입니다.

  • 이면 분산은 , 약 49% 절감
  • 이면 분산은 , 25% 절감
  • 이면 분산은 , 9% 절감

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

최소 코드 — numpy로 8줄

import numpy as np
def cuped(y_post, x_pre):
theta = np.cov(y_post, x_pre, ddof=1)[0, 1] / np.var(x_pre, ddof=1)
return y_post - theta * (x_pre - x_pre.mean())
# 분산 감소율 = 1 - rho^2 검증
y_adj = cuped(y_post, x_pre)
print(f"variance reduction: {1 - y_adj.var() / y_post.var():.1%}")

이게 CUPED의 전부입니다. 어떤 통계 패키지를 쓰든 회귀 잔차로 환원되니, 8줄짜리 numpy로도 운영 코드 한 컬럼 더하기로 끝납니다.

5. 얼마나 줄어드냐 — 메트릭별 실측 감도

이론은 깔끔한데 실무에서 진짜 궁금한 건 “내 메트릭에서 ρ가 얼마나 나오느냐”입니다. 메트릭별로 차이가 큽니다.

메트릭 종류사용자 고유 성향사전과의 상관 ρ분산 절감 ()실험 기간 단축
매출/유저, GMV매우 큼 (heavy tail)0.6 ~ 0.836% ~ 64%30% ~ 60%
세션 길이, 페이지뷰0.5 ~ 0.725% ~ 49%25% ~ 50%
구매 횟수, 방문 빈도중간0.4 ~ 0.616% ~ 36%15% ~ 35%
전환율(CVR), 클릭률(CTR)작음 (이진 + 평균화)0.1 ~ 0.31% ~ 9%거의 없음
회원가입 같은 신규 이벤트사전 정의 불가CUPED 미적용

핵심은 “이진/희소 메트릭에서 CUPED는 거의 도움이 안 된다”는 점입니다. 클릭률·전환율 자체에는 효과가 적고, 매출·체류 시간처럼 연속·long-tail 분포 메트릭에서 빛납니다.

실제 공개된 수치도 비슷합니다. Microsoft ExP 팀이 보고한 사례에서는 매출/유저 메트릭 기준 분산 50% 절감, Booking.com 발표에서는 평균 35% 안팎의 절감이 보고됐어요. 다만 같은 회사 안에서도 페이지·트래픽·시즌마다 ρ가 달라지므로 도입 전엔 반드시 자기 데이터로 ρ를 한 번 측정해보고 의사결정하는 게 정석입니다.

6. 언제 안 통하나 — 신규 유저·신규 메트릭의 함정

CUPED는 만능이 아닙니다. 다음 경우엔 효과가 없거나, 잘못 쓰면 결과가 망가집니다.

Pre-period 데이터가 없는 경우

신규 가입자만 모은 코호트로 실험하면 사전 데이터가 정의되지 않습니다. 이때 으로 채우면 분산은 안 줄고 그대로예요. 신규 유저 실험은 CUPED를 그냥 끄고 가는 게 맞습니다.

Novelty 효과가 강한 메트릭

새 기능 출시 첫 주의 클릭률처럼, 사전 시점엔 존재하지 않거나 의미가 다른 메트릭은 CUPED 적용이 깨집니다. 예를 들어 추천 위젯을 새로 박은 페이지에서 “위젯 클릭률”은 실험 전엔 0이었어요. 가 0인 상수면 이라 절감이 없고, 의 정의를 다른 위젯 클릭률 등으로 대체하면 가 약해집니다.

예를 들어 새 추천 카드를 메인에 박은 첫 주에는 클릭률 자체가 신규 정의이므로 사전 데이터가 0에 가깝습니다. 이 경우 CUPED를 적용하면 분산이 거의 안 줄거나 오히려 추정량이 불안정해져요. 실험 시작 전 ρ를 한 번 추정해서 0.2 미만이면 그 메트릭에선 CUPED를 끄고 가는 게 깔끔합니다.

코호트가 바뀌는 경우

리타게팅 캠페인이나 윈백처럼 사전·사후의 유저 구성이 다르면 추정이 흔들립니다. 이때는 코호트별로 따로 적용하거나, post-stratification(사후 층화)으로 대체하는 게 안전합니다.

대안 — CUPAC, ML covariate

CUPED는 단일 사전 메트릭만 쓰지만, 여러 변수를 결합한 CUPAC(Controlled-experiment Using Pre-experiment ML-prediction As Covariate)이 등장했습니다. ML 모델로 를 예측해 covariate로 쓰는 방식이에요. 회사가 ML 인프라가 있다면 CUPED → CUPAC으로 자연스럽게 확장됩니다.

7. 마케터가 실무 적용할 때 체크리스트

CUPED 도입은 데이터 팀에 코드 한 컬럼 추가만 부탁하면 되지만, 보고와 의사결정 프로세스가 바뀌므로 마케팅 측에서 같이 봐야 할 것들이 있습니다.

체크 항목권장값 / 가이드
Pre-period 길이실험 기간과 비슷하거나 1~2배. 너무 길면 평소 성향이 흐려짐
사전·사후 메트릭 매칭같은 정의·같은 계산 로직. 예: GMV는 환불 제외 등 일관성
SRM(Sample Ratio Mismatch)CUPED 변환 전 원본으로 점검. CUPED는 SRM 못 잡음
의사결정 임계, 효과 크기 절대값 등은 그대로 유지. CUPED는 SE만 줄임
보고서 표기”CUPED-adjusted GMV uplift +X.X%” 식으로 어떤 메트릭이 보정됐는지 명시
운영 자동화실험 플랫폼이 자동 적용하면 좋고, 아니면 분석 노트북 단계에서 수동 적용

실무에서 가장 큰 변화는 분기 실험 처리량입니다. 매출 메트릭에서 30~40% 분산 절감이 나오면 같은 트래픽으로 실험 기간이 2/3로 줄고, 이는 분기에 약 1.5배의 실험을 돌릴 수 있다는 뜻이에요. 트래픽이 한정된 회원가입·결제 페이지처럼 “표본을 늘리는 게 거의 불가능한” 자리에서 효과가 가장 큽니다.

8. 마치며 — 한 장으로 요약

CUPED를 한 슬라이드로 옮긴다면 이렇게 정리됩니다.

  • 검출력은 분산/표본 비율의 함수다 — 분산을 깎으면 표본을 늘린 것과 같은 효과
  • ,
  • 분산 절감 = . 매출·세션 메트릭은 25~50%, 클릭률·전환율은 거의 0
  • 실험 기간 단축이 그대로 KPI — 분기 실험 처리량이 늘어남
  • Pre-period 데이터가 없거나 novelty 메트릭, 코호트가 바뀌는 실험에선 끄고 간다
  • 의사결정 임계는 그대로, SE만 줄어드는 도구라는 점을 보고서에 명시

같은 4주 트래픽으로 더 많은 실험을 돌리고 싶다면, 표본을 늘리기 전에 분산을 들여다보세요. 가지고 있는 데이터를 한 번 더 보는 것만으로 절반의 시간을 벌어옵니다.

참고

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

전체 보기 →