Частые вопросы

Как работает распределение пользователей при тестировании в мобильном приложении?
В сервисе реализовано ручное и автоматическое распределение трафика по вариантам теста.

Ручное (классическое) распределение позволяет запускать тесты, указав распределение трафика по вариантам самостоятельно. Например, 50/50, 70/30. Используется, когда важно контролировать долю аудитории, на которой тестируется новый функционал. Это классические сплит-тесты или A/B-тесты.

Автоматическое распределение выбирает вариант теста, который показывает бóльшую эффективность, и отдаёт ему больше трафика в процессе проведения эксперимента, не дожидаясь его окончания. В результате мы получаем больше конверсий за время эксперимента. Это позволяет сэкономить время и заработать больше, чем при классическом A/B-тестировании. В основе этого распределения методы байесовской статистики и алгоритм Thompson Sampling.
В чём отличие автоматического и ручного распределения при A/B тестировании?
При классическом A/B-тестировании пользователей делят на группы, каждой показывается свой вариант. Спустя некоторое время результат оценивают по изначально выбранной метрике — например, по конверсии в покупку. Распределение трафика между вариантами не меняется на протяжении всего теста.

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

Например, вы тестируете экраны подписки в приложении. Ключевой метрикой выбрали конверсию в покупку. У вас 4 варианта пейволлов, все пользователи распределены поровну на 4 группы.

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

Нужные метрики и Revenue алгоритм собирает сам — есть интеграция с Amplitude. Неудачные варианты при таких тестах показываются пользователям меньше времени, издержки на проведение теста уменьшаются.
Как автоматическое распределение позволяет быстрее зарабатывать деньги?
Для клиента из дейтинг-вертикали мы проводили A/B-тест экранов подписки. Использовали ручное распределение трафика. Получили результаты, применили самый эффективный экран подписки.

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

Результат:  
  • Идеальный вариант: 1070 (100%). Столько покупок мы могли получить, если бы сразу угадали самый эффективный экран подписки и применили его без тестов.
  • Исторически получили: 745 покупок (69%). Столько покупок мы получили благодаря ручному распределению.
  • Алгоритм Томпсона: 935 (87%). Столько покупок принёс бы алгоритм автоматического распределения.

Оказалось, что алгоритм справился бы с задачей лучше. По результатам теста победил бы тот же самый вариант, что и при ручном распределении. Но за те же деньги на его проведение клиент мог получить больше покупок и меньший CAC. Если оценивать в деньгах, за 5 дней проект недозаработал около $7500 по когорте юзеров.

Подробнее об эксперименте можно прочитать в кейсе: Как мы потеряли $7500 на A/B-тестах мобильного приложения, но научились их проводить
Зачем нужно сегментировать трафик при проведении A/B-тестов?
Пользователи из разных источников, ГЕО, девайсов могут вести себя в приложении по-разному.

Пример из нашего опыта: для одного из клиентов закупали трафик в приложение из Facebook и Snapchat. Тест показал, что кампании на Facebook лучше оптимизровались на оформление триалов, а из Snapchat приходили крупные in-app покупки.

Поэтому при проведении A/B-теста нужно учитывать особенности User Acquisition и сегментировать трафик. Наш инструмент позволяет сегментировать трафик в разрезе источников, гео, устройств, операционных систем и других параметров при A/B тестировании
Кому подходит сервис A/B-тестирования?
  • Тем, кто постоянно проверяет новые гипотезы, и хочет автоматизировать процесс их проверки;
  • Тем, кто принимает обоснованные решения о продукте на основе данных статистики;
  • Тем, кто хочет уменьшить затраты на проверку гипотез и ускорить этот процесс.
Какова механика распределения аудитории при автоматическом распределении трафика?
Основываясь на текущем значении метрик по вариантам теста, мы считаем вероятности превосходства (вероятность победить) для каждого и распределяем аудиторию согласно этим вероятностям. Например, через 1 час после начала эксперимента вероятность превосходства тестового варианта составляет 55% против 45% для контрольного. Следовательно в следующий момент времени 55% юзеров получат тестовый вариант, а 45% - контрольный.
С точки зрения статистики: на основании какого статистического критерия определяются размеры выборки, длительность эксперимента и победителя - для классических АБ-тестов и для автоматического распределения аудитории?
Размер выборки определяется по-разному в зависимости от метрики. Для конверсии используется z-тест для пропорций, а для ARPU - тест Стьюдента. Длительность теста зависит от того, насколько важным для продукта является календарный фактор, чтобы учесть эффект будних дней, выходных и праздников. 
Победителя в случае классических тестов определяем на основании статистических критериев: z-тест для пропорцийтест Стьюдентатест Манна-Уитни-Уилкоксонабутстрапа. Обращаем внимание, что в этом случае мы должны четко зафиксировать, в какой момент теста мы должны завершить эксперимент и применить конкретный критерий, иначе можем совершить ошибку подглядывания.
В случае Байесовских тестов победителя определяем на основании вероятностей превосходствадостоверных интерваловожидаемых потерь и размера эффекта
Почему при байесовских алгоритмах нужно меньше аудитории, чтобы получить достоверные результаты?
Байесовская статистика позволяет нам мыслить в терминах вероятности распределения наших средних. В этом случае мы можем вычислить с какой вероятностью целевая метрика примет то или иное значение (в случае классических тестов мы вычисляем метрику лишь однажды). Из-за этого мы можем принимать решение раньше и при меньшем числе юзеров.
В чем именно суть многорукого бандита?
Многорукий бандит распределяет трафик в ходе эксперимента в зависимости от результатов, полученных на предыдущих шагах. Алгоритм начинает отдавать лучшему варианту больше трафика, увеличивая суммарный выигрыш за время всего эксперимента по сравнению с классическими тестами, где распределение всегда поровну.
Почему алгоритмы, работающие с оптимизацией под ивенты, не работают с оптимизацией под финансовые показатели?
Алгоритм Томпсона, который мы используем для многоруких бандитов, предполагает только два значения - 0 (отсутствие ивента) и 1 (ивент совершен). Если же диапазон возможных значений метрики выходит за эти пределы, у нас нет гарантий, что алгоритм сойдется и мы правильно определим победителя.
В чем разница между классическим подходом к АБ-тестированию и байесовскими методами?
В классических тестах для определения победителя мы используем частотный статистический подход:
- собираются данные
- фиксируются ошибка 1 рода, мощность теста (100% - ошибка 2 рода)
- при выполнении определенных предпосылок вычисляется статистика теста, которая является случайной величиной с известным распределением (может быть разной в зависимости от распределения целевой метрики)
- при фиксированных ошибках 1,2 рода делается вывод о статистически значимом различии между вариантами теста
Основные проблемы, возникающие при АБ-тестировании с использованием частотного подхода:
множественное тестирование
ошибка подглядывания
- игнорирование предпосылок тестов
- трудно интерпретируемый показатель p-value

Байесовские тесты основаны на применении вероятностного подхода к вычислению наших метрик. В отличие от частотного подхода, мы вычисляем распределение не просто статистики теста, а самой метрики. 
Основные преимущества по сравнению с частотным подходом
- лучше интерпретируется
- отсутствие проблемы множественного тестирования
- можно осторожно прерывать тест (подглядывать)
- позволяет быстрее получить результат