Оцените ситуацию: вариант A/B назначается заново при каждой сессии, но эффект считают на уровне пользовател...

Оцените ситуацию: вариант A/B назначается заново при каждой сессии, но эффект считают на уровне пользователя. Какой основной риск возникает?

Проходите собеседования с ИИ помощником Hintsage

Краткий ответ

Основной риск — смешение воздействий: один пользователь может увидеть оба варианта, поэтому его итоговое поведение нельзя однозначно связать с одним из них. Особенно опасен carryover-эффект, когда предыдущий вариант влияет на реакцию пользователя в следующей сессии.

Такой эксперимент оценивает не чистый эффект варианта на пользователя, а смесь эффектов последовательности показов, числа сессий и индивидуальной активности. Чтобы получить интерпретируемый пользовательский эффект, вариант обычно закрепляют за пользователем на весь эксперимент.

Исторический контекст

В классических A/B-тестах единицей рандомизации часто делают пользователя: после назначения он стабильно видит один вариант. Такой подход появился как практическое решение проблемы, при которой повторные контакты с разными версиями продукта меняют последующее поведение и затрудняют причинную интерпретацию.

Закрепление варианта также упрощает расчёт пользовательских метрик: у каждого пользователя есть одно воздействие, с которым можно сравнивать его результат. Это не универсальное правило, но надёжная базовая схема для изменений, эффект которых сохраняется между сессиями.

Постановка проблемы

При рандомизации на уровне сессии пользователь может получить, например, A в первой сессии и B во второй. Если после этого сравнить пользователей по их суммарной выручке или удержанию, группа B будет включать людей с разной историей предыдущих воздействий.

Возникают несколько рисков:

  • перенос эффекта предыдущего варианта на последующие сессии;
  • разное число сессий и показов вариантов у пользователей;
  • несоответствие между единицей рандомизации и единицей анализа;
  • заниженные стандартные ошибки, если повторные сессии ошибочно считать независимыми наблюдениями.

В результате направление эффекта может быть искажено, а доверительные интервалы — стать неоправданно узкими. Даже при идеальном техническом распределении сессий такой тест может отвечать не на вопрос «каков эффект варианта на пользователя», а на другой вопрос — «каков эффект показа варианта в отдельной сессии при данной истории пользователя».

Подробное решение

Сначала нужно определить единицу воздействия, единицу анализа и целевой эффект. Если решение влияет только на текущую сессию, не меняет последующее поведение и метрика также сессионная, рандомизация по сессиям может быть допустима. Но пользовательские retention, LTV, количество покупок и долгосрочная выручка обычно зависят от всей истории взаимодействия.

Для таких метрик вариант следует закреплять за пользователем на заданный период. Анализ проводят по пользователям, а не по строкам событий или сессиям. Если один пользователь всё же мог увидеть оба варианта, нужно отдельно измерить долю таких пользователей, исключить их только по заранее определённому правилу либо использовать дизайн с явным учётом последовательности воздействий.

Простое исключение пользователей, увидевших оба варианта, не всегда безопасно: принадлежность к этой подгруппе может зависеть от поведения после начала эксперимента. Это создаёт отбор и нарушает исходную случайность. Надёжнее исправить схему назначения, повторить эксперимент или заранее применять анализ, соответствующий смешанному дизайну.

Закрепление варианта уменьшает риск загрязнения, но имеет компромисс: пользовательская рандомизация может медленнее набирать независимые наблюдения, особенно при низкой частоте активности. Рандомизация по сессиям иногда даёт больше строк, однако это не заменяет независимых пользователей и не решает проблему переноса эффекта.

Ситуация из практики

Команда тестировала новый экран оплаты. Вариант назначали при каждой сессии, а через две недели сравнили выручку на пользователя. Активные пользователи часто видели оба экрана; после первого показа они могли изменить способ оплаты, запомнить элементы интерфейса или начать возвращаться только к привычному варианту.

Рассматривались три решения. Оставить рандомизацию по сессиям было быстро, но сохраняло смешение воздействий. Исключить всех пользователей с несколькими вариантами было проще для анализа, однако это могло убрать наиболее активных пользователей и создать смещение. Переназначить вариант на уровне пользователя требовало повторного запуска, зато обеспечивало однозначную историю воздействия.

Выбрали третий вариант, потому что целевая метрика была долгосрочной — выручка на пользователя за период. После повторного теста эффект оценивали по закреплённым группам и отдельно проверили корректность распределения. Результат оказался меньше первоначального сессионного эффекта, что показало: ранняя оценка частично отражала реакцию на смешанную последовательность экранов, а не устойчивое улучшение продукта.

Что кандидаты часто упускают

  1. Всегда ли рандомизация по сессиям является ошибкой?

Нет. Она может быть корректной, если оценивается сессионный эффект, варианты не оставляют последействия, а анализ учитывает зависимость нескольких сессий одного пользователя. Например, для краткоживущего изменения, которое влияет только на текущий запрос, сессионная единица может соответствовать целевой единице принятия решения.

Но это должно быть осознанное определение эффекта, а не способ получить больше строк в отчёте. Если бизнес-решение принимается по пользователям, пользовательской выручке или удержанию, сессионный дизайн требует дополнительного обоснования.

  1. Почему кластеризация стандартных ошибок не устраняет проблему полностью?

Кластеризация по пользователю учитывает зависимость его сессий и может исправить часть ошибки в оценке неопределённости. Однако она не удаляет carryover-эффект: поведение в сессии с вариантом B всё равно может зависеть от ранее увиденного A.

Таким образом, корректные стандартные ошибки не превращают смешанные воздействия в чистое сравнение вариантов. Они решают статистическую проблему зависимости наблюдений, но не проблему неверно заданного причинного эксперимента.

  1. Что делать, если пользователь увидел оба варианта из-за технической ошибки?

Сначала нужно определить масштаб и механизм ошибки. Следует проверить долю таких пользователей по группам, временную последовательность показов и связь ошибки с активностью или ключевыми метриками.

Основным обычно оставляют анализ по первоначальному назначению, если нарушение невелико и не связано с группой или поведением; это сохраняет преимущество рандомизации. При существенном загрязнении нужно отдельно показать его влияние, не выдавать анализ только «чистых» пользователей за основной без предварительного правила и, при необходимости, повторить эксперимент после исправления назначения.