Привет, на связи Аслан Байрамкулов, автор курса по A/B-тестированию 👋🏻
На заре своей карьеры в A/B я столкнулся со следующей ситуацией. Мы упёрлись в потолок, тесты шли по 3 недели, очередь росла. И как сказал в старом интервью Олег Дерипаска: «Так больше продолжаться не может». Вот как мы вышли из данной ситуации.
Кейс: тестируем новую логику ранжирования в каталоге.
Основная метрика: revenue per user.
PM хочет результат через неделю. Классический дизайн эксперимента требовал от нас эксперимента с длительностью 21 день, но у нас просто не хватало трафика для достижения того же результата по надёжности оценки эффекта за 1 неделю, как этого хотел бизнес.
PM расстроен, мы тоже, потому что параллельно в очереди ещё 4 эксперимента, и каждый будет стоять по 3 недели. Но всё равно как-то надо придумывать решение данной проблемы.
В нашем случае revenue per user — метрика с довольно большой дисперсией. Есть пользователи с чеком 100 ₽, а есть с чеком 80 000 ₽. Эта естественная вариативность «забивает» сигнал от нашего воздействия. Мы ищем разницу в 3%, а шум — в разы больше.
И нам на помощь пришел CUPED.
Идея простая. У каждого пользователя есть исторические данные до эксперимента — его пре-экспериментальная выручка. Тот, кто тратил много до теста, скорее всего будет тратить много и во время теста. Эта предсказуемая часть — шум, а не эффект нашей фичи.
CUPED вычитает эту предсказуемую часть из метрики. Формально:
Ŷ_cuped = Y − θ · (X − X̄)
где X — пре-экспериментальный revenue, θ — коэффициент, минимизирующий дисперсию.
В результате мы буквально вдвое сократили время эксперимента, не меняя ни трафик, ни дизайн, ни метрику. Просто умнее использовали данные, которые уже у нас были.
Где CUPED не поможет
Справедливости ради отмечу, что метод не волшебный. Если корреляция данных в пред- и пост-периодах слабая, то выигрыш будет минимальным. Например, для метрики «совершил ли пользователь первую покупку» предэкспериментальных данных просто нет. Для новых пользователей — тоже. Поэтому CUPED отлично работает в ситуациях с высокой корреляцией данных до/после эксперимента и на уже активных/существующих объектах, но плохо на всякого рода регистрациях и первых действиях.
Что это дало нам: пропускная способность экспериментов выросла почти вдвое. Раньше за квартал мы прогоняли 4-5 тестов последовательно. После внедрения CUPED — 8-9. Это не просто ускорение одного теста — это кумулятивный эффект на скорость принятия решений во всём продукте.
В курсе по A/B-тестам мы не только разбираем математику CUPED, но и пишем весь необходимый код на Python, который можно подключить к своему пайплайну для решения ваших задач. Плюс разбираем случаи, когда CUPED не помогает.
🔥 Записывайтесь уже сейчас: simulative.ru/ab-test
📈 Симулейтив | ВК | YouTube