Рекламный кабинет уже списал деньги. Человек установил приложение, открыл его и ушёл. Первую поездку он закажет через неделю — когда прилетит в другой город, опоздает на встречу или просто решит попробовать сервис. А бюджет на завтра нужно распределить сегодня.
В этом разрыве между расходом и результатом скрывается одна из самых неприятных ошибок маркетинга. Кампания, которая быстро приводит к действию, выглядит лучше кампании, которая приводит больше клиентов, но делает это медленнее. Если верить только ближайшему отчёту, можно систематически покупать скорость вместо качества.

Авторская адаптация с разбором по мотивам инженерной публикации Uber о Euclid. Историческая часть опирается на оригинал; расчёты, объяснения и российский контекст добавлены редакцией Sales Ninja. Все числовые примеры и графики ниже условные.
#Что Uber построил в 2016 году
В октябре 2016 года Uber описал Euclid: внутреннюю платформу, объединившую рекламные расходы с регистрациями и первыми поездками.
Сервис MaRS получал отчёты через плагины к API, а от каналов без API — CSV по почте. Конвейер на базе Hadoop, Hive и Spark приводил данные к общей структуре и соединял с внутренними событиями. Проверки и повторные загрузки помогали справляться со сбоями.
Euclid прогнозировал вероятность и время первой поездки по историческим конверсиям, времени, месту, устройству и рекламному каналу.
Прогноз уже описывался как возможность платформы; внедрение моделей многоканальной атрибуции в производственный конвейер оставалось планом. Численной оценки точности прогноза или доказанного роста продаж публикация не приводит.
Источник исторической части: оригинальная статья Uber, 2016.
#Почему вчерашний отчёт может выбрать неправильную кампанию
Чтобы понять смысл такого прогноза, достаточно сравнить две кампании. Обе потратили по 300 000 рублей и привели по тысяче установок. Стоимость установки одинаковая — 300 рублей. Но люди из этих кампаний ведут себя по-разному.
| Показатель | Кампания А | Кампания Б |
|---|---|---|
| Расход на привлечение | 300 000 ₽ | 300 000 ₽ |
| Установки | 1 000 | 1 000 |
| Первые поездки за первые сутки | 150 | 60 |
| Стоимость первой поездки по отчёту за сутки | 2 000 ₽ | 5 000 ₽ |
| Первые поездки за 30 дней | 180 | 300 |
| Стоимость первой поездки после 30 дней | 1 667 ₽ | 1 000 ₽ |
Через сутки кампания А выглядит в два с половиной раза выгоднее. Через месяц выгоднее оказывается Б: она привела больше людей, которые действительно воспользовались сервисом.
Ни одна цифра в раннем отчёте не была ложной. Ошибка появилась в момент, когда по результату первых суток решили судить о результате месяца.

