A/B-эксперименты: как запустить и читать отчет
A/B-эксперимент в Ibiza делит трафик выбранных кампаний на руки: контрольная работает как обычно, тестовые включают новую логику выбора креатива или ставки на основе предсказанного CTR. Платформа сама назначает руки, помечает ими показы, клики и конверсии и строит отчет со статистикой: лифт, доверительный интервал, always-valid p и проверку корректности разбиения. Как это устроено в теории — в статье про A/B-тесты в рекламе.
Важно. Раздел «Эксперименты» доступен администратору платформы: эксперимент делит трафик кампаний разных рабочих пространств. Если раздела нет в меню, обратитесь к менеджеру.
Что можно тестировать
| Фича в интерфейсе | Контроль | Тестовая рука | Параметры тестовой руки |
|---|---|---|---|
«Креатив по CTR» (creative_ctr) |
Выбор креатива внутри кампании по ставке, как сейчас | Креатив выбирается с учетом предсказанного CTR. Доля кампании в аукционе и цены не меняются | alpha, min_weight_frac |
«Ставка по CTR» (bid_ctr) |
Ставка кампании без коэффициента | Ставка умножается на коэффициент по предсказанному CTR запроса, в среднем ≈ 1 | beta, min_mult, max_mult |
Обе фичи опираются на CTR-модель. Если модель выключена, тестовая рука ведет себя как контроль, и эксперимент сравнивает контроль с контролем — редактор и отчет показывают предупреждение «CTR-модель выключена». В списке есть и третья фича, «Форма ответа», — она служебная и меняет техническую форму ответа площадке.
Параметры «Креатив по CTR»
Вес креатива в тестовой руке пропорционален ставка × pCTR^alpha, но доля каждого креатива не опускается ниже min_weight_frac от равной доли. Сумма весов кампании сохраняется, поэтому ее доля против других кампаний не меняется.
| Параметр | Диапазон | Смысл |
|---|---|---|
alpha |
больше 0, не больше 4 | Сила учета pCTR: 1 — пропорционально pCTR, больше — агрессивнее |
min_weight_frac |
от 0 до 1, не включая 1 | Пол доли креатива от равной: креативы без истории продолжают получать показы |
По умолчанию новая тестовая рука называется ctr и получает alpha = 1, min_weight_frac = 0,2. Пример: в кампании 4 креатива, min_weight_frac = 0,2 — каждый получит не меньше 0,2 × 1/4 = 5 % показов кампании.
Параметры «Ставка по CTR»
Коэффициент ставки = (pCTR запроса / средний pCTR кампании)^beta, ограниченный коридором [min_mult, max_mult]. Средний pCTR считается по запросам, где кампания была кандидатом в тестовой руке, поэтому в среднем коэффициент около 1: запросы с высоким pCTR покупаются дороже, с низким — дешевле (иногда ниже флора, то есть не покупаются). Пока средний pCTR не накоплен, коэффициент равен 1.
| Параметр | Диапазон | Смысл |
|---|---|---|
beta |
больше 0, не больше 4 | Сила учёта pCTR |
min_mult |
от 0,1 до 1 | Нижняя граница коэффициента |
max_mult |
от 1 до 3 | Верхняя граница коэффициента |
По умолчанию тестовая рука называется bid и получает beta = 1 и коридор 0,5–1,5: ставка меняется не больше чем вдвое вниз и в полтора раза вверх. Пример: ставка кампании 60 ₽, средний pCTR кампании 1 %, pCTR запроса 1,3 % — коэффициент (1,3 / 1)^1 = 1,3, ставка 78 ₽. При pCTR 2,5 % коэффициент был бы 2,5, но коридор срежет его до 1,5 — ставка 90 ₽.
Чем работает предсказание CTR в общем — в отдельной статье.
Как запустить эксперимент
- Откройте «Эксперименты» → «Новый эксперимент».
- Заполните «Название» и выберите «Фичу».
- Выберите «Единицу рандомизации»:
- «по пользователям» — пользователь всегда видит одну руку; запросы без стабильного ID пользователя в эксперимент не попадают;
- «по запросам» — каждый запрос назначается отдельно; годится только для фич, эффект которых не переносится между запросами. Для «Креатив по CTR» и «Ставка по CTR» по умолчанию — по пользователям.
- В поле «Кампании» найдите и отметьте кампании. Вариант «Весь трафик фичи (без списка кампаний)» — только осознанно: эксперимент без списка кампаний не запустится без этого флажка.
- Настройте «Руки». По умолчанию их две:
controlи тестовая, по 50 %. Можно добавить до 8 рук. Правила:- ровно одна рука с именем
control, у нее нет параметров; - имя руки — латиница в нижнем регистре, цифры и
_, начинается с буквы, до 32 символов; - «Доля трафика, %» у каждой руки больше 0, сумма — ровно 100 % (подсказка «Сумма: … %» под списком).
- ровно одна рука с именем
- При необходимости задайте «Начало» и «Окончание». Пусто — с момента запуска и до остановки.
- Сохраните и нажмите «Запустить». Если кампания уже занята другим запущенным или приостановленным экспериментом — любой фичи, — запуск будет отклонен с номером мешающего эксперимента. Эксперимент на «Весь трафик фичи» занимает все кампании сразу.
Важно. После первого запуска руки, единица, фича и кампании заморожены. Их смена молча переназначила бы часть пользователей в другую руку и испортила сравнение. Чтобы изменить схему, остановите эксперимент и создайте новый — у нового будет своя «Соль назначения», то есть независимое разбиение.
Статусы
| Статус | Что происходит |
|---|---|
| Черновик | Правится свободно, трафик не делит. Черновик можно удалить |
| Идёт | Трафик кампаний делится по рукам в окне «Начало — Окончание» |
| Пауза | Трафик идет без эффекта фичи и в отчет не попадает; кампании остаются занятыми. После «Продолжить» пользователи вернутся в те же руки |
| Остановлен | Необратимо: деление прекращено, отчет сохраняется |
Как назначаются руки
Назначение детерминировано: рука вычисляется хешем от соли эксперимента и ID пользователя (или запроса) и не хранится отдельно. Один и тот же пользователь при одной соли всегда попадает в одну руку, на любом сервере и после паузы. Рука записывается в каждый показ, клик и конверсию.
Чтобы разобрать конверсии по рукам в своей аналитике или в MMP, добавьте в ссылку макросы {experiment_id} и {experiment_arm} — см. макросы ссылок.
Как читать отчет
Отчет открывается на странице эксперимента после первого запуска. Над таблицей — «Окно» (от начала до окончания или до текущего момента), метод и основание кликов.
Таблица рук: «Рука», «Доля», «Пользователи» или «Запросы» (единицы с показами), «Показы», «Клики», «CTR», «Конверсии», «CR», «Расход», «CPC факт», «CPM факт». CR — доля кликов, после которых была конверсия.
Сравнение с контролем — для каждой тестовой руки по CTR и CR:
| Колонка | Что значит |
|---|---|
| «Лифт, 95 % ДИ» | Относительное изменение метрики к контролю и 95-процентный доверительный интервал |
| «p (always-valid)» | p-значение последовательного теста (mSPRT). Смотреть можно в любой момент: вероятность ложного срабатывания не превышает 5 % при любом числе просмотров. Решение — по нему |
| «p (фикс. горизонт)» | Классическое p-значение. Корректно только после набора нужной выборки |
Метка «значимый рост» или «значимое падение» ставится, когда always-valid p меньше 0,05.
Метод. При единице «по пользователям» CTR и CR сравниваются по пользователям с дельта-методом (показы одного человека зависимы). При единице «по запросам» — тестом двух долей.
Клики. Отчет считает только валидные клики — те, что прошли проверку платформы (подробнее — валидные клики). Если разметки валидности нет, отчет пишет «все клики (валидность не размечена)»: сравнение остается корректным, но шумнее.
Фильтры отчета. «Событие конверсии» — имя события из постбэка (например, install); пусто — все события. «MDE» — минимальный сдвиг CTR, под который считается выборка: 5, 10 (по умолчанию), 20 или 30 %.
Выборка
Блок «Выборка» показывает, сколько набрано от выборки, нужной, чтобы заметить сдвиг CTR на выбранный MDE (мощность 80 %, α = 5 %), и сколько показов осталось по рукам. Строка «На текущей выборке заметен сдвиг CTR от …» говорит, какой эффект уже можно увидеть. Если клики сосредоточены у части пользователей, нужная выборка увеличивается на коэффициент дисперсии — отчет пишет об этом отдельно.
Предупреждения
| Предупреждение | Что делать |
|---|---|
| «Доли назначения рук … не соответствуют весам (SRM, p = …)» | Разбиение сломано, сравнению верить нельзя. Проверка идет по назначению входящих запросов за последние 6 часов окна, а не по показам: «Ставка по CTR» законно меняет, кому показывается реклама. Флаг ставится при p < 0,001 |
| «У N из M показов рука не следует из соли и ID пользователя» | Рука в учете не совпадает с формулой назначения — сравнению верить нельзя |
| «Выборка ещё не набрана» | Не принимайте решение по p фиксированного горизонта — только по always-valid p |
| «В окне нет показов эксперимента» | Проверьте статус, окно и что кампании крутятся |
Частые ошибки и советы
- Перед запуском убедитесь, что CTR-модель включена в теневом режиме и откалибрована — см. CTR-модель.
- Начинайте с двух рук 50/50: каждая лишняя рука растягивает время до результата.
- Не останавливайте эксперимент по первому «значимому» p фиксированного горизонта — ждите набора выборки или смотрите always-valid p.
- Сверяйте расход по рукам: «Ставка по CTR» может менять CPM и объем закупки — это эффект фичи, а не ошибка.
Частые вопросы
Можно ли поменять веса рук у идущего эксперимента?
Нет. После первого запуска руки, веса, единица рандомизации, фича и кампании заморожены: их смена переназначила бы часть пользователей. Остановите эксперимент и создайте новый.
Можно ли запустить два эксперимента на одну кампанию?
Нет. Одна кампания может быть только в одном запущенном или приостановленном эксперименте — независимо от фичи.
Когда можно принимать решение по эксперименту?
По колонке «p (always-valid)» — ее можно смотреть в любой момент. p фиксированного горизонта годится только после того, как набрана нужная выборка.