ibiza
CPM · CTR …
/

Оптимизация ставок в RTB: от ценности показа до bid shading

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

Стоимость закупки в RTB снижают несколько алгоритмов, и каждый отвечает на свой вопрос. ML-модели (pCTR и pCVR) оценивают, сколько стоит показ для рекламодателя. Ставка выводится из этой ценности с коэффициентом и ограничениями. Автобид удерживает нужную долю выигрышей, а bid shading в аукционе первой цены срезает переплату сверх уровня конкурентов. Защита бюджета отсекает накрутку, чтобы модели не учились на ней.

Карта алгоритмов: кто за что отвечает

Удобно разделить оптимизацию на четыре слоя. Они решают разные задачи и ошибаются по-разному.

Слой Вопрос Входные данные Что меняет
Ценность показа Сколько этот показ стоит для рекламодателя? pCTR, pCVR, ценность действия Верхнюю границу ставки, выбор креатива
Автобид Сколько поставить, чтобы выигрывать нужную долю аукционов? Фактический win rate, минимальная выигрышная цена Ставку в пределах потолка
Ценообразование Сколько заплатить, чтобы все равно выиграть? Распределение минимальной выигрышной цены, флор Итоговую цену, только вниз
Защита бюджета На каких показах и кликах нельзя учиться и тратить? Валидность кликов, частота, качество площадок Отбор трафика и обучающих данных

Ниже — каждый слой по отдельности, затем порядок, в котором они собираются в одну ставку.

Ценообразование: bid shading и флоры

В аукционе первой цены победитель платит свою ставку. Если вы готовы отдать 100 ₽ за тысячу показов, а ближайший конкурент поставил 70 ₽, разница в 30 ₽ — чистая переплата. Bid shading оценивает по истории, сколько обычно хватает для выигрыша на этом месте размещения, и ставит чуть выше этого уровня. Сигнал — минимальная выигрышная цена из уведомлений биржи (макрос ${AUCTION_MIN_TO_WIN} в OpenRTB 2.6); снизу ставку держит бидфлор, ниже которого аукцион проигран заранее. Выбор квантиля, маржи и минимальной выборки разобран в статье «Bid shading на практике».

В аукционе второй цены shading не нужен: цену и так задает конкурент, а заниженная ставка только чаще проигрывает.

Автобид: целевой win rate и потолок цены

Фиксированная ставка почти всегда промахивается: на одних слотах она избыточна, на других не проходит. Автобид работает как регулятор. Раз в период он сравнивает фактическую долю выигрышей с целевой и сдвигает ставку: ниже цели — вверх, выше цели — вниз. Учитываются только проигрыши по цене, потому что отказ по формату или таймауту ничего не говорит о ставке.

Регулятору нужен жесткий потолок. Обычно это максимальная цена, которую задал рекламодатель, с поправкой на расписание по часам. Без потолка цель «выигрывать 90%» на конкурентном слоте превращается в неограниченный рост цены. Автобид отвечает на вопрос «сколько трафика», но не на вопрос «сколько этот трафик стоит».

Ценность показа: pCTR, pCVR и ставка от ценности

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

  • pCTR — вероятность клика по показу. Учится на истории показов с меткой «был валидный клик». Признаки, архитектуры и калибровка описаны в статье про предсказание CTR.
  • pCVR — вероятность целевого действия (установки, регистрации, покупки) при условии, что клик был. Метка приходит из постбэка трекера, который связал действие с кликом. Сам показатель разобран в статье про CVR.

Ожидаемая ценность показа складывается из трех множителей:

ценность показа = pCTR × pCVR × ценность целевого действия
ставка CPM      = clamp( ценность показа × 1000 × k,  нижняя граница,  потолок )

Здесь k — коэффициент, который оставляет запас под маржу и неточность модели, а clamp не дает ставке выйти за пределы. Ограничение сверху защищает от выброса прогноза: одна завышенная оценка не должна купить показ по любой цене. Ограничение снизу не дает модели «выключить» трафик, на котором у нее мало данных.

Пример (иллюстративный). Установка стоит для рекламодателя 300 ₽. Для показа модель дает pCTR 1% и pCVR 4%. Ценность показа: 0,01 × 0,04 × 300 = 0,12 ₽, то есть 120 ₽ за тысячу. С коэффициентом 0,8 ставка — 96 ₽ CPM. Для соседнего показа pCTR 0,3% и та же pCVR дают 0,036 ₽, или 36 ₽ CPM до коэффициента: такой показ стоит покупать намного дешевле.

Этот подход называют value-based bidding: ставка следует за ожидаемой ценностью, а не за средней ценой по кампании. По той же логике работают стратегии вроде целевой рентабельности в Google Ads: система прогнозирует вероятность и ценность конверсии для каждого аукциона и поднимает ставку там, где она выше.

Пока модели нет полного доверия, вместо прямой формулы применяют мягкий вариант — множитель к ставке кампании в узком коридоре, а тот же прогноз используют для выбора креатива. Оба приема и их риски описаны в статье про предсказание CTR; для этой статьи важно одно: множитель меняет ставку до проверки флора и до shading, а не после них.

Защита бюджета: валидные клики, частота, площадки

Любая модель, оптимизирующая клики, найдет самый дешевый источник кликов. Часто это боты, случайные нажатия и площадки, которые накручивают переходы. Поэтому в защиту бюджета входят три вещи.

  • Метка — валидный клик. Клики без показа, слишком быстрые, по устаревшей ссылке не считаются положительным примером. Критерии разобраны в статье про валидные клики.
  • Частотные ограничения. Десятый показ одному человеку редко стоит столько же, сколько первый. Частотный лимит режет хвост дорогих повторов.
  • Клики с фродовых площадок — не положительный пример. Если площадка накручивает переходы, ее клики не должны учить модель. Иначе модель выучит, что эта площадка «кликабельная», и начнет за нее переплачивать.

Порядок шагов в одном биде

Внутри одного ответа на запрос шаги идут в определенной последовательности. Упрощенно она выглядит так:

  1. Отбор. Таргетинг, лимиты, частота и фильтры качества оставляют список допустимых объявлений.
  2. Потолок. Максимальная цена объявления с коэффициентом расписания на текущий час.
  3. Автобид. Ставка под целевой win rate, но не выше потолка.
  4. Ценность. ML-коэффициент или ставка от ценности показа в пределах коридора. Если коэффициент умножает и ставку, и потолок, слабый показ честно уходит ниже флора, а сильный может стоить дороже обычной цены — в пределах коридора.
  5. Проверка флора. Ставка ниже бидфлора не отправляется.
  6. Bid shading. Только для первой цены и только вниз: до квантиля минимальной выигрышной цены с запасом, но не ниже флора.

Порядок важен по двум причинам. Первая: shading — инструмент цены, а не ценности. Он знает, сколько хватает для выигрыша, но не знает, нужен ли этот показ. Если сначала снизить цену, а потом умножить ее на коэффициент модели, коэффициент 1,4× поднимет уже «ужатую» ставку выше уровня рынка, и экономия исчезнет. Вторая: shading не должен влиять на выбор объявления. Если сильнее сжатое объявление получает меньший вес в ротации, кампании с хорошей экономией начинают крутиться реже. Поэтому выбор опирается на ставку до shading, а сниженная цена используется только как цена для биржи.

Пример (иллюстративный, продолжение). Ставка от ценности — 96 ₽ CPM, флор — 50 ₽. По истории слота квантиль минимальной выигрышной цены — 70 ₽, запас 5%: 70 × 1,05 = 73,5 ₽. В аукционе уходит 73,5 ₽, экономия против 96 ₽ — 22,5 ₽ на тысячу показов, около 23%. Если бы квантиль оказался 110 ₽, shading ничего бы не менял: он не поднимает ставку выше оценки ценности.

Как измерить эффект

Сравнение «до и после» включения алгоритма почти ничего не доказывает: за это время меняются сезон, конкуренты и креативы. Нужен эксперимент с контрольной группой, которая в тот же период торгуется по-старому.

  • Делить по пользователю. Ставка и выбор креатива влияют на то, что человек видит дальше, поэтому деление по запросу смешивает эффекты групп.
  • Смотреть на цель, а не на промежуточную метрику. Для оптимизации по ценности главный вопрос: снизилась ли стоимость целевого действия (CPA) при сопоставимом объеме. Рост CTR при том же CPA — не победа.
  • Ждать нужную выборку. Конверсии редки, и для заметного сдвига CVR нужно гораздо больше трафика, чем для CTR.

Методика — деление по хешу, проверка долей групп, always-valid p — описана в статье «A/B-тесты в рекламе».

Типичные ошибки оптимизации ставок

Оптимизация по CTR без проверки качества клика

Модель, обученная на всех кликах, быстро находит площадки с накруткой: там CTR высокий, а установок нет. Рост CTR в отчете при этом выглядит как успех. Учите на валидных кликах и проверяйте результат по конверсиям, а не по кликам.

Слишком короткое окно атрибуции

Конверсия приходит с задержкой: установка — через минуты или часы, покупка — через дни. Если учить pCVR на свежих кликах, многие будущие конверсии попадут в выборку как «не было конверсии», и модель систематически занизит CVR. Эту проблему задержанной обратной связи разбирал О. Шапель (Criteo) в работе 2014 года: он моделировал время до конверсии отдельно от ее вероятности. Простое практическое правило — не брать в обучение клики моложе окна атрибуции или учитывать задержку явно.

Утечка обучающих данных

Признак, который становится известен только после показа (например, число событий за день, куда вошел и сам этот показ), делает модель блестящей в отчете и бесполезной в бою. Сюда же относится случайное разбиение на обучение и тест: в обучение попадают показы «из будущего». Делите данные по времени, а признаки для обучения и для ставки считайте одним и тем же кодом.

Мало конверсий: холодный старт

При CTR 1% и CVR 3% на миллион показов приходится около 300 конверсий, и после деления по площадкам у большинства из них не будет ни одной. Модель по разреженным данным выдает шум. Помогают три приема:

  • иерархическое сглаживание — оценка площадки подтягивается к среднему по кампании, а та к общему среднему, пока собственных данных мало;
  • промежуточное событие — регистрация или первое открытие вместо покупки, пока покупок мало;
  • обучение на всех показах — pCVR учат только на кликах, а применяют ко всем показам; модели вроде ESMM (Alibaba, 2018) снимают это смещение, обучая CTR и CTR × CVR совместно.

Какие алгоритмы оптимизации работают в Ibiza

В Ibiza работают bid shading и автобид. Shading применяется только в кампаниях с аукционом первой цены, только снижает ставку и не опускает ее ниже флора площадки. Настройки — в документации «Bid shading в кампании». Автобид (Авто-CPM) ведет ставку пары «объявление — слот» к целевой доле выигрышей, а «Цена» объявления с коэффициентом расписания служит ему потолком; подробнее — в документации автобида. Выбор объявления опирается на ставку до shading, как описано выше.

ML-модель вероятности клика обучается на валидных кликах: клик на месте размещения, признанном мусорным, положительным примером не считается, а места без достаточной статистики качества кликов в обучение не берутся. Ставка по pCTR и выбор креатива по pCTR работают в тестовых группах A/B-экспериментов. Коэффициент к ставке ограничен коридором, по умолчанию от 0,5× до 1,5×. Вне экспериментов модель работает в теневом режиме и на закупку не влияет. Конверсии приходят постбэками из MMP-трекеров и видны в отчетах (CVR, CPA) и в отчете эксперимента по каждой группе, поэтому эффект ML-стратегий проверяется по стоимости действия, а не только по CTR. Оптимизация по конверсиям — модель pCVR на постбэках — подключается по запросу через менеджера: для нее нужен устойчивый поток постбэков по кампании. Что включить под свою задачу, описано в документации «Оптимизация закупки в Ibiza».

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

Чем pCTR отличается от pCVR?

pCTR — прогноз вероятности клика по показу. pCVR — прогноз вероятности целевого действия при условии, что клик уже был. Их произведение дает вероятность того, что показ закончится конверсией.

Что применять первым — ML-коэффициент или bid shading?

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

Сколько конверсий нужно для оптимизации по конверсиям?

Единого порога нет: он зависит от разброса CVR между площадками и от того, насколько мелко делится трафик. Пока конверсий мало, оценки по отдельным площадкам подтягивают к среднему по кампании, а оптимизируют по более частому промежуточному событию.

Можно ли оценить эффект оптимизации сравнением «до и после»?

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