Switchback-эксперименты: когда A/B не работает
Содержание:
Что такое switchback-эксперимент
Switchback — это дизайн эксперимента, где фича включается и выключается во времени для всей аудитории (а не для отдельных юзеров). Сравнивают периоды с фичей и без, контролируя время суток / день недели / сезонность.
Это альтернатива классическому A/B, когда юзеров нельзя разделить на контрольную и тестовую группы без cross-contamination — например, из-за сетевых эффектов или общего ресурса (одна и та же цена для всех).
В отличие от A/B, где юнит — юзер, в switchback юнит — это time × geo unit (например, «Москва с 14:00 до 16:00»). Внутри юнита фича либо включена для всех, либо выключена.
Когда классический A/B не работает
Классический A/B предполагает, что юзер в треатменте не влияет на юзера в контроле (SUTVA — Stable Unit Treatment Value Assumption). Это нарушается в:
Маркетплейсы и agg / on-demand (Uber, Wolt, Lavka). Если в тесте показываешь меньшую цену для одних — водителей становится меньше на улице → контрольная группа тоже ждёт дольше.
Соцсети. Если изменяешь алгоритм ленты для одних — они меняют поведение (постят / лайкают), это меняет ленту для других (включая контроль).
Аукционы рекламы. Изменение алгоритма bidding влияет на equilibrium → контроль тоже под воздействием.
Динамическое ценообразование. Одна цена для всех. A/B на цене невозможен.
Подробнее — сетевые эффекты в A/B.
Дизайн switchback
Базовый switchback
- Делим время на window-ы (например, 2 часа)
- В каждом window — либо treatment, либо control (случайно)
- Считаем средние метрики за window-ы treatment vs control
14:00-16:00 — T (treatment)
16:00-18:00 — C (control)
18:00-20:00 — T
20:00-22:00 — C
22:00-00:00 — TGeo-switchback
Дополнительно к времени — разные регионы. В Москве сегодня T, в Питере — C. Завтра наоборот. Это удваивает выборку.
Stratified switchback
Учитываем характеристики window-а: weekday vs weekend, утро vs вечер. Балансируем распределение treatment по этим стратам.
Формулы и анализ
В отличие от A/B по юзерам, в switchback юнит — это window. Размер выборки = количество window-ов.
Простейший анализ:
mean_treatment - mean_control
с доверительным интервалом по t-testПроблема: соседние window-ы не независимы. Юзер, который сделал заказ в 16:00 (T), мог бы сделать его в 16:30 (T) или в 17:00 (C) — переход между window-ами размывает эффект.
Решения:
- Длинные window-ы (несколько часов) — снижает spill-over между ними
- Buffer-окно между treatment и control (например, 15 минут не анализируем)
- Регрессия с time fixed effects
Размер выборки
В отличие от A/B (где выборка = юзеры), в switchback нужно много window-ов. Обычно:
- Длительность одного window: 1-4 часа
- Длительность эксперимента: 2-8 недель
- Количество window-ов: сотни до тысяч
Если эффект 5%, baseline вариативность высокая — может потребоваться 6+ месяцев. Это главный минус switchback.
Где используется
On-demand сервисы. Uber, Yandex Go, Lavka, Самокат. Изменения алгоритма распределения заказов / ценообразования.
Маркетплейсы. Изменение алгоритма ранжирования / pricing.
Реклама. Изменения bidding-алгоритма.
Соцсети. Изменения алгоритма ленты с сильным network effect.
Логистика. Изменения в маршрутизации.
Типичные ошибки
- Короткие window-ы. При 15-минутных window-ах spill-over между ними почти 100%. Минимум — 1-2 часа.
- Игнорировать буферы. Без buffer-окна между T и C эффект мерится с искажением.
- Анализ как A/B. Switchback требует учёта временной корреляции. Простой t-test даёт фальшивые p-value.
- Игнорировать сезонность. Понедельник vs суббота — разное поведение. Балансировка обязательна.
- Слишком короткий эксперимент. Меньше 2 недель — обычно не показателен. Сезонность ломает.
Связанные темы
- A/B-тестирование на собесе
- A/B-тесты для PM с нуля
- Размер выборки A/B
- CUPED для снижения дисперсии
- A/B и causal inference
FAQ
Когда выбирать switchback вместо A/B?
Когда есть сетевые эффекты, общий ресурс или динамическое ценообразование. Если юзеры в T влияют на юзеров в C — switchback.
Сколько длится switchback?
Минимум 2-4 недели. Чаще 6-12 недель. Это медленный метод.
Можно ли комбинировать switchback с A/B?
Да. Например, geo-switchback (отдельные города как T/C) с регрессией внутри для дополнительной фильтрации.
Что такое spillover в switchback?
Когда treatment в одном window-е влияет на метрики в следующем (control) window-е. Например, водитель прибыл в зону благодаря T-алгоритму, остался работать в C-периоде.
Какие инструменты используются?
В большинстве компаний — custom infrastructure. Open-source: Microsoft EconML, Uber CausalML.