В какой-то момент у нас в компании стали приходить запросы от маркетологов, чтобы мы поглубже изучили взаимодействие маркетинговых каналов и попробовали мультиканальные модели атрибуции.  В этой статье я хочу поделиться: Что и в какой последовательности мы делали, чтобы мультиканальная атрибуция появилась на свет Обзор инструментов, которые мы использовали Что в этом опыте оказалось полезным, а что можно было вообще не делать  Мультиканальная атрибуция долгое время будоражила умы аналитиков нашей компании. С ростом бизнеса, когда число маркетинговых каналов перевалило за 20-30 штук, смотреть просто на Last-click модель и распределение платежей по каналам стало не информативно. Маркетологи хотели понимать, как каналы взаимодействуют, по каким цепочкам приходят покупатели, на каких каналах можно сэкономить, если полностью их отключить.  Для тех, кто совсем не в теме моделей атрибуции, рекомендую почитать вот эту статью или этот обзор. Итак, что же было сделано в компании, чтобы мультиканальная атрибуция в принципе появилась: N лет назад мы подключили Google Analytics и стали использовать Tag Manager. Это нужно, чтобы трекать трафик, взаимодействие людей с сайтом, количество оставленных заявок и оплат.  Далее мы с помощью API загрузили все данные по хитам во внутреннее хранилище Redshift. Помимо этого написали DAG Airflow, который эти данные обновлял раз в несколько дней. Объем данных огромный, надо признаться, работает долго и не всегда стабильно.  Зачем, спросите вы, все это делать? Ответ — для большей свободы при работе с данными и для обхода семплирования. В интерфейсе Google Analytics сырые данные не доступны.  Уже достаточно давно на этих сырых данных в Redshift у нас была построена Last click модель, ей пользовались не один год и как раз ее хотели расширить с помощью мультиканальной атрибуции.  Как? Если простыми словами, в Redshift берем время первой заявки, ищем последний по времени перед этим хит и его маркетинговую метку. Готово. Можно по этим данным делать агрегации и отчеты для маркетологов.  Теперь мы поступили по-другому: берем все доступные хиты и их маркетинговые метки перед первой заявкой. Сортируем по времени и собираем «путь» человека к заявке. В базе данных это фактически выглядит как цепочка. Теперь время статистики. Что можно сделать с многоканальными цепочками? Многое! Что считали мы: Частоту каждой уникальной цепочки Сколько у нас заявок с 1м, 2мя, 3мя, 4мя и тд каналами (вот это оказался действительно важный пункт) Какие каналы чаще всего встречаются среди одноканальных, двуканальных и тд Цепи Маркова для расчета веса каждого канала в цепочке Ниже покажу лишь часть результатов описательной статистики, но как оказалась, в нашем кейсе — она самая важная.   На графиках изображено распределение цепочек по количеству в нем маркетинговых каналов. В моем случае видно, что 70-80% цепочек одноканальные. И встает вопрос, а нужны ли нам модели многоканальной атрибуции, если все так просто.   У нас возникла гипотеза, что среди небольшой доли многоканальных цепочек могут быть перетекания «полезности» от последнего канала в середину или начало, поэтому было решено модель все же сделать.  Одним из самых стандартных способов атрибуции является модель Last Paid Click, когда весь вес конверсии (в заявку, например) присваивается хронологически последнему платному каналу. Для одноканальных путей эта модель дает предсказуемо тривиальный и корректный результат.  Для мультиканальных путей у нас нет четкого основания полагать, что именно последний платный канал был решающим. Одна из более сложных моделей для нахождения атрибуции — цепи Маркова. Ее важной чертой является то, что можно учесть порядок перехода от одного канала к другому. Короткий пример расчета веса канала. Допустим, у нас есть два человека со следующими цепочками: user_id Канал 1 Канал 2 Канал 3 Результат user 1 Direct Adv Targeting Adv Social conversion user 2 Direct Adv Social  conversion  Граф, отражающий все цепочки, в данном случае будет выглядеть следующим образом (над стрелками указано количество человек, идущих по этому пути):   Общая конверсия в графе P = 1, так как все цепочки ведут к конверсии.  Важным понятием в цепях Маркова является Removal effect i-го канала, его значение равно падению общей конверсии в случае, если из цепочек будет удален канал i. Подсчитаем Removal effect для каждого из каналов, он равен обратной величине для вероятность конверсии, без i-го канала: Если убираем Direct Adv, общая конверсия P = 0. Removal effect = 1 — 0 = 100% Если убираем Targeting Adv, общая конверсия = ½. Removal effect = 1 — 1/2 = 50% Если убираем Social, общая конверсия = 0. Removal effect = 1 — 0 = 100% Следующим шагом нужно нормировать сумму Removal effect по всем каналам на 100%. В нашем примере получили 250%, соответственно финальные веса каналов равны: Direct Adv = 100%/250% = 0,4 Targeting Adv = 50%/250% = 0,2 Social = 100%/250% = 0,4  Этот алгоритм реализован как в R, так и в Python в библиотекe ChannelAttribution.  Формат данных, необходимых на входе: уникальный id его путь до первой заявки  результат конверсии (1 — сконвертился/0 - нет)   Для оценки берем только мультиканальные пути, одноканальные отфильтровали.  Функция:  Как результат оценки на выходе получаем суммарное количество сконверченных пользователей для данного канала.  В таблице собрала несколько моделей для сравнения. Видно, что разница в моделях существенная (по крайней мере для аналитика). utm_group Last Paid Click  First Paid Click Linear model Markov model Markov model (только мультиканальные) Affiliate 9,9% 9,8% 11,2% 11,8% 19,2% Context Adv: Brand 18,4% 21,5% 22,4% 25,4% 35,8% Context Adv: Generic 7,3% 7,7% 8,6% 9,4% 12,4% Partnership 37,4% 35,3% 27,8% 26,1% 16,8% Targeting Adv 27,0% 25,8% 30,1% 27,3% 15,8%  100% 100% 100% 100% 100% Однако после обсуждения с маркетологами приняли решение не переходить от Last Click к многоканальной атрибуции. Сложность интерпретации и непрозначность для маркетологов оказались слишком существенным фактором — от этих результатов зависит вознаграждение сотрудников в Performance маркетинге, так что вопрос острый.     Итак, что бы я посоветовала себе пройдя весь этот путь:  Базовая описательная статистика по цепочкам каналов полезна — стоит делать всем маркетологам однозначно Если видишь, что многоканальность не ваш кейс, вероятно модели атрибуции не дадут большой ценности в данный момент Стоит задуматься, почему в большой компании с более чем 30 маркетинговыми каналами большая часть цепочек одноканальные — возможно дело в том, что часть касаний не трекается и стоит пересмотреть систему меток с самых основ  Если не уверен в надобности многоканальных моделей, но пощупать очень хочется — попробуй готовые сервисы в Google Analytics P.S.: Если у вас есть идеи или опыт, как можно проверить разметку маркетинговых каналов на полноту, буду рада обсудить в комментариях.