728x90
반응형
DoorDash Dispatch 팀에서 하는 일
- dasher가 적절한 배달을 하는 것
- 예측 (언제 픽업, 도착 할지) -> time estimation
- 묶음 배송 -> stacking
- 가격 변화와 함께, 수요공급 균형을 위한 전략 수립 -> dynamic pricing
실험과 시뮬레이션은 위 문제들을 해결하는데 중요함
그러나, 이는 offline에서의 AB Test에선 가능했으나, online에선 network effect로 인해 한계가 있음
예시. SOS pricing
- 설명 : 수요 폭발 시 배달 수수료 인상으로, 수요 공급 조절 (리텐션, 배달 시간)
- 실험 방법
- A/B Test : 고객(혹은 배달 건) 분류이므로 서로 영향 받음. 통제군과 실험군이 완전히 독립적이라 볼 수 없음 (=spillover effect)
- pre-post (before-after) test : release 전후 비교. 외부 요인은 통제하지 못함 (날씨, 휴일 등)
- switchback testing : 시간단위(30분)로 지역별로 통제군과 실험군을 교체하여 테스트. 각 시간/지역 단위로 variant 랜덤하게 선택. “시간-지역 유닛”

switchback testing 실험
- 기능
- 모든 실험에 대한 메타데이터 저장 (Metadata) : 1. window 시작 시간 (시간 단위 선정 중요함) 2. 지역 3. 시간-지역의 고유 식별값
- 특정 시점에 사용할 알고리즘 선택 (Bucketing)
- 지표 계산 및 분석을 위한 추적 처리 (Tracking)
- Flow
- switchback window 선정 : 시간 단위 조정
- registration : window 종료 시점에, 상태를 점검하고 업데이트
- GetBucket : 실험시스템에 요청한 버킷값을 가져와서, tracking events(메타데이터 정보)를 pipeline에 보냄
- 분석 방식
- “시간-지역 유닛”별 평균 → 실험군과 통제군의 평균계산 (T-Test 검정)
- 배달이 많은 유닛과 아닌 유닛에 따라 평균 수렴 안 할 수 있음
- 따라서, multi-level modeling (MLM, 계층 모델링) 으로 통계 검정의 오차 범위를 줄일 수 있음
- “시간-지역 유닛”별 평균 → 실험군과 통제군의 평균계산 (T-Test 검정)
-
- A/B Test는 그룹간 독립을 가정하는데, switchback test는 유닛이 다음 유닛에 영향을 끼치기 때문에, 독립성 가정이 위배 될 수 있음 → sandwich estimator of variance
- 고려사항
- bias : 시간-지역 유닛이 랜덤화 안 될 때 발생
- 매장-고객 거리가 긴 배달들이이 특정 알고리즘에 많이 배정되는 경우
- 지역이 너무 작거나
- switch가 빈번히 발생하거나
- margin of error (오차한계) : 불확실성이 얼마나 있는지 (요인 : natural variation, 유닛 수)
- 시간-지역 유닛이 쪼개질수록 분산은 커지지만, 유닛 수는 많으므로 불확실성은 낮출 수 있음
- 시간-지역 유닛이 쪼개질수록 분산은 커지지만, 유닛 수는 많으므로 불확실성은 낮출 수 있음
- 즉, 유닛이 작으면 편향이 발생하고, 유닛이 크면 오차 한계 크고 소요 시간도 김.
- ‘시간-지역 유닛’ : 30분 시간 단위, city level의 지역
- bias : 시간-지역 유닛이 랜덤화 안 될 때 발생
- 제품 출시 후, switchback test window로 관찰. 실험 결과에 대한 방향 확인
Referece : Switchback Tests and Randomized Experimentation Under Network Effects at DoorDash
728x90
반응형
'그녀의 일' 카테고리의 다른 글
T-Test 검정 | 일표본T검정, 독립표본T검정, 대응표본T검정 (Python) (0) | 2023.04.07 |
---|---|
기초 통계 용어 정리 | 귀무가설, 대립가설, 유의수준, p-value (0) | 2023.04.07 |
Apach Kafka 란? | producer, consumer, topic, partition 용어 설명 (0) | 2023.03.16 |
머신러닝 프로세스 한 번에 처리하기 | Pipeline, make_pipeline (0) | 2023.03.09 |
모델의 최적의 하이퍼 파라미터 찾기 | Hyperparameter tuning - GridSearchCV, RandomizedSearchCV (0) | 2023.03.09 |