벤치마크를 구간으로
벤치마크 값 하나를 베타 분포로 바꾸고 몬테카를로로 퍼널 불확실성을 계산한 뒤 파일럿 결과로 갱신하는 방법을 계산기와 함께 설명합니다
글·검토 Eric Han · 리옵트 공동창업자·CTO
핵심 요약
- 평균 와 강도 로 베타 분포를 정의하면 벤치마크가 구간이 됩니다. 3%를 으로 두면 90% 구간은 1.32~5.21%입니다.
- 분위수가 공개된 자료에서 를 추정할 수 있습니다. Littledata 전환율은 입니다.
- 파일럿 후 갱신은 간단합니다. 전환 수를 에, 미전환 수를 에 더합니다.
- 퍼널 단계를 독립으로 뽑으면 꼬리 위험을 과소평가합니다. 단계 간 상관이 있을 때는 구간을 더 넓게 읽습니다.
- 벤치마크를 사전 분포로 바꿨을 때 예측이 더 정확해진다는 직접 실증은 찾지 못했습니다. 강도 는 판단값이며 민감도 분석이 필수입니다.
왜 구간인가
벤치마크 하나를 곱해 나온 "전환 100건"은 틀릴 수밖에 없습니다. 다만 얼마나 틀릴지를 숨깁니다. 예산 승인에 필요한 것은 "최악에도 몇 건이고, 어떤 단계의 불확실성이 가장 큰가"입니다.
베타 분포로 바꾸기
전환율은 0과 1 사이의 비율이므로 베타 분포를 씁니다. 사전 분포와 이항 관측이 만나면 사후 분포도 베타 분포입니다(BDA3, 2장).
는 "이 믿음이 관측 몇 건어치인가"로 읽습니다. 값에 따른 구간 폭은 다음과 같습니다(몬테카를로 20만 회, 이 책의 계산).
- k = 502.40% (0.36% ~ 7.70%)
- k = 2002.85% (1.32% ~ 5.21%)
- k = 1,0002.97% (2.17% ~ 3.94%)
분위수에서 구하기
공개 자료의 10~90분위가 있으면 표준편차를 어림하고 베타 분포 항등식으로 를 구합니다. 정규 근사를 쓰는 어림셈이고 치우친 분포에서는 거칩니다.
Littledata 전환율(중앙값 1.4%, 10~90분위 0.3~3.7%)을 넣으면 입니다. 이 값은 스토어 간 차이를 뜻합니다. 내 스토어가 어디 있을지 모른다면 알맞은 불확실성입니다. 다만 중앙값을 평균 자리에 넣으면 분포의 중심이 약 1.0%로 내려갑니다. 치우친 자료는 평균을 함께 올려 잡으세요. 세 분위에 맞추면 평균 약 1.8%, 입니다(계산).
강도를 고르는 기준
표준 지침은 없습니다. 이 책에서 쓰는 어림 기준입니다.
| 상황 | 범위 |
|---|---|
| 같은 카테고리·매체·시장의 분위 자료 있음 | 분위로 구한 값(50~300) |
| 비슷한 영역의 값 하나뿐 | 30~100 |
| 맥락이 많이 다름(한국에 미국 값 적용 등) | 10~30 |
| 자사 과거 캠페인 값 | 과거 표본 수의 일부 |
이 기준은 비율이 1% 이상일 때의 어림입니다. 0.016%처럼 아주 낮은 비율은 평균×k가 1 안팎이 되도록 k를 크게 잡아야 분포가 0에 몰리지 않습니다.
퍼널 몬테카를로
각 단계에서 값을 뽑아 곱하는 일을 충분히 반복합니다.
import random
def beta(mean, k):
return random.betavariate(mean * k, (1 - mean) * k)
results = []
for _ in range(200_000):
clicks = 1704
trial = beta(0.0485, 100)
paid = beta(0.07, 100)
results.append(clicks * trial * paid)
results.sort()
print(results[10_000], results[100_000], results[190_000]) # 5%, 50%, 95%표준 라이브러리만으로 동작하며, 위 코드 그대로 B2B SaaS 예제의 1.7명, 5.0명, 12.4명 부근이 나옵니다.
내 퍼널 구간 계산
위 코드와 같은 계산을 브라우저에서 합니다. 값을 바꾸면 분포와 민감도가 바로 갱신되고, 링크로 공유할 수 있습니다.
입력 하나만 5%, 95% 분위로 움직이고 나머지는 평균에 둔 값입니다. 위쪽부터 먼저 재세요.
- 1단계 전환2.2건 ~ 10.5건
- 2단계 전환2.8건 ~ 9.7건
단계를 서로 독립으로 두고 8,000회 반복한 값입니다. 단계가 함께 움직이면 실제 구간은 더 넓습니다. 세로선은 5%, 중앙값(진한 선), 95%이고 분포의 마지막 칸은 99% 분위 이상을 모은 값입니다.
독립 가정의 한계
광고 품질이 낮으면 클릭 후 가입도, 가입 후 유료 전환도 함께 낮아집니다. 단계를 독립으로 뽑으면 이 상관을 놓쳐 나쁜 쪽 꼬리가 실제보다 얇게 나옵니다. 5% 분위를 "최악"이 아니라 "나쁜 경우의 시작점" 정도로 읽으세요.
관측으로 갱신
사후 평균은 표본 비율과 사전 평균 사이 어딘가입니다.
예시(가상의 값). 벤치마크 3%를 으로 두면 Beta(6, 194)입니다. 방문 2,000건에서 전환 40건을 얻으면 Beta(46, 2154)이고, 평균 2.09%, 90% 구간 1.62~2.62%입니다. 파일럿 값 2.0%가 믿음을 크게 끌어오는 것을 볼 수 있습니다.
민감도 분석
- 를 절반과 두 배로 바꿔 구간이 어떻게 변하는지 봅니다.
- 각 단계의 평균을 하나씩 ±20% 움직여 어느 단계가 결과를 가장 흔드는지 찾습니다.
- 가장 흔드는 단계에 파일럿 예산을 먼저 씁니다.
언제 쓰면 안 되는가
- 벤치마크의 모집단이 내 상황과 크게 다른데 를 높게 둘 때.
- 시장 자체가 바뀌는 신제품일 때. Bass 같은 모형을 함께 봅니다.
- 소수 고객이 매출을 좌우할 때. 건수 분포보다 금액 분포가 중요합니다.