Журнал / польза

Как проводят A/B-тесты

Станислав Гафаров, тимлид Data Science в Uma.Tech и руководитель промоанализа в X5 Retail Group, рассказывает, как работают A/B-тесты — и почему их нельзя считать «волшебной таблеткой». Публикуем конспект выступления Станислава на митапе Expfest и Яндекс.Практикума

Где компания применяет A/B-тесты

С помощью A/B-тестирования:

— Экспериментально проверяют математические и статистические модели.

— Оптимизируют коммуникацию с пользователями, чтобы их не спамить.

— Делают офлайн-тесты рекомендательных моделей. Например, рассылают пользователям информацию о новом контенте, который их может заинтересовать.

— Проводят онлайн-тесты рекомендательных моделей.

В чём особенность офлайновых A/B-тестов

— У каждой компании есть своя специфика, от которой зависит работа с тестами:

— Когда нет истории, эксперименты проводят с нуля — к ним возвращаются позже и смотрят на результаты.

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

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

— Проводят эксперименты, которые приурочены к выходу конкретного контента.

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

Какие проблемы возникают при A/B-тестировании

Есть три основные проблемы, с которыми сталкиваются при проведении тестов.

Проблема объединения, или парадокс Симпсона

Для эксперимента группы пользователей объединяют в одну, чтобы посчитать статистику или нарисовать тренд.

Представим, что есть величина радости пользователей по оси Y и есть какой-то показатель, на который влияют, по X. Чем больше его меняют, тем выше радость пользователя. Но бывают случаи, когда какую-то величину изменяют, а тренд, который нарисовали для всей группы пользователей, получается противоположным или исчезает при объединении. Так можно получить ложные выводы по эксперименту. Это называется парадоксом Симпсона.

Что это значит для специалиста, который проводит эксперимент: объединяя людей в определённые группы, он может потерять тренд и реализовать нововведение, которое уведёт часть пользователей, а других оставит без изменений. Кому-то из пользователей понравится нововведение, а кому-то — нет.

Метрики и их чувствительность

Чувствительность — свойство метрики окрашиваться.

Особенности per-user- и Ratio-метрик:

— Per-user-метрика — человек не смотрел контент, но начал смотреть.

— Ratio-метрика — к ней можно отнести среднее время пользователя на сервисе за неделю. Эта величина для всех людей разная: кто-то постоянно смотрит контент в течение дня, а кто-то заходит по вечерам на полчаса.

Проблема — проводить эксперименты так, чтобы метрики быстро окрашивались. К счастью, тесты можно «ускорять», в том числе с помощью линеарных методов.

Волатильность метрик

Метрики, на которые смотрят во время тестирования, не всегда стационарны: они могут меняться. Поэтому перед экспериментом важно убедиться, что показателям можно доверять.

Для этого проводят A/A-тест — он показывает, что выбранная для эксперимента метрика не меняется, если на неё не воздействовать. Но для него нужна история, его делают перед A/B-тестом. А история есть не всегда. Поэтому можно провести A/A/B-тест.

По какому алгоритму проходит тестирование

Компания использует стандартный алгоритм для A/B-тестов. В него входит пять основных этапов:

1. Определить гипотезу для проверки и выбрать метрики и критерии, на которые нужно смотреть.

2. Тщательно подобрать группу пользователей.

3. Провести эксперимент.

4. Оценить результаты через пару недель.

При этом можно проверить нормальность распределения с помощью критерия Шапиро — Уилка, провести T-тесты и U-тесты, чтобы понять, что нулевая гипотеза отличается от альтернативной. Также важно определить, как сильно изменилась та или иная метрика в группах.

5. Подробно задокументировать эксперимент.

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

Как проводить тест

Для эксперимента возьмём две группы:

1. Тёмно-синяя — с целевым воздействием, например есть коммуникация с пользователями.

2. Голубая — без целевого воздействия, нет коммуникации с пользователями.

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

Предполагаем:

— А, С, E — группы, которым модель машинного обучения предсказала 1.

— B, D, F — группы, которым модель машинного обучения предсказала 0.

Можем оценить эффект модели с помощью сравнения двух групп.

EF — группа, которая не получала коммуникацию. Допустим, что в ней качество будет такое же, как и в модели машинного обучения.

Если сравнивать АВ-группы, тоже можем измерить качество, но при условии, что была коммуникация с пользователями. Иногда это качество растёт, иногда падает. Но здесь нужно понимать, что есть коммуникация с пользователями — она влияет на качество модели и эксперимент.

Сравнивая группы АС и DF, можно провести А/А-тесты. Важно понимать, что выбранная метрика не волатильна, она стационарна и ей можно доверять.

После сравнения всех групп можно сказать, удалась коммуникация или нет. При этом группу АВС придётся взвесить заново из-за смещений. Их нужно устранить за счёт того, что мы объединяем данные в некоторую генеральную совокупность.

В чём специфика онлайновых A/B-тестов

В результате проведения онлайн-тестов на своих продуктах в Uma.Tech появился собственный сервис для экспериментов. Чтобы его разработать, специалисты компании опирались на общеизвестные данные и опыт коллег.

Например, «бакетный» подход «Авито» в расчёте метрик. Для per-user-метрик они объединяют людей в группы и считают эти метрики на них. При этом смещение среднего получается незначительным или его нет совсем. Такой подход может ускорить A/B-тест, особенно онлайн. Также он позволил бы проще выводить новые функции в продакшен.