В обоих случаях сравнивается одна и та же группа привлечённых пользователей по мере её взросления. Это не сравнение продаж разных календарных дней.
Здесь легко перепутать две вещи. Отчёт «сколько поездок было вчера» нужен для операционной работы. Отчёт «сколько поездок принесут люди, привлечённые вчера» нужен для оценки закупки. У первого есть законченный календарный день. У второго результат ещё развивается.
Группа пользователей, привлечённых в один период, называется когортой. Честное сравнение требует одинакового возраста когорт: сутки с сутками, тридцать дней с тридцатью днями. Иначе свежую кампанию ставят в заведомо худшие условия.
Однако ждать месяц перед каждым решением слишком дорого. Пока маркетолог собирает полный результат, меняются ставки, спрос и объявления. Отсюда и потребность в промежуточной оценке: сколько результата уже произошло и сколько ещё можно ожидать.
#«Не купил» и «пока не купил» — разные данные
Для модели это различие ещё важнее, чем для отчёта. Если всех посетителей без покупки записать в неуспешные, недавние визиты дадут много ложных отрицательных примеров. Человек, который заплатит завтра, сегодня будет учить алгоритм тому, что его поведение не ведёт к продаже.
В исследованиях рекламного машинного обучения эта проблема называется delayed feedback, или задержка обратной связи. В работе Yoshikawa и Imai, 2018 показано, почему конверсии за пределами периода наблюдения могут ошибочно становиться отрицательными метками. Авторы также разбирают моделирование распределения задержки без обязательного предположения о его конкретной форме.
Практический смысл прост: отсутствие результата нужно читать вместе с тем, сколько времени прошло.
Человек не совершил целевое действие через десять минут — мы почти ничего не узнали. Он не совершил его за месяц, хотя похожие пользователи обычно укладываются в три дня, — это уже гораздо более сильный сигнал. Но и здесь всё зависит от выбранной цели: первая поездка, повторный заказ и договор на поставку оборудования требуют разных сроков наблюдения.
Поэтому у прогноза должен быть горизонт. «Совершит ли покупку за 30 дней после визита» — задача, которую можно проверить. «Когда-нибудь станет клиентом» — обещание без ясного момента проверки.
Выбор горизонта меняет и бизнес-смысл оценки. Прогноз на семь дней полезен для быстрого оборота, но недооценит часть долгих сделок. Прогноз на девяносто дней охватывает больше результата, зато требует более длинной истории для проверки. Горизонт стоит выбирать под экономику бизнеса и доступные данные.
#Как оценить результат, который ещё не произошёл
Самый понятный способ — разделить итог на уже наблюдаемые события и ожидаемые будущие события.
Ожидаемые конверсии = состоявшиеся конверсии + сумма вероятностей будущей конверсии у остальных пользователей.
Допустим, из тысячи привлечённых людей 60 уже совершили первое целевое действие. Среди оставшихся 940 модель выделила три группы:
| Пользователи без конверсии | Число людей | Вероятность конверсии в оставшийся срок | Ожидаемые конверсии |
|---|---|---|---|
| Выраженное намерение | 200 | 60% | 120 |
| Умеренное намерение | 400 | 25% | 100 |
| Слабое намерение | 340 | 5% | 17 |
| Всего ещё ожидается | 940 | — | 237 |
Прогноз итогового числа конверсий: 60 + 237 = 297. При расходе 300 000 рублей прогнозная стоимость результата составит примерно 1 010 рублей, хотя текущая наблюдаемая стоимость равна 5 000 рублей.
Эти 237 событий не произошли. Они не становятся продажами в бухгалтерии. Но оценка даёт основание продолжить кампанию, которую ранний отчёт предлагал бы отключить. Позже прогноз нужно сопоставить с фактом.
#Почему нельзя просто складывать первоначальные вероятности
Есть тонкость: вероятность должна учитывать, что пользователь до сих пор не совершил действие. Первоначальная оценка постепенно устаревает.
Рассмотрим упрощённую модель, которая использует только исходные признаки и прошедшее время. Пусть:
- p — вероятность конверсии в выбранный горизонт;
- F(t) — доля будущих конвертеров, которые обычно успевают совершить действие к моменту t;
- q(t) — вероятность конверсии в оставшееся время для человека, который ещё не сконвертировался.
Тогда:
q(t) = p × [1 − F(t)] / [1 − p × F(t)].
Почему так? Из всех пользователей доля p × F(t) уже должна была совершить действие. Среди оставшихся есть будущие конвертеры — их доля в исходной группе равна p × [1 − F(t)]. Деление на долю всех оставшихся и даёт нужную условную вероятность.
Если p = 30%, а к текущему моменту обычно проявляется 40% всех конверсий, то для пользователя без результата q(t) = 0,18 / 0,88 ≈ 20,5%. Продолжать приписывать ему исходные 30% значило бы завышать остаточный потенциал.
Проверим на тысяче одинаковых по модели пользователей. Ожидаемый итог — 300 конверсий. К текущему моменту произошло 120. У 880 оставшихся вероятность равна 18/88: вместе это ещё 180 ожидаемых событий. 120 + 180 = 300, а не 120 + 264.
В реальной работе добавляются новые визиты и действия. Возвращение к выбору может повысить оценку, явный отказ — снизить. Формула выше показывает только поправку на время; она не описывает внутренний алгоритм Euclid или Sales Ninja.
#Хороший прогноз должен выдержать встречу с фактом
Модель может прекрасно расставлять пользователей по вероятности и всё равно ошибаться в масштабе. Например, группа с оценкой 80% действительно покупает чаще группы с оценкой 20%, но реальные доли оказываются 40% и 10%. Для ранжирования такой прогноз полезен. Для расчёта ожидаемой выручки он завышен вдвое.
Соответствие вероятностей фактическим частотам называется калибровкой. Если на большой зрелой выборке пользователи с прогнозом около 30% конвертируются примерно в 30% случаев, оценку можно использовать в суммах ожидаемого результата. При этом хорошая калибровка всей аудитории ещё не гарантирует её внутри каждого рекламного канала.
Качество стоит проверять так, как модель будет работать в жизни. Сохранить прогнозы на момент принятия решения, дождаться окончания горизонта и сравнить с результатами. Для каждого такого прогноза использовать только те сведения, которые уже были доступны тогда. Статус оплаты, появившийся через неделю, не должен случайно попасть в признаки вчерашней модели.
На практике полезно видеть три числа рядом: факт на сегодня, прогноз итогового результата и факт после завершения наблюдения. Тогда можно понять и ошибку текущей модели, и то, улучшается ли она со временем.
В исследовании Handling many conversions per click in modeling delayed feedback, 2021 авторы отдельно рассматривают повторные конверсии и изменяющиеся задержки. Одна из предложенных идей — разделить целевой результат по интервалам задержки и обучать соответствующие части на уже созревших метках. Это помогает увидеть, почему одинаковое ожидание для всех событий неудобно: ранняя покупка и поздний повторный заказ дают обратную связь в разные моменты.
При небольшом числе сделок уверенность всё равно ограничена. Если прогноз кампании А равен 180, а Б — 185, такая разница сама по себе не заслуживает резкого переноса бюджета. Чем выше неопределённость и цена ошибки, тем осторожнее должно быть изменение закупки. Модель позволяет действовать раньше; объём данных определяет, насколько смело.
#Почему объединение данных важнее красивого дашборда
До обсуждения алгоритма нужно разобраться, откуда взялся результат. У рекламы, сайта и CRM разные представления об одном пути клиента.
Рекламный кабинет знает, сколько стоил трафик. Сайт видит действия и возвраты. CRM знает, прошёл ли лид квалификацию и состоялась ли сделка. Платёжная или учётная система может знать, что деньги поступили, заказ отменили или товар вернули.

Общая схема предиктивного маркетинга. Это редакционная иллюстрация принципа, а не схема реализации Euclid.
Сложность возникает уже на уровне времени. У оплаты есть момент, когда она произошла, и момент, когда сообщение о ней дошло до аналитики. Если принять второй за первый, задержка интеграции станет похожа на задержку покупки. Модель начнёт изучать работу коннектора вместо поведения клиентов.
То же относится к пропавшим событиям. Ноль оплат после рекламного визита может означать отсутствие спроса, а может — сбой загрузки. В первом случае стоит пересмотреть кампанию. Во втором — восстановить данные. Если система не умеет различать эти ситуации, более сложная модель лишь увереннее объяснит неправильную картину.
Поэтому единый поток требует вполне земных вещей: стабильных идентификаторов, сохранения времени события, устранения дублей и понятного порядка обновления статусов. Оплата не должна становиться двумя продажами после повторной отправки, а отмена — исчезать из оценки качества привлечения.
Важна и полнота сопоставления. Допустим, у одной кампании удаётся связать с визитами почти все продажи, у другой — только половину. По наблюдаемым результатам первая будет выглядеть выгоднее, даже если реальная экономика одинаковая. Проверять нужно не только стоимость сделки, но и долю результатов, которые вообще попали в расчёт.
#От прогноза в отчёте — к сигналу для рекламы
До сих пор мы обсуждали решение маркетолога: продолжать ли кампанию, сколько результата ждать, куда распределять бюджет. Следующий шаг — сделать раннюю оценку пригодной для обучения рекламной системы.
У автостратегии может быть мало реальных оплат и много визитов, которые ещё не успели завершиться сделкой. Если научиться оценивать их будущий результат, появится дополнительная обратная связь. Так возникает практический смысл моделируемых конверсий.
При этом «посетитель провёл две минуты на сайте» и «модель оценила вероятность оплаты по совокупности признаков» — разные сигналы. Фиксированная микроконверсия награждает одно действие по заранее заданному правилу. Предиктивная оценка должна учиться тому, какие сочетания действий действительно предшествуют нужному результату.
Но удобный сигнал легко превратить в неправильную цель. Если модель обучалась предсказывать заявку, реклама может научиться приводить больше заявок. Квалификация, оплата и прибыль от этого автоматически не вырастут. Для длинной воронки особенно важно связать прогноз с тем этапом, за который бизнес готов платить.
Есть и вопрос масштаба. Один посетитель может получить несколько прогнозов и затем совершить реальную покупку. Если просто сложить всё как независимые продажи, ожидаемая ценность будет учтена несколько раз. Способ передачи сигналов, их вес и отношение к реальным событиям должны сохранять смысл выбранной цели.
В управленческом отчёте фактическая выручка остаётся фактической. Прогноз помогает принять решение до её появления, а моделируемая конверсия помогает быстрее передать оценку рекламному алгоритму. Это разные применения одной идеи, и каждое требует своей проверки.
#Следующий вопрос: что показать посетителю
Предсказание полезно и после рекламного клика. Если люди находятся на разных этапах выбора, им могут помогать разные версии страницы: короткий путь к действию, объяснение условий, возвращение к предыдущему выбору.
Здесь начинается предиктивная персонализация. Вопрос меняется: вместо «купит ли человек» мы спрашиваем «при каком варианте страницы вероятность полезного результата выше».
Самая высокая исходная вероятность покупки ещё не означает самый высокий эффект вмешательства. Допустим, у одной группы специальное предложение повышает вероятность с 90% до 92%, а у другой — с 30% до 35%. В первой группе ожидаемая прибавка составляет 2 процентных пункта, во второй — 5. Если предложение стоит денег, разница особенно существенна.
Однако эти две вероятности нельзя узнать для одного человека простым наблюдением: он увидел только один вариант. Для оценки эффекта нужны эксперименты и контрольная группа. Иначе система будет считать своей заслугой покупки людей, которые и так собирались купить.
При длинной сделке моделируемая цель может дать персонализации более ранний ориентир. Проверять итоговый прирост всё равно нужно по настоящим результатам: оплатам, квалифицированным сделкам или прибыли. Особенно если изменение страницы само влияет на поведение, из которого считается прогноз: рост модельной оценки тогда ещё не гарантирует рост продаж.
#Что история Euclid меняет в подходе к маркетингу
Задержка результата не исчезает от появления более быстрого отчёта. Чтобы принимать решения раньше, нужно оценить ещё не проявившуюся часть результата, а затем проверить эту оценку по факту.
Исторический интерес Euclid — в сочетании общей базы маркетинговых данных и прогноза. Такое сочетание меняет саму задачу аналитики: от ответа «что уже произошло» к обоснованному ожиданию того, что ещё произойдёт. Для бизнеса с длинным выбором это способ перестать наказывать кампании только за возраст их клиентов.
Оригинал: Designing Euclid to Make Uber Engineering Marketing Savvy, Uber Engineering, 19 октября 2016 года. Авторы — Mrina Natarajan и Hohyun Shim. Исторический пересказ выше подготовлен на основе этой публикации; последующие объяснения и расчёты — самостоятельный редакционный разбор.
#Как мы решаем похожие задачи в России
В Sales Ninja мы занимаемся тем же классом задач предиктивного маркетинга: связываем доступные данные о визите с последующим бизнес-результатом и помогаем использовать прогноз до того, как завершится вся воронка.
Наши моделируемые конверсии оценивают вероятность и ценность будущего результата и передают дополнительные сигналы для обучения рекламы. Целью могут служить события проекта, в том числе результаты из CRM. Это особенно полезно, когда реальных конверсий мало или оплата появляется значительно позже визита.
Обратную связь обеспечивают интеграции и стриминг данных: события сайта, CRM и коллтрекинга связываются с визитами и передаются в рекламную аналитику. Например, статус квалификации из amoCRM или оплата из RetailCRM могут стать более содержательной целью, чем отправка формы. ML Рематчер помогает сопоставлять внешние результаты с сессиями; качество связи зависит от доступных данных.
А предиктивная персонализация использует контекст посетителя для выбора варианта сайта. Для длинной воронки можно использовать моделируемую цель; контрольная группа позволяет проверять эффект изменений.
Вместе это сокращает путь от рекламного визита к полезной обратной связи. Результат сделки приходит позже, но работа по его достижению и оценке начинается уже сегодня.
#Дополнительные источники
- Yuya Yoshikawa, Yusaku Imai — A Nonparametric Delayed Feedback Model for Conversion Rate Prediction, 2018: проблема запаздывающих конверсий и моделирование задержек.
- Ashwinkumar Badanidiyuru и соавторы — Handling many conversions per click in modeling delayed feedback, 2021: повторные события, длинный хвост задержек и обучение на созревших метках.
Оригинал статьи опубликован на uber.com