Это статья для вас.

Давайте разберемся с вещами на примере.

Давайте проследим путь пользователя по имени Ник. Ник отправился в путешествие в Гималаи, и во время путешествия ему очень понравился фотоаппарат своего друга. Он думает купить его в будущем для своих приключенческих поездок, но неуверенный в надежности бренда, он прочитал некоторые обзоры брендов на Quora. Затем он переходит к жизни (Netflix & Chill!).

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

Буквально через неделю он читал блог о путешествиях на своем любимом веб-сайте. Он снова увидел рекламу камеры и сразу же заинтриговался ее покупкой. Сделал покупку на 500 долларов.

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

Именно здесь на помощь приходит распределение бюджета и атрибуция.

Распределение бюджета и моделирование атрибуции

У маркетинговой команды есть определенный бюджет, который она может распределить по различным маркетинговым каналам и рекламным кампаниям. Они могут использовать различные каналы для маркетинга, такие как телевидение, радио, печать, Интернет (Facebook, Google, Instagram), и могут создавать несколько маркетинговых кампаний, предлагающих скидки и рекламные акции, каждая для разных целей или для разной аудитории. Цель (привлечение потенциальных клиентов, увеличение дохода или привлечение новых клиентов и т. Д.) Определяет, на каком типе кампании или канала им следует сосредоточиться.

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

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

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

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

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

Моделирование атрибуции одним и несколькими касаниями

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

  1. Атрибуция последнего касания (LTA):

Это модель по умолчанию во многих инструментах маркетинговой аналитики. Атрибуция по последнему касанию дает 100% -ную оценку конверсии последней точке взаимодействия, которой может быть канал или маркетинговая кампания. В нашем примере с Ником эта модель дает 100% -ную атрибуцию объявления в блоге о путешествиях.

Хотя это хорошая модель для начала, она игнорирует влияние других точек соприкосновения на пользователя.

Фрагмент кода реализации в Python

Если у нас есть информация о кликах пользователей в их путешествии, такая как количество кликов до конверсии, и информация о каждой точке касания, например информация о времени, мы можем построить модель LTA, как показано ниже:

df_attribution = df_attribution[df_attribution[‘conversion’] == 1]
df_attribution[‘last_click’] = df_attribution.conversion * (df_attribution.click_position == df_attribution.total_clicks).astype(int)
LTA = channel_conversions / channel_impressions

где channel_impressions - это общее количество показов для всех пользователей канала или кампании.

Мы просто должны отдать должное, когда позиция клика пользователя равна последнему клику. Легкий?!

2. Атрибуция по первому касанию (FTA):

Модель атрибуции по первому прикосновению дает все преимущества первой точке взаимодействия на пути пользователя. В нашем примере 100% конверсия будет отдана Facebook.

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

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

Фрагмент кода Python

df_attribution = df_attribution[df_attribution[‘conversion’] == 1]
df_attribution[‘first_click’] = df_attribution.conversion * (df_attribution.click_position == 1).astype(int)
LTA = channel_conversions / channel_impressions

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

Теперь давайте рассмотрим некоторые модели атрибуции с несколькими касаниями -

3. Модель линейной атрибуции:

В отличие от моделей Single-Touch, здесь мы назначаем атрибуцию нескольким каналам / кампаниям, которые могут лучше моделировать реальные маркетинговые сценарии.

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

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

Фрагмент кода Python

df_attribution = df_attribution[df_attribution[‘conversion’] == 1]
df_attribution[‘linear’] = df_attribution.conversion / (df_attribution.total_clicks).astype(float)
Linear_at = channel_conversions / channel_impressions

4. U-образная модель атрибуции:

Это подход, основанный на позиции, при котором 40% конверсии предоставляется первой и последней маркетинговым точкам взаимодействия, а оставшиеся 20% равномерно распределяются между промежуточными точками взаимодействия.

Если у нас есть только 2 точки соприкосновения в путешествии, это будет то же самое, что и линейное, где дается равная ценность 50% для обоих.

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

Фрагмент кода Python

def calc_attribution(click_pos,click_nb):
 default_att = 0.5
 extreme_touch_att = 0.4
 intermed_att = 0.2
if(total_clicks == 2):
 return default_att
 else:
 if(click_pos == total_clicks or click_pos ==0):
 return extreme_touch_att
 else:
 return intermed_att/(total_clicks-2)
df_attribution[‘U_Shape’] = df_attribution.apply(lambda val: calc_attribution(val.click_pos,val.total_clicks),axis=1)

5. Атрибуция временного спада:

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

2^-(X/half life)
where X is the time out from the conversion day
X = Conversion day - Click day
half-life = 7 (This can be calculated for different business needs. Usually it’s assumed to be 7 for online platforms), the half-life is the time that passes before half of the individuals will act upon an activity

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

Фрагмент кода Python

def calc_attribution(conversion_day,click_day):
 rel_pos = conversion_day — click_day
 attribution = pow(2, -(rel_pos/7)) # using formulae 2^-x/7
 return attribution
 
 def TimeDecay_Attr_Value(df_attribution):
 df_attribution[‘TimeDecay’] = df_attribution.apply(lambda val: calc_attribution(val.conversion_day,val.day),axis=1)
 return df_attribution
 
 def Normalised_TimeDecay(journey_id, Time_Decay):
 attr_sum = df_TDecay_Sum[df_TDecay_Sum.jid == journey_id][‘TDsum’]
 return Time_Decay / attr_sum
df_attribution = TimeDecay_Attr_Value(df_attribution) 
 
 df_TDecay_Sum = df_attribution.groupby([‘joruneyId’])[‘TimeDecay’].sum().reset_index(name=”TDsum”)
 df_attribution= df_attribution.merge(df_TDecay_Sum, on=’journeyId’, how=’left’)
 df_attribution[‘TimeDecay_Norm’] = df_attribution.TimeDecay / df_attribution.TDsum
 df_attribution.apply(lambda val: Normalised_TimeDecay(val.jid,val.TimeDecay),axis=1)

Давайте сравним веса для LTA и Time Decay -]

Пользовательские модели и модели на основе данных (атрибуция машинного обучения)

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

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

  1. Распад на основе позиции:

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

Это дает более высокую оценку точкам, которые ближе всего к конверсии.

Фрагмент кода Python

def calc_attribution(click_pos,click_nb):
 rel_pos = total_clicks - click_pos
 attribution = pow(2, -(rel_pos)) 
 return attribution
 
 df_attribution[‘TimeDecay’] = df_attribution.apply(lambda val: calc_attribution(val.click_pos,val.total_clicks),axis=1)

Давайте посмотрим, как это соотносится с моделью Time Decay -

2. Атрибуция на основе режима:

Это довольно простой метод, с помощью которого вы можете рассчитать режим (наиболее частый) каждого пути пользователя и назначить 100% баллов в случае, если режим является одним каналом, и равномерно разделить баллы, если режим является несколькими каналами.

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

Реализация этого - задача для вас увидеть то, что вы уже узнали. Если вообще (надеюсь!)

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

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

Моделирование рентабельности инвестиций.

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

Следите за обновлениями статьи о моделировании Deep Learning. До следующего раза, продолжайте учиться!