ibiza
CPM · CTR …
/

A/B-эксперименты: как запустить и читать отчет

≈ 7 мин чтения · обновлено

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 в общем — в отдельной статье.

Как запустить эксперимент

  1. Откройте «Эксперименты» → «Новый эксперимент».
  2. Заполните «Название» и выберите «Фичу».
  3. Выберите «Единицу рандомизации»:
    • «по пользователям» — пользователь всегда видит одну руку; запросы без стабильного ID пользователя в эксперимент не попадают;
    • «по запросам» — каждый запрос назначается отдельно; годится только для фич, эффект которых не переносится между запросами. Для «Креатив по CTR» и «Ставка по CTR» по умолчанию — по пользователям.
  4. В поле «Кампании» найдите и отметьте кампании. Вариант «Весь трафик фичи (без списка кампаний)» — только осознанно: эксперимент без списка кампаний не запустится без этого флажка.
  5. Настройте «Руки». По умолчанию их две: control и тестовая, по 50 %. Можно добавить до 8 рук. Правила:
    • ровно одна рука с именем control, у нее нет параметров;
    • имя руки — латиница в нижнем регистре, цифры и _, начинается с буквы, до 32 символов;
    • «Доля трафика, %» у каждой руки больше 0, сумма — ровно 100 % (подсказка «Сумма: … %» под списком).
  6. При необходимости задайте «Начало» и «Окончание». Пусто — с момента запуска и до остановки.
  7. Сохраните и нажмите «Запустить». Если кампания уже занята другим запущенным или приостановленным экспериментом — любой фичи, — запуск будет отклонен с номером мешающего эксперимента. Эксперимент на «Весь трафик фичи» занимает все кампании сразу.

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

Статусы

Статус Что происходит
Черновик Правится свободно, трафик не делит. Черновик можно удалить
Идёт Трафик кампаний делится по рукам в окне «Начало — Окончание»
Пауза Трафик идет без эффекта фичи и в отчет не попадает; кампании остаются занятыми. После «Продолжить» пользователи вернутся в те же руки
Остановлен Необратимо: деление прекращено, отчет сохраняется

Как назначаются руки

Назначение детерминировано: рука вычисляется хешем от соли эксперимента и 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
«В окне нет показов эксперимента» Проверьте статус, окно и что кампании крутятся

Частые ошибки и советы

  1. Перед запуском убедитесь, что CTR-модель включена в теневом режиме и откалибрована — см. CTR-модель.
  2. Начинайте с двух рук 50/50: каждая лишняя рука растягивает время до результата.
  3. Не останавливайте эксперимент по первому «значимому» p фиксированного горизонта — ждите набора выборки или смотрите always-valid p.
  4. Сверяйте расход по рукам: «Ставка по CTR» может менять CPM и объем закупки — это эффект фичи, а не ошибка.

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

Можно ли поменять веса рук у идущего эксперимента?

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

Можно ли запустить два эксперимента на одну кампанию?

Нет. Одна кампания может быть только в одном запущенном или приостановленном эксперименте — независимо от фичи.

Когда можно принимать решение по эксперименту?

По колонке «p (always-valid)» — ее можно смотреть в любой момент. p фиксированного горизонта годится только после того, как набрана нужная выборка.