Дизайн эксперимента и рандомизация: вопросы для собеседования (часть 4)
Выбор единицы рандомизации (user_id, session_id, device_id), устойчивый bucketing, split-трафик — ошибки на этапе дизайна эксперимента невозможно исправить при анализе. На собеседовании просят объяснить, почему нельзя рандомизировать по сессии, если метрика считается на уровне пользователя. Эти вопросы отделяют тех, кто «запускал тесты», от тех, кто понимает, как они работают.
Вопросы 16–20 из 20
16Вы тестируете новый алгоритм рекомендаций для части пользователей. В тестовой группе товар распродаётся быстрее, из-за чего пользователи из контрольной группы чаще видят сообщение «Нет в наличии». Как лучше всего описать эту проблему?
AЭто `SRM`: итоговое распределение пользователей по группам отклонилось от ожидаемого 50/50, поэтому эффект искажён.
BЭто обычный шум при ограниченной выборке, который скорее всего сгладится, если просто продлить тест на более долгий срок.
CЭто сбой `hash()`-функции при разбиении: пользователи попали не в свои группы, а исчерпание инвентаря тут ни при чём.
DЭто нарушение `SUTVA` и взаимовлияние групп через общий инвентарь: исход в контроле зависит от назначения в тест.
Ответ: Когда поведение одной группы влияет на ресурсы другой, нарушается допущение `SUTVA` и эффект чистого варианта оценить нельзя.
`SUTVA` (Stable Unit Treatment Value Assumption) предполагает, что исход у каждого пользователя зависит только от его собственного назначения. Если в тестовой группе быстрее распродаётся товар, контролю достаются худшие позиции — на исход контрольной группы напрямую повлияло то, что произошло в тесте. Это не `SRM` (там перекошены доли пользователей по группам), не «обычный шум» и не баг хеша: это структурное взаимовлияние через общий инвентарь, которое лечится изоляцией ресурсов между группами или специальными дизайнами эксперимента.
Подробный разбор → 17Вы хотите сегментировать результаты по VIP, где VIP — пользователи с покупками за последние 30 дней. Но тест влияет на покупки, поэтому VIP-статус может измениться из-за самого теста. Как поступить, если цель — честная сегментация эффекта?
AПересчитывать VIP каждый день уже во время теста, чтобы сегмент был максимально актуальным
BСчитать VIP только в тестовой группе, а контрольную оставить без сегментации для упрощения сравнения
CЗафиксировать VIP по данным до старта эксперимента и держать сегмент неизменным весь период теста
DНе сегментировать вообще, потому что любые сегменты делают анализ результатов теста некорректным
Ответ: Сегменты должны определяться по данным до назначения варианта, иначе появляется смещение из-за разбиения по результату эксперимента.
Если VIP-статус меняется под влиянием теста, сегментация превращается в сравнение групп, частично определённых самим эффектом эксперимента. Это даёт смещение, и выводы про VIP становятся некорректными. Практичный подход — определить сегмент по данным до назначения и держать его неизменным на весь период теста. Тогда вопрос становится корректным: как эффект отличается для заранее известных VIP и не-VIP.
Подробный разбор → 18Маркетплейс: тест меняет ранжирование для покупателей в тестовой группе, что увеличивает показы и продажи некоторых продавцов. Эти продавцы затем меняют цену или наличие, и это влияет на покупателей из контрольной группы. Какой вывод наиболее корректен?
AЭто чистый эффект, `SUTVA` выполнено, потому что рандомизация по `user_id` корректна и группы покупателей разделены случайно
BЭто `SRM` (Sample Ratio Mismatch): продавцы меняют цены, а значит группы покупателей стали неравными по составу
CЭто интерференция между сторонами рынка: возможно, потребуется другая единица рандомизации или дизайн, учитывающий двусторонние перетоки
DДостаточно увеличить выборку и продлить эксперимент: при большем объёме данных взаимное влияние сторон рынка нивелируется само собой
Ответ: На двусторонних рынках часто нарушается `SUTVA`, потому что воздействие на одну сторону меняет среду для другой.
Даже при корректной разбивке по `user_id` изменения у покупателей могут менять стимулы и поведение продавцов. Эти изменения затем возвращаются в виде другой среды и для пользователей из контрольной группы, создавая перетоки эффекта. В такой ситуации простое сравнение групп может не отражать изолированный эффект и требует осторожной интерпретации. Возможны альтернативы: рандомизация по рынку, категории или времени, а также дизайны, которые явно учитывают взаимодействие сторон. Главное — заранее признать риск интерференции и выбирать дизайн под структуру системы.
Подробный разбор → 19Есть два фактора: новый дизайн карточки и новая логика рекомендаций. Команда хочет запустить два эксперимента одновременно на одной аудитории. В каком случае разумно выбрать факторный дизайн `2x2` вместо взаимного исключения аудиторий?
AВ любой ситуации: факторный дизайн `2x2` строго превосходит другие варианты запуска
BТолько при непересекающихся аудиториях: иначе результаты обоих экспериментов искажаются
CТолько если разделить пользователей на сегменты по идентификатору технически невозможно
DКогда важно оценить взаимодействие факторов и есть мощность на все 4 комбинации
Ответ: Факторный дизайн полезен, если вы сознательно допускаете пересечение и хотите оценить не только главные эффекты, но и взаимодействие.
В дизайне `2x2` вы получаете четыре группы и можете оценить как эффект каждого фактора по отдельности, так и их взаимодействие. Это удобно, если изменения потенциально влияют друг на друга и важно это измерить. Однако каждая ячейка получает меньшую долю трафика, поэтому требуется больше времени или большая аудитория для достаточной точности. Если взаимодействие не интересует — проще и безопаснее запускать эксперименты со взаимным исключением аудиторий.
Подробный разбор → 20Два независимых эксперимента одновременно меняют одну и ту же страницу оформления заказа, оба рандомизируются по `user_id`. Аудитории пересекаются. Какое решение лучше всего, чтобы интерпретация результатов была надёжной?
AЗапустить оба эксперимента и интерпретировать каждый отдельно, считая взаимодействие пренебрежимо малым в среднем по выборке.
BИспользовать взаимоисключающие слои разбивки или заранее планировать факторный дизайн `2x2` с явным учётом взаимодействий.
CПерейти на рандомизацию по `session_id` вместо `user_id`, тогда пересечения аудиторий перестанут влиять на сравнение.
DОстановить один из экспериментов и перенести его на спокойный участок воронки, где аудитории заведомо не пересекаются.
Ответ: Если эксперименты делят одну страницу, нужны взаимоисключающие слои или явный факторный дизайн с учётом взаимодействий.
Когда два теста меняют одну и ту же поверхность и аудитории пересекаются, эффект каждого зависит от того, в какой комбинации варианты увидел пользователь. Чтобы этого избежать, проектируют слои так, чтобы пользователь попадал ровно в один эксперимент, либо строят факторный дизайн `2x2`, где явно оцениваются и основные эффекты, и взаимодействие. Простая «параллельная» интерпретация теряет точность, потому что эффекты переплетаются. Замена единицы рандомизации на сессию пересечения не убирает: те же пользователи продолжают переключаться между вариантами.
Подробный разбор →