Kohavi Ch.22.4~22.6 — Isolation 4 갈래 · Edge-Level · Detection·Monitoring

splitting · geo · time · network-cluster · ego-centric · edge analysis · ramp 단계 outlier

Kohavi (2020) Ch.22 의 두 번째 실무 해결책 인 Isolation 4 갈래 (splitting resources, geo-based, time-based, network-cluster, ego-centric) 와 Edge-Level Analysis, Detection & Monitoring (ramp 단계, alert system) 를 정리한다. 각 isolation 의 trade-off (sample size·variance·bias) 를 비교 매트릭스로 제시한다.

Experimentation
A/B Test
저자

Kwangmin Kim

공개

2026년 05월 09일

1 정의

정의: Isolation (격리)

leakage 의 매개체 를 식별 후 Treatment 와 Control 사이 의 통로 를 차단 또는 randomization unit 을 매개체 단위 로 변경 (Kohavi, Tang, Xu, 2020, Ch.22.4).

1.0.0.1 4 갈래 (+1 변종)
  1. Splitting shared resources: 자원 (budget·training data) 을 variant 비율 로 분리
  2. Geo-based randomization: 지역 단위 randomization
  3. Time-based randomization: 시간 단위 (분·시간·일) randomization
  4. Network-cluster randomization: 사회 네트워크 의 cluster 단위
  5. 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 의 매핑
매개체 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 차단.

2 1. Splitting Shared Resources

Mechanism
2.0.0.1 적용 영역
  • ad campaign 의 공유 budget
  • relevance model 의 공유 training data
  • 추천 시스템 의 공유 inventory
2.0.0.2 절차
  1. 공유 자원 식별 (budget, data pool, …)
  2. variant traffic 비율 (예: 50/50) 과 동일 비율 로 자원 할당
  3. variant 별 별도 자원 풀 운영
2.0.0.3 예시

ad budget 100k$ + 50/50 traffic:

Treatment budget: 50k$
Control budget:   50k$
각 variant 의 click 만 자기 budget 에서 차감
2 가지 watch-out
2.0.0.4 1. Resource heterogeneity

machine·server 의 hardware 가 동질 적이지 않으면 분리 시 confounding 도입:

  • machine A (Treatment 전용): 빠른 CPU
  • machine B (Control 전용): 느린 CPU
  • → Treatment 가 baseline 부터 우세

해결: machine 풀 을 random shuffle 하여 두 variant 에 동등 split.

2.0.0.5 2. Resource amount 의 의도적 imbalance

50/50 traffic 이 아닌 95/5 traffic 시 budget 도 95/5 분할 → Control 의 5% 가 너무 작아 model 학습 부족, training data 의 다양성 부족.

규칙: training data·model 학습 시 가능 하면 50/50 split 권장.

직관

splitting 은 가장 명시적 isolation. 자원 의 boundary 를 명확히 하면 leakage 차단.

하지만 자원 이 불가분 (CPU·cache·shared session) 일 때 적용 불가 → 다른 isolation 필요.

3 2. Geo-Based Randomization

Mechanism
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 절차
  1. 지역 정의 (city, MSA, country)
  2. 지역 단위 randomization (city A → Treatment, city B → Control)
  3. 분석 단위 도 지역 — 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 배 큼
직관: variance 의 trade-off

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.

Geo 의 응용
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

Mechanism
4.0.0.1 가정 (Bojinov and Shephard 2017; Hohnhold et al. 2015)
  • 시간 \(t\) 마다 모든 사용자 가 같은 variant
  • 같은 사용자 의 시간 차 leakage 가 미미 (transactional 효과)
4.0.0.2 절차
  1. 시간 단위 정의 (분·시간·일·주)
  2. 시간 단위 마다 coin flip → 모두 T 또는 모두 C
  3. 분석: 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 반복
Time-based 와 ITS

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

Mechanism (Gui et al. 2015; Backstrom and Kleinberg 2011)
5.0.0.1 적용 영역
  • 사회 네트워크 (Facebook, LinkedIn, Twitter)
  • 사용자 그룹 의 spillover
5.0.0.2 절차
  1. graph 의 cluster 분할 (예: METIS, modularity-based)
  2. cluster 단위 randomization (cluster A → T, cluster B → C)
  3. 분석: 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 잔존
직관: 그래프 의 cut

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

Mechanism (Saint-Jacques et al. 2018b)

cluster randomization 의 변종 — 각 cluster 가 특정 구조: ego (focal) + alters (인접).

6.0.0.1 절차
  1. graph 의 모든 ego (focal individual) 식별
  2. 각 ego 의 alters (immediate neighbors) 묶음
  3. ego 의 variant 배정 + alters 의 별도 variant 배정 (예: alters 모두 T, ego 절반 T)
  4. 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

Mechanism

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 단계 의 outlier 감시

ramp (Ch.15) 는 leakage 발견 의 1차 방어선:

8.0.0.1 단계
  1. employees (~100 명): 큰 functional bug 발견
  2. small datacenter (~10K user): infrastructure leakage (CPU·memory)
  3. MPR (1%): traffic 의 1% — interaction effect 시작
  4. 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 소진)
Alert System
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 실무 체크리스트

  1. 매개체 식별 (graph·자원·시간·사용자 unit)
  2. 매개체 에 맞는 isolation 1 차 선택
  3. variance 보강 (CUPED·paired t-test·stratification) 결합
  4. ramp 단계 마다 outlier 점검
  5. monitoring alert 자동화 (CPU, budget, training data)
  6. sample size 계산 시 isolation 의 variance 증가 미리 반영
  7. 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.”

Subscribe

Enjoy this blog? Get notified of new posts by email: