Доклад с конференции - 2015
Евгений Курышев с докладом "Анатомия биддинга: превращение данных в деньги и обратно"
Про Островок

Для начала пару слов о компании и нашей рекламе. Островок на рынке контекста уже более 4 лет, за это время мы сделали много всякого, но промышленный масштаб наша работа с контекстом приобрела в 2014 году.

Мы рекламируем наш сервис, который позволяет бронировать отели, а значит это почти классический e-commerce, только вместо товаров у нас отели, вместо категорий — города и страны.

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

Для примерного понимания масштаба, в настоящий момент у нас около 13 млн объявлений в Директе, ключевых слов еще больше, но не намного. И мы еще далеки от охвата существенной части релевантной семантики.

Кроме того, это один из самых сезонных рынков. Понятное дело, что каждый рынок считает себя очень сезонным и наверное те кто продают лыжи или кондиционеры могут посмеяться над нашими показателями, но тем не менее, в пиковые месяцы на Яндекс приходит в 2.5 раза больше релевантных поисков, чем в "не сезон".

Юнит-экономика

В условиях, когда рекламируемых объектов очень много и лэндингов очень много, на передний план выходит экономическая модель, по которой живёт бизнес. Нет смысла обсуждать биддинг в отрыве от реалий бизнеса, а значит нужно понять как устроен сам бизнес, и какие цели он перед собой ставит.
Так или иначе в коммерческом смысле в основе компании лежит детальная модель юнит-экономики, эдакая "секретная формула", которая конечно совсем не секретная, потому что все e-commerce компании в той или иной степени работают по ней. Зачем рассчитывать именно юнит-экономику? Всё просто — так значительно удобнее разбирать модель работы бизнеса, понимать ключевые драйверы, влияющие на рост и прогнозировать его.

$Чистая_Прибыль_С_Заказа = $Прибыль_С_Заказа - $Затраты_На_Привлечение_Заказа

Это самая простая формула, если моделируем юнит-экономику на базе заказов, если учитывать что пользователи делают несколько заказов, а привлечь их надо один раз, зато надо как-то удерживать, то формула станет чуть посложнее (гуглим CAC и ARPU). Когда нужно считать юнит-экономику по заказам, а когда по пользователям? У каждого метода свои плюсы и минусы, но вообще считается что если у вас один клиент обычно делает много заказов и часто возвращается, то правильнее считать экономику на базе клиентов.

Нас, как маркетологов прежде всего интересует вопросы затрат на привлечение и удержание, особенно привлечение. Очевидно, что одним из ключевых компонентов в таких затратах для каналов типа SEM является CPC. По сути затраты на заказ (CPA, CPO или кто как называет) можно расписать в зависимости от канала, в случае с CPC каналами это CPC/%Конверсия

Но поскольку в жизни много всякого случается, заказы отменяются, деньги возвращаются и так далее, то можно добавить эти факторы в конверсию. Также можно расписать и прибыль с заказа более детально, как $Чек * %Маржинальность. В конечном итоге можно получить какую-то такую формулу (всё в расчете на заказ):
Ничего в ней страшного нет, добавился дополнительный член LTVбонус$ (lifetime value), то есть некий ожидаемый экстра эффект от заказа, в виде дополнительных повторных заказов позже, на которые уже не нужно будет (если повезёт) тратить деньги. Этот эффект несколько проще учитывать, если строить юнит-экономику на базе пользователей, а не на базе заказов, но вот нам удобнее оперировать заказами. Также в формуле отдельно считаются затраты на продажу, которые ассоциированы не с привлечением заказа и конверсией, а масштабируются именно с ростом числа транзакций. Разумеется она не учитывает фиксированных костов, ну например на зарплаты сотрудникам или аренду офиса, их несложно в формулу добавить, если это нужно, но поскольку они не масштабируются линейно с юнитом (заказом в данном случае), то их обычно в таких формулах не учитывают.

Важно понимать, что поменять CPC бизнесу значительно проще, чем поменять маржинальность или конверсию. Какими бы ни были сладкими мечты о том, что скоро мы утроим конверсию, проведя А/Б эксперимент и выбрав оптимальный цвет кнопок на сайте, суровая реальность показывает, что изменение CPC гораздо более быстрый рычаг в такой формуле.

Поэтому всё просто, мы можем прямо вычислить CPC, который должен быть, подставив все остальные цифры в формулу. Это средний чек, маржинальность, процент отмен/возвратов, затраты на продажу и конверсия, дополнительный LTV эффект и итоговую чистую прибыль на заказ. Таким образом мы вычисляем ту самую "ценность клика" для нас, то есть CPC, который мы хотим получить, чтобы всё сходилось.

Понятное дело, что это некий средний CPC, а значит что на гранулярном уровне за какие-то клики мы на самом деле готовы платить существенно больше, а за какие-то — существенно меньше. В идеале для каждого объявления, ключевого слова мы должны вычислить CPC, который готовы платить, причем какие-то параметры предсказать сложнее, а какие-то проще. Ключевыми факторами в моделировании CPC у нас являются конверсия, средний чек и отмены. Остальные значения либо легко прогнозируются, либо постоянны, либо задаются исходя из нужд бизнеса.

Зачем вообще так сложно вычислять CPC, почему нельзя просто поставить примелимое значение, собрать клики и по накопленной статистике адаптировать биды? На самом деле это хороший подход, когда во-первых, есть время ждать статистики и готовность итеративно двигаться к оптимальным бидам. Это не подходит, чтобы качественно назначать первоначальные ставки для длинного хвоста фраз, по которым возможно никогда не будут получены клики.

На деле мы назвали $среднийЧек * %маржинальность * %отмены * %конверсию "доходом на клик" (или "комиссией на клик") и стали анализировать этот параметр в зависимости от разных срезов маркетинговых каналов, лэндингов, географии и т.п. И что мы обнаружили: наибольшее влияние на этот параметр оказывает семантика запроса, география пользователя, география рекламируемого отеля (по-сути категория товара в товарном e-commerce), устройство пользователя (десктоп/планшет/смартфон). Это те параметры, которые могут в десятки раз повысить или понизить комиссию с одного клика. На деле их гораздо больше: лендинг, сезонность, время суток, предыдущий опыт пользователя, коммерческие условия с поставщиками и т.п.

Влияние семантики на "доход на клик"
На деле семантика влияет напрямую и на конверсию, и на средний чек (очевидно) и на другие элементы юнит-экономики, поэтому такое влияние трудно изолировать для каждого параметра и удобнее рассматривать их все вместе как одну цифру.

Вообще очевидно, что есть более доходные и менее доходные фразы. Например, доход на клик по фразе "Отели Москвы 3*" — 9.5 рублей, а доход на клик по фразе "Забронировать отель в Москве 3*" — 49 рублей. Поэтому мы сделали простую модель предсказания дохода по ключевой фразе. По-сути мы пытаемся найти исторические данные по этой фразе, а если их нет, то по её частям.

Интересно вообще в какой-то момент посмотреть на всё семантическое ядро сайта и оценить доходность слов, а также их востребованность (исторические показы и клики или какой-нибудь вордстат). Мы разобрали 30млн исторических запросов из SEO и SEM для анализа и построения предсказания экономики в зависимости от семантики.

Также мы использовали другие источники семантики для сбора и анализа популярности конкретных форм запросов, такие как Подсказки Яндекса, Wordstat, JustMagic, Advse и многие другие. Всего более 1 миллиарда релевантных строк.

Влияние географий на экономику
Всем известно что исходная география пользователя оказывает большое влияние на конверсию конкретных товаров и категорий. Для рынка travel это еще более выражено, поскольку определяющими становятся пары "откуда клиент" и "куда едет клиент".

Для лучшего предсказания дохода с клика для пар "откуда" и "куда", мы посмотрели на историческую доходность таких пар и было несложно увидеть интересные зависимости. Например, на картинке ниже можно посмотреть экономические показатели трафика, идущего с рекламы самарских отелей и гостиниц. Каждый кружок — география пользователя, какой-то город. Цветами разбиты кластера (k-means), на основе которых и выбираются итоговые геотаргетинги в том же Директе.

По картинке очень хорошо видно, что дистанционно клиенты из самой города хуже всего бронируют отели в своём же городе (они им не очень нужны) и наоборот чем дальше города друг от друга тем в среднем выше доходность (в основном за счет более крупных средних чеков, нет смысла ехать далеко на 1 день). Конечно это работает только для крупных городов в пределах одной страны, для разных стран в общем виде это правило уже сложно применять. Тем не менее построить модель и кластеризовать геотаргетинги всегда можно.

Влияние устройств и браузеров на экономику
Очевидно что пользователи с разными устройствами по-другому используют продукт, да и сам продукт другой. У них другие востребованные товары (отели в нашем случае), средние чеки, другая конверсия, другой процент отмен/возвратов. Поскольку теперь и в Директе, и в Адвордс есть возможность таргетинга по мобильным устройствам, то нужно уметь лучше предсказывать экономику таких пользователей и правильно их закупать. Кстати, поскольку последнее время появилось много механизмов для связывания телефонных звонков (и заказов, пришедших по телефону) с вложениями в контекстную рекламу, то если вы делаете отдельные объявления, нацеленные напрямую на получение звонков (а не привлечение клиентов на сайт), то их можно отслеживать отдельно.

Точно также как и с географиями мы корректируем биды для мобильного таргетинга на основе простой модели.

По этой картинке тоже видно, что платить за пользователей разных устройств одинаковый CPC просто глупо. Конечно, нужно улучшать продукты, поднимать конверсию на мобильных устройствах и тому подобное. Но пока самым разумным будет платить за мобильных пользователей меньше, либо искать другие оправдания тому, чтобы платить за них столько же, сколько и за десктопных (у них лучше LTV).

Влияние конкурентов
Мы все знаем о том, что действия конкурентов сильно влияют на CPC в конкретном аукционе, но еще важнее то, как предложения конкурентов влияют на решения ваших клиентов о покупке. Если сегодня ваши предложения по цене существенно лучше, чем у конкурентов, то ваша конверсия будет выше, но стоит конкурентам опустить цены и ваша конверсия упадет (чаще всего совершенно незаметно для вас).

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

Каждая точка в данном случае это товар (то есть отель, в нашем случае). Тут очень хорошо видно (по второму графику), что хотя ценовое превосходство чаще всего невысокое или отсутствует, подавляющее большинство продаж приходится на те позиции, где оно сильное. Несложно догадаться насколько это важно для биддинга.

Данные, мне нужны данные!
Чем на более гранулярном уровне мы принимаем решение о бидах, тем лучше. Проблема в том, что часто данных катастрофически не хватает. Как спрогнозировать доход с клика для фразы "отель Очаг У Космопорта в Самаре" для геотаргетинга Санкт-Петербург и таргетинга на мобильные устройства? Исторически таких кликов никогда не было, хуже того, с мобильного устройства этот отель вообще ни разу не бронировали, а ставку назначить нужно. И есть еще несколько миллионов таких фраз. Если мы везде назначим ставку неправильно, то будем консистентно переплачивать или недоплачивать, потому что низкочастотность компенсируется очень длинным хвостом и клики будут приходить каждый день.

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

В пример с предыдущим запросом, по которому сложно принять решение из-за отсутствия данных в такой иерархической модели прогнозирования будет отдан на другой "уровень иерархии": у нас таки есть данные о бронировании похожих отелей в Самаре с мобильных устройств клиентами из Санкт-Петербурга, но допустим их тоже мало, тогда можно пойти еще ниже на уровень "бронирования похожих отелей в Самаре с любых устройств и с любых геотаргетингов", тут данных уже достаточно, что позволяет вычислить желаемый CPC.

Мы еще только начинаем возиться с этими иерархиями, пытаясь понять, каким именно образом их выстраивать, тем не менее даже с 2-3 уровнями можно сильно повысить точность прогнозирования.

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

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

Ключевая мысль в том, что качественный биддинг — это всегда продукт хорошего понимания юнит-экономики бизнеса и индивидуальных особенностей маркетинговых площадок. Поскольку аукционы в разных CPC площадках разные, возможности таргетинга и управления тоже, то итоговая ценность клика превращается в бид для каждой площадки по своим правилам и в соответствии со стратегией маркетингового канала. Это позволяет быстрее начинать работу с новыми площадками, а также помогает в случае изменений правил аукциона как это было недавно с Яндекс.Директом.

Например, мы стараемся максимизировать оборот при сохранении безубыточности наших кампаний в SEM каналах, а значит наша модель говорит нам какую среднюю CPC мы готовы платить за каждое ключевое слово. Можно использовать автоброкер «поддерживать среднюю цену клика», либо самому строить портфель и вычислять биды для удержания CPC в нужном диапазоне. Это уже тема для отдельного доклада.

Made on
Tilda