Cluster randomization в A/B-тестах
Содержание:
Что такое cluster randomization
Cluster randomization — дизайн A/B, где рандомизация происходит на уровне группы юзеров (кластера), а не отдельного юзера. Все юзеры внутри кластера попадают в одну и ту же ветку (treatment или control).
Кластер может быть: город, район, dark store, школа, компания, домохозяйство, friend-group.
В отличие от обычного A/B (где каждый юзер независимо случайно попадает в T или C), здесь кластеры — это единица рандомизации, и юзеры внутри кластера получают одинаковое treatment.
Когда нужна
1. Сетевые эффекты (network effects)
Юзеры влияют друг на друга — соцсети, мессенджеры, маркетплейсы. Если в одной семье/группе одни в T, другие в C — они «загрязняют» эксперимент.
Решение: рандомизировать friend-clusters, household-cluster, school-cluster.
2. Общие ресурсы (shared resources)
Несколько юзеров делят один ресурс. В Самокате — все юзеры района делят один dark store. В Uber — все юзеры зоны делят один pool водителей.
Решение: рандомизировать на уровне района / города / dark store.
3. Geo-experiments
Тестировать новый продукт сначала в одном городе. Города — кластеры.
4. Organizational decisions
Изменение интерфейса для всей компании-клиента. Кластер = компания (если B2B SaaS).
Дизайн cluster A/B
Базовый дизайн
- Определи кластер (район, dark store, школа)
- Случайно (50/50) назначь кластеры в T или C
- Внутри кластера — все юзеры получают одну версию
Москва — T (все юзеры Москвы в treatment)
Питер — C (все юзеры Питера в control)
Казань — T
Екатеринбург — C
...Stratified cluster randomization
Балансировка по характеристикам кластера. Если есть «большие» (Москва, Питер) и «маленькие» (регионы) — балансируем так, чтобы treatment и control имели похожее распределение размеров.
Switchback within cluster
Комбинация. В одном кластере фича включается-выключается во времени.
Формулы и размер выборки
Intraclass Correlation Coefficient (ICC)
Главная характеристика кластера — насколько юзеры внутри похожи друг на друга.
ICC = variance_between_clusters / (variance_between + variance_within)- ICC = 0 — юзеры в кластере независимы. Cluster randomization = обычный A/B.
- ICC = 1 — юзеры в кластере идентичны. Эффективная выборка = количество кластеров.
- Реально: ICC = 0.05-0.3.
Design Effect (DE)
Множитель к размеру выборки. Cluster randomization требует больше юзеров, чем обычный A/B.
DE = 1 + (m - 1) × ICCгде m — средний размер кластера.
Пример: ICC = 0.1, средний размер кластера 100 → DE = 1 + 99 × 0.1 = 10.9. То есть нужно в 11 раз больше юзеров, чем для A/B на индивидуальном уровне.
Эффективный размер выборки
n_effective = n_total / DEС Design Effect 11, если у тебя 1M юзеров — эффективно как 90K в обычном A/B. Это огромная потеря power.
Примеры на практике
Uber / Yandex Go
Зоны — кластеры. В одной зоне новый алгоритм dispatch, в другой — старый. Сравнить заказы / ETA / driver utilization.
Lavka / Самокат
Dark store или район как кластер. Тестировать новый алгоритм рекомендаций, не загрязняя соседние районы.
Reddit / Twitter
Cluster по subreddit / community. Не идеально из-за cross-community юзеров, но снижает spillover.
B2B SaaS (Wrike, Notion)
Кластер = компания-клиент. Тестировать новый UI для всех юзеров одной компании сразу.
Образование
Класс / школа = кластер. Тестировать новую методику для всех учеников одного класса.
Типичные ошибки
- Анализ как обычного A/B. Нужно учитывать correlation внутри кластера. Иначе p-value занижены, false positives растут.
- Слишком мало кластеров. 2 города (T и C) — нельзя считать статистически. Нужно ≥ 30-40 кластеров.
- Игнорировать heterogeneity кластеров. Москва и Усть-Кут — разные. Без stratification — bias.
- Слишком долгий период. Cluster A/B чаще требуют 4+ недели для устранения noise.
- Mixing treatment. Если юзер из T-кластера видит контент из C-кластера (cross-cluster contamination) — эффект size понижается.
Связанные темы
- A/B-тестирование на собесе
- Switchback-эксперименты
- Sample Ratio Mismatch (SRM)
- CUPED для снижения дисперсии
- A/B и causal inference на собесе DS
FAQ
Когда выбирать cluster randomization?
Когда есть сетевые эффекты или общие ресурсы. Если юзеры внутри кластера независимы — обычный A/B эффективнее.
Сколько кластеров минимум?
30-40 для базового статистического вывода. На меньшем числе нет достаточной power.
Можно ли cluster + switchback?
Да, и часто используется. Кластеры (геозоны) переключаются во времени.
Как анализировать cluster A/B?
Не как обычный t-test. Используй mixed-effects models, GEE, или агрегацию до кластера перед t-test.
Какие компании используют?
Yandex Go, Uber, Lavka, Самокат — везде где есть geo-зависимость. B2B SaaS на уровне организаций.