touchpoint-attribution-600x535

Алгоритм расчета полной атрибуции

В цифровом маркетинге до сих пор остается нерешенной задача оценки вклада того либо иного канала в достижение результата многоэтапных рекламных компаний, так называемая модель полной атрибуции (multi-touch attribution model). По прогнозам исследовательской компании eMarketer, в 2020 году темпы внедрения моделей полной атрибуции вырастут на 88%.

Наиболее популярные подходы: по первому или последнему переходу, линейные или взвешенные модели — когда “вклад” распределяется согласно какому-то эвристическому правилу: все каналы принесли равный вклад, либо первый и последний — наибольший, и т.п. Подробнее можете почитать в статьях Owox или SegmentStream.

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

Каждый из методов имеет свои плюсы и минусы.

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

simple_Markov_process

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

Расчёт вектора Шепли, использующий теорию кооперативных игр — является наиболее объективным методом распределения “выигрыша” между участниками. За этот метод в 2012 году Ллойд Шепли получил Нобелевскую премию в области экономики. Математический аппарат метода “перебирает” все возможные комбинации каналов, последовательно исключая и добавляя каждый из них. Прирост выигрыша этого варианта кооперативной игры засчитывается за данным игроком.

Метод не чувствителен к порядку каналов в цепочке, т.о. не даёт информации об оптимальном пути.

Однако, основной минус — это вычислительная сложность, которая растет экспоненциально от числа каналов как image003. Поэтому применение вектора Шепли даже в платной подписке Google Marketing Platform ограничено как по частоте пересчёта так и по количеству исследуемых каналов.

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

Популяризации этого подхода также способствовало развитие быстрых методов обучения в аналитических платформах типа Google BigQuery ML.

Google_BigQuery

Но и этот поход ограниченно применим в силу статичности и требуемого значительного объема (порядка 100 000 кейсов) исторических данных для тренировки модели. Т.е. на практике требуется собирать данные в течение 2-8 недель, ничего не меняя в настройке каналов кампании, чтобы получить датасет для тренировки модели которая займет ещё несколько часов или даже дней. В случае изменений настроек любого из каналов модель требует переобучение.

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

multi-layer_perceptron

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

Это наименее ресурсно-затратный способ обучения нейронных сетей, который позволяет корректировать веса в режиме реального времени — параллельно с поступлением данных.

Давайте представим что у нас есть какое-то ограниченное количество узлов (каналов) image020, между которыми пользователи перемещаются в произвольном порядке, значение имеет и то какие узлы они посетили и то в какой последовательности, а также их персональные особенности — предпочтения. Эта модель более полно описывает процесс привлечения аудитории.

non-Markov_process

Абстрактно формулу можно записать как

image010

Где

image012 вероятность совершить целевое действие,

image014 внутренние факторы, на которые мы не можем повлиять,

image016 историческая функция,

image018 вектор внешних факторов (воздействий), которыми мы управляем.

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

Чтобы применить метод обратного распространения, необходимо общую топологию сети с обратными связями и транзитивными передачами “растянуть” линейно. Это можно сделать зафиксировав точку отсчета — узлы конечных состояний, и раскладывая всю историю взаимодействия относительно них в обратном порядке: от последнего действия к предыдущему.

Для начала, давайте рассмотрим идентичных кейса с последовательностью шагов image007 один из которых привел к целевому действию (заказу), а второй не привел, и изобразим в виде графа. Цифры над стрелками — количество переходов, голубая стрелка — вход в систему с первым контактом в узле .

example_1

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

Добавим для этого третье “незавершенное” состояние, и опишем еще несколько кейсов: image025 и одношаговый image027. Диаграмма будет выглядеть так:

example_2

Как только для любого из незавершенных кейсов приходит информация о следующем шаге, он должен быть перемещен в другую ветку. Предположим что кейс image025 завершился заказом, а кейс image027 повторил касание и всё ещё не имеет результирующего шага, т.е. image030. Разница на иллюстрации — зелёным.

example_3

Любое добавление нового шага в цепочку кейса отражается вычитанием 1 из ребер графа предыдущей последовательности и добавлением 1 в ребра новой. Адресация производится от правого края. В кейсеimage033, декремент производится между image035, инкремент между image037. Т.о. отредактирован последний шаг кейса.

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

Полная топология немарковской цепи зависит количества узлов (каналов), и исследуемой глубины истории, и представляет собой нейронную сеть прямого распространения размерности image039 где N — число исследуемых слоёв, X — количество каналов. Отличия от классической модели: входы нейронной сети расположены внутри самой сети, а для первого слоя они складывается из двух слагаемых: непосредственно самого входа и остатка передаточной функции более ранних исторических слоёв, которые были отброшены.

Теоретически, могут существовать цепочки с большим и даже бесконечным числом касаний, однако, влияние глубокой истории на поведение пользователя в реальной жизни незначительно и существенное влияние (>99%) оказывают всего лишь 5-7 последних касаний. Также входящий трафик внутри модели будет подавляюще превосходить отброшенный. Хотя возможны вариации, и приемлемая глубина историчности должна рассчитываться индивидуально на основе допустимой погрешности.

full_non-Markov_process_model

Такая сеть описывается матрицей размерности image044.

Каждый элемент матрицы image046 на слое j описывается набором параметров:

  • Количество входящих внешних передач (голубые стрелки),
  • Количество входящих внутренних передач (черные и зеленые входящие стрелки),
  • Массивом исходящих передач (черные исходящие стрелки),
  • Польза элемента в данном слое
  • Затраты

Если декомпозировать, спецификация 1го узла выглядит так

image048

 

node_model

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

Представим, что мы собрали статистику по переходам, и у нас есть фактическое количество заказов и их стоимость в узле Orders: 100 заказов по 1$.

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

На примере это будет 1$*[50; 30; 10; 10]/100 = [50; 30; 10; 10].

calculation_1

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

calculation_2

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

Для двухслойной модели в примере у нас общая сумма была 100$ из них 10$ получены напрямую без касаний, 30$ получены односложными кейсами image053, 60$ были получены двухсложными image055.

Используя это правило, взвешенная ценность элементов будет

image057

image059

 

 

image061

 

 

image063

 

 

image065

 

 

image067

 

 

Контрольная сумма равна общей ценности:

image069

calculation_3

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

image072

image074

image076

image078

image080

image082

image084

Общий подход — численное решение системы линейных алгебраических уравнений, как это реализуется в классическом методе обратного распространения ошибки.

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

image086

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

x1 x2 x3
x1x2x3 20 30 40
x1x3x2 20 45 25
x2x1x3 40 10 40
x2x3x1 60 10 20
x3x1x2 40 45 5
x3x2x1 60 25 5
Sum 240 165 135
Shapley value(xi) 40 27,5 22,5

Таким образом, я предполагаю, что в частном случае нейронной сети прямого распространения есть связь между этими двумя алгоритмами. Однако, теоретически её обнаружить мне пока не удалось.

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

  1. Главное: метод не только распределяет веса в модели атрибуции но и дает информацию об оптимальном пути, т.е. ценности канала на конкретном этапе.
  2. На базе такого графа легко построить спагетти-диаграмму визуализирующую основные клиентские пути.
  3. Метод позволяет рассчитывать параметры модели онлайн, по ходу поступления данных.
  4. Вычислительная нагрузка суммарно меньше, ограничена сверху с учетом погрешности и распределяется во времени.
  5. Исключение или изменение одного канала позволяет использовать и далее статистику по незатронутым изменением цепочкам.

2 Отзывов по “Алгоритм расчета полной атрибуции”

  1. Иван 16.01.2021 в 23:11 #

    Когда большинство заказов на вашем сайте совершается не за одну сессию, то есть в цепочке перед транзакцией было два и более визита. Чтобы оценить взаимное влияние всех источников, нужно объединять данные из разных рекламных сервисов, Google Analytics, CRM и использовать более сложные модели атрибуции: Data-Driven в Google Analytics 360, Цепи Маркова, Вектор Шепли или кастомные алгоритмы. Но у этих решений также есть свои ограничения. Например, минимальный объем данных, необходимый для расчета, невозможность учитывать post-view конверсии и подключить данные из CRM, скрытая логика расчетов, сложное и дорогое внедрение и т. д.

  2. Софья 15.03.2021 в 02:33 #

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

Добавить комментарий