1 정의
leakage 의 매개체 를 식별 후 Treatment 와 Control 사이 의 통로 를 차단 또는 randomization unit 을 매개체 단위 로 변경 (Kohavi, Tang, Xu, 2020, Ch.22.4).
1.0.0.1 4 갈래 (+1 변종)
- Splitting shared resources: 자원 (budget·training data) 을 variant 비율 로 분리
- Geo-based randomization: 지역 단위 randomization
- Time-based randomization: 시간 단위 (분·시간·일) randomization
- Network-cluster randomization: 사회 네트워크 의 cluster 단위
- Ego-centric randomization: ego (focal) + alters (인접) 의 변종
1.0.0.2 Edge-Level Analysis (보조)
Bernoulli randomization 위에 edge 단위 post-hoc 분석. 4 type (T-T, T-C, C-T, C-C) 의 contrast 로 unbiased delta 추출.
| 매개체 | isolation 1 차 선택 |
|---|---|
| budget·training data | splitting resources |
| inventory·pricing (marketplace) | geo-based |
| 단기 transactional event | time-based |
| 사회 네트워크 (밀집) | network-cluster, ego-centric |
| 사회 네트워크 (희소) | edge-level analysis |
규칙: 매개체 의 단위 와 randomization unit 을 일치 시킴 → leakage 차단.
3 2. Geo-Based Randomization
3.0.0.1 적용 영역
- 지리 의존 marketplace (Airbnb hotel, Uber/Lyft taxi)
- 지역별 ad campaign
3.0.0.2 가정 (Vaver and Koehler 2011, 2012)
- 다른 지역 의 unit 들 사이 leakage 거의 없음
- 같은 지역 내 의 unit 들 사이 leakage 발생 가능
3.0.0.3 절차
- 지역 정의 (city, MSA, country)
- 지역 단위 randomization (city A → Treatment, city B → Control)
- 분석 단위 도 지역 — paired t-test 또는 difference-in-differences
3.0.0.4 Sample size 의 한계
지역 수 가 sample size — 보통 100~1000 단위. user-level (millions) 보다 훨씬 작음.
user-level: n = 10M users → variance ~ 1/sqrt(10M)
geo-level: n = 100 cities → variance ~ 1/sqrt(100)
→ geo 의 std error 가 ~316 배 큼
geo-based 의 가장 큰 비용 은 sample size 손실 → variance 폭증.
해결책:
- Pre-experiment covariate adjustment (CUPED, Ch.18): 같은 city 의 historical metric 으로 variance 줄임
- Stratified randomization: 비슷한 city 끼리 strata, strata 내 randomize
- Time dimension 추가: 같은 city 의 여러 기간 → sample 늘림 (DiD)
레슨: geo-based 는 variance reduction 와 반드시 결합 — 안 그러면 underpowered.
3.0.0.5 Lyft (Chamandy 2016)
- city 단위 randomization
- 같은 city 내 driver-rider 는 spillover, 다른 city 는 거의 없음
- variance 줄이기: log scale, paired t-test (Treatment city ↔︎ matched Control city)
3.0.0.6 Uber
- city · time-of-day 의 cross-product 로 unit 정의
- “switchback” — 같은 city 가 시간대 별로 T → C → T → … (Phase J-SWITCH 참조)
4 3. Time-Based Randomization
4.0.0.1 가정 (Bojinov and Shephard 2017; Hohnhold et al. 2015)
- 시간 \(t\) 마다 모든 사용자 가 같은 variant
- 같은 사용자 의 시간 차 leakage 가 미미 (transactional 효과)
4.0.0.2 절차
- 시간 단위 정의 (분·시간·일·주)
- 시간 단위 마다 coin flip → 모두 T 또는 모두 C
- 분석: T 시간 의 metric vs C 시간 의 metric (paired t-test 또는 covariate adjustment)
4.0.0.3 Sample size 의 한계
시간 단위 수 = sample size:
| 단위 | 1 주 sample size |
|---|---|
| second | 604,800 |
| minute | 10,080 |
| hour | 168 |
| day | 7 |
day-level 은 sample 너무 작음 → 적어도 hour-level 권장.
time-based 의 도전: 시간 효과 가 강함 — 요일·시간대·계절성.
naive analysis:
T 시간: 평균 metric = 100
C 시간: 평균 metric = 80
delta: +25%
But! C 시간 의 절반 이 새벽 → 자연 적으로 metric 낮음
실제 effect 는 +25% 가 아님
해결:
- Paired t-test (같은 시간대 의 T-day vs C-day 비교)
- Covariate adjustment (시간대·요일 dummy 변수)
- Switchback design (Phase J-SWITCH-1) — 같은 단위 시간 내 T→C→T 반복
interrupted time series (ITS, Ch.11): pre-period 를 control 로 사용하는 시간 비교.
차이:
| 차원 | Time-based randomization | ITS |
|---|---|---|
| randomization | 매 시간 단위 마다 coin flip | 한 번 의 intervention |
| 가정 | 시간 효과 model 가능 | 시간 추세 model 가능 |
| 적용 | 빠른 spillover (분·시간) | 큰 변화 (정책·feature launch) |
5 4. Network-Cluster Randomization
5.0.0.1 적용 영역
- 사회 네트워크 (Facebook, LinkedIn, Twitter)
- 사용자 그룹 의 spillover
5.0.0.2 절차
- graph 의 cluster 분할 (예: METIS, modularity-based)
- cluster 단위 randomization (cluster A → T, cluster B → C)
- 분석: cluster 단위 t-test 또는 mixed-effects model
5.0.0.3 Cluster 의 trade-off
큰 cluster (예: 100k user 1 cluster):
+ isolation 강 (cluster 내 spillover 가 cluster 안 으로 한정)
- sample size 작음 (cluster 수 적음)
작은 cluster (예: 100 user 1 cluster):
+ sample size 큼
- inter-cluster edge 비율 높음 → leakage 잔존
cluster 는 graph cut 문제: cluster 내 edge 를 최대화, cluster 사이 edge 를 최소화.
LinkedIn 사례 (Saint-Jacques et al. 2018):
- 10,000 cluster 시도
- 80%+ edge 가 cluster 사이 — perfect isolation 불가
레슨: 사회 네트워크 의 dense graph 는 완벽한 isolation 어렵다. cluster 는 부분 적 isolation 으로 인식 — combined methods (cluster + edge analysis) 권장.
5.0.0.4 1. Inter-cluster edge
dense graph 에서 의 cluster 사이 edge 가 spillover 의 잔여 채널. 해결: cluster 분할 시 engaged subgraph (실제 메시지 가 흐르는 edge) 만 cut.
5.0.0.5 2. Effective sample size
cluster 수 = sample size — variance bias trade-off:
cluster 수 ↑: variance ↓, but isolation ↓ (작은 cluster → inter-cluster edge 많음)
cluster 수 ↓: isolation ↑, but variance ↑
해결: time dimension 결합 (같은 cluster 의 여러 기간) 또는 covariate adjustment.
6 5. Ego-Centric Randomization
cluster randomization 의 변종 — 각 cluster 가 특정 구조: ego (focal) + alters (인접).
6.0.0.1 절차
- graph 의 모든 ego (focal individual) 식별
- 각 ego 의 alters (immediate neighbors) 묶음
- ego 의 variant 배정 + alters 의 별도 variant 배정 (예: alters 모두 T, ego 절반 T)
- ego 의 metric 만 비교 (T ego vs C ego)
6.0.0.2 분석 의 강점
- first-order impact: ego 자체 의 행동 변화 (T·C ego 비교)
- downstream impact: alter 가 모두 T 일 때 ego 의 응답 (전파 측정)
- interaction effect: ego 와 alter 의 모든 조합
6.0.0.3 효율 성
cluster 가 작음 (~ degree+1) → cluster 수 많음 → sample 보다 큼 (network-cluster 보다)
ego-centric 의 우아함: randomization 과 분석 의 분리.
- randomization unit: ego (사람 또는 작은 cluster)
- analysis unit: ego 의 metric만
- alters 는 통제 변수 — graph 의 spillover 를 명시적 모델링
비유: 식물 실험 — 이웃 식물 의 효과 (햇빛 차단·수분 경쟁) 가 있다고 알려져 있을 때 central 식물 만 측정, 주변 식물 은 통제 로.
7 6. Edge-Level Analysis
Bernoulli randomization (user-level) 위 의 post-hoc 분석. 모든 interaction (edge) 을 4 type 으로 라벨:
- T → T (Treatment user 가 Treatment user 에게)
- T → C
- C → C
- C → T
7.0.0.1 분석 패턴
7.0.0.2 Unbiased delta 추출
metric_TT = (T → T edge 의 평균 행동)
metric_CC = (C → C edge 의 평균 행동)
unbiased_delta = metric_TT - metric_CC
T → T 와 C → C 는 internal — 각각 의 universe 로 해석 가능.
7.0.0.3 Treatment affinity
T → T edge 비율 vs T → C edge 비율 → T 가 T 끼리 더 자주 message 하는가?
7.0.0.4 Response rate
T 의 새 action 에 대한 응답 률 (T 의 message 의 reply rate vs C 의 message 의 reply rate)
edge-level 의 핵심: user 단위 randomization 의 통계적 power 를 유지하면서 edge 단위 spillover 를 명시적 측정.
레슨: 사회 네트워크 의 명시적 interaction (메시지·like) 이 있는 경우 가장 강력 한 도구. 단, edge 가 잘 정의 되지 않은 경우 (예: feed view) 적용 어려움.
8 7. Detection & Monitoring
ramp (Ch.15) 는 leakage 발견 의 1차 방어선:
8.0.0.1 단계
- employees (~100 명): 큰 functional bug 발견
- small datacenter (~10K user): infrastructure leakage (CPU·memory)
- MPR (1%): traffic 의 1% — interaction effect 시작
- scale up (10%, 50%): marketplace contention 노출
8.0.0.2 Outlier 신호
- 1% 와 50% ramp 의 effect 크기 가 크게 다름 → leakage 의심
- 1% 의 +5% effect 가 50% 에서 +1% → 자원 contention 가능성
- 시간 따른 effect drift (학습 효과 또는 budget 소진)
8.0.0.3 모니터링 지표
- Treatment·Control 의 infrastructure metric (CPU, memory, latency 의 99 percentile)
- ad budget 의 소진 속도 (variant 별)
- relevance model 의 training data freshness
8.0.0.4 Trigger 조건
- 같은 server 의 Treatment·Control latency drift > 5%
- ad budget 소진 속도 의 variant 격차 > 20%
- training data 의 variant 별 비율 의 design 이탈
8.0.0.5 사례
Bing 의 trustworthy A/B testing platform: 50+ guardrail metric 자동 모니터링, 이상 시 실험 자동 중단.
leakage 의 정확 한 측정 은 어려움 — 특히 isolation 미적용 의 일반 실험. 하지만 감시 는 항상 가능.
규칙: 의심 → 측정 시도 → 측정 불가 시 alert + ramp 단계 분석 으로 부분 점검. “측정 안 되니 무시” 는 가장 위험.
9 비교 — 모든 isolation
| 접근 | 적용 매개체 | sample size | bias 제거 | 구현 비용 | Variance |
|---|---|---|---|---|---|
| Splitting resources | budget, training data | 큼 | 강 | 중간 | 동일 |
| Geo-based | inventory·marketplace | 작음 | 강 | 중간 | 큼 (CUPED 결합 필수) |
| Time-based | transactional spillover | 작음~중간 | 강 | 낮음 | 큼 (paired test 결합) |
| Network-cluster | dense social graph | 작음 | 부분 | 높음 | 큼 |
| Ego-centric | sparse social graph | 중간 | 강 | 높음 | 중간 |
| Edge-level | 명시적 interaction graph | 큼 (Bernoulli) | 강 | 중간 (분석) | 중간 |
| Rule-of-thumb | 일반 사회 engagement | 큼 (Bernoulli) | 부분 | 낮음 | 동일 |
isolation 들 은 상호 배타 가 아닌 결합 가능:
- Geo + CUPED: marketplace 실험 의 variance 보강
- Time + paired t-test: transactional 의 시간 효과 통제
- Network-cluster + edge-level: 사회 네트워크 의 isolation + post-hoc detail
- Splitting + ramp monitoring: budget 분리 + 안전 ramp
규칙: 큰 실험 일수록 복합 isolation — 한 가지 만으로 부족.
10 Python 시뮬레이션 — geo-based 의 variance trade-off
import numpy as np
np.random.seed(2026)
def simulate_geo_vs_user_level(n_users_per_geo=10000, n_geos=100, true_lift=0.05):
"""
같은 데이터 를 user-level 과 geo-level 로 분석 비교.
"""
# 각 geo 의 baseline 차이 (heterogeneity)
geo_baseline = np.random.normal(0.20, 0.05, size=n_geos)
user_metric = []
user_assignment = []
geo_metric_t, geo_metric_c = [], []
for g in range(n_geos):
baseline = geo_baseline[g]
# geo-level: geo 단위 randomization
geo_assign = np.random.randint(0, 2)
p = baseline * (1 + true_lift) if geo_assign == 1 else baseline
users = np.random.binomial(1, p, size=n_users_per_geo)
if geo_assign == 1:
geo_metric_t.append(users.mean())
else:
geo_metric_c.append(users.mean())
user_metric.extend(users)
user_assignment.extend([geo_assign] * n_users_per_geo)
user_metric = np.array(user_metric)
user_assignment = np.array(user_assignment)
# user-level analysis (잘못된, leakage 무시)
rate_t_user = user_metric[user_assignment == 1].mean()
rate_c_user = user_metric[user_assignment == 0].mean()
se_user = np.sqrt(
rate_t_user * (1 - rate_t_user) / (user_assignment == 1).sum()
+ rate_c_user * (1 - rate_c_user) / (user_assignment == 0).sum()
)
# geo-level analysis
geo_metric_t = np.array(geo_metric_t)
geo_metric_c = np.array(geo_metric_c)
se_geo = np.sqrt(
geo_metric_t.var() / len(geo_metric_t)
+ geo_metric_c.var() / len(geo_metric_c)
)
return rate_t_user, rate_c_user, se_user, geo_metric_t.mean(), geo_metric_c.mean(), se_geo
t_u, c_u, se_u, t_g, c_g, se_g = simulate_geo_vs_user_level()
print(f"User-level: delta = {t_u - c_u:.4f}, SE = {se_u:.6f}")
print(f"Geo-level: delta = {t_g - c_g:.4f}, SE = {se_g:.6f}")
print(f"SE ratio (geo / user): {se_g / se_u:.1f}x")user-level 분석 은 sample size 가 많아 SE 가 매우 작음. geo-level 은 sample 이 geo 수 (100) 로 줄어들어 SE 가 수십 배 큼.
geo-level 의 진짜 가치 는 leakage 가 있을 때 bias 제거. user-level 의 작은 SE 는 biased estimator 의 SE — 무의미.
규칙: leakage 가 있으면 작은 SE 라도 잘못된 의사결정. unbiased 추정량 의 큰 SE 가 올바른 추정.
11 응용
- 사회 네트워크 의 engagement 실험: ego-centric + edge-level
- Marketplace (Airbnb, Uber): geo + CUPED + DiD
- Ad platform: budget split + ramp monitoring + scenario testing
- Search relevance: model 분리 학습 + holdback experiment
- Streaming platform: time-based switchback (콘텐츠 인기 의 시간 의존)
12 실무 체크리스트
- 매개체 식별 (graph·자원·시간·사용자 unit)
- 매개체 에 맞는 isolation 1 차 선택
- variance 보강 (CUPED·paired t-test·stratification) 결합
- ramp 단계 마다 outlier 점검
- monitoring alert 자동화 (CPU, budget, training data)
- sample size 계산 시 isolation 의 variance 증가 미리 반영
- SRM (Ch.21) 점검 — isolation 가 design ratio 무너뜨릴 수 있음
13 관련 주제
- F22-0 overview — Ch.22 전체 지도
- F22-1 — Direct·Indirect 6 사례
- F22-2 — Rule-of-Thumb · Ecosystem Value
- Ch.14 (F-KOH14) — Randomization unit 의 trade-off
- Ch.15 (F-KOH15) — Ramp 의 leakage 점검
- Ch.18 (F-KOH18) — CUPED variance reduction
- Ch.21 (F-KOH21) — SRM 점검
- J-SWITCH 시리즈 — Time-based 의 일반화
- Kohavi, Tang, Xu (2020). Trustworthy Online Controlled Experiments. Ch.22.4~22.6.
- Vaver and Koehler (2011, 2012). Geo-based experiments.
- Bojinov and Shephard (2017). Time series experiments and causal estimands.
- Hohnhold, O’Brien, Tang (2015). “Focus on the Long-Term.”
- Gui, Xu, Bhasin, Han (2015). “Network A/B Testing.”
- Backstrom and Kleinberg (2011). “Network Bucket Testing.” WWW 2011.
- Saint-Jacques et al. (2018, 2018b). LinkedIn ego-centric randomization.
- Cox (1958). Planning of Experiments.
- Katzir, Liberty, Somekh (2012). “Network Bucket Testing.”