Моделирование байесовского маркетингового микса получает всё больше внимания
Фото от Павела Червински на Unsplash.
Моделирование маркетингового микса с использованием байесовских методов привлекает всё больше внимания, особенно с недавним выпуском инструментов с открытым исходным кодом, таких как LightweightMMM (Google) или PyMC Marketing (PyMC Labs). Хотя эти фреймворки упрощают сложности байесовского моделирования, всё ещё крайне важно для пользователя понимать фундаментальные байесовские концепции и уметь интерпретировать спецификацию модели.
В этой статье я использую Google’s LightweightMMM в качестве практического примера и показываю интуицию и смысл предварительных спецификаций этого фреймворка. Я демонстрирую моделирование предварительных образцов с помощью Python и библиотеки scipy.
Данные
Я использую данные, предоставленные Robyn под лицензией MIT.
Набор данных состоит из 208 недель выручки (с 2015–11–23 по 2019–11–11) и включает:
- 5 каналов расходов на медиа: tv_S, ooh_S, print_S, VK_S, search_S;
- 2 канала медиа, которые также имеют информацию об экспозиции (Impression, Clicks): VK_I, search_clicks_P;
- Органические медиа без расходов: newsletter;
- Контрольные переменные: events, holidays, продажи конкурентов (competitor_sales_B).
Спецификация модели LightweightMMM
Спецификация модели LightweightMMM определяется следующим образом:
Эта спецификация представляет аддитивную линейную регрессионную модель, которая объясняет значение отклика (целевой переменной) в определённый момент времени t.
Давайте разберём каждый компонент в уравнении:
- α: этот компонент представляет точку пересечения или базовое значение отклика. Это ожидаемое значение отклика, когда все остальные факторы равны нулю.
- trend: этот компонент отражает увеличивающийся или уменьшающийся тренд отклика с течением времени.
- seasonality: этот компонент представляет периодические колебания отклика.
- media_channels: этот компонент учитывает влияние каналов медиа (телевидение, радио, онлайн-реклама) на отклик.
- other_factors: этот компонент включает любые другие переменные, которые влияют на отклик, такие как погода, экономические показатели или активность конкурентов.
Ниже я подробно рассматриваю каждый из компонентов и объясняю, как интерпретировать предварительные спецификации. Напомню, что предварительное распределение — это предполагаемое распределение некоторого параметра без каких-либо знаний об исходных данных.
Перехват
Предварительная спецификация перехвата определена как полунормальное распределение со стандартным отклонением 2. Полунормальное распределение — это непрерывное распределение вероятностей, которое напоминает нормальное распределение, но ограничено только положительными значениями. Распределение характеризуется одним параметром — стандартным отклонением (масштабом). Полунормальное распределение подразумевает, что перехват может принимать только положительные значения.
Следующий код генерирует выборки из предварительного распределения перехвата и визуализирует функцию плотности вероятности (PDF) для полунормального распределения с масштабом 2. Для визуализации других компонентов, пожалуйста, обратитесь к сопровождающему исходному коду в репозитории Github.
from scipy import stats
scale = 2
halfnormal_dist = stats.halfnorm(scale=scale)
samples = halfnormal_dist.rvs(size=1000)
plt.figure(figsize=(20, 6))
sns.histplot(samples, bins=50, kde=False, stat='density', alpha=0.5)
sns.lineplot(x=np.linspace(0, 6, 100),
y=halfnormal_dist.pdf(np.linspace(0, 6, 100)), color='r')
plt.title(f"Half-Normal Distribution with scale={scale}")
plt.xlabel('x')
plt.ylabel('P(X=x)')
plt.show()
Тренд
Спецификация тренда определена как степенная зависимость между временем t и значением тренда. Параметр μ представляет амплитуду или величину тренда, а k контролирует крутизну или кривизну тренда.
Параметр μ извлекается из нормального распределения со средним значением 0 и стандартным отклонением 1. Это означает, что μ следует стандартному нормальному распределению, центрированному вокруг 0, со стандартным отклонением 1. Нормальное распределение допускает положительные и отрицательные значения μ, представляющие восходящие и нисходящие тренды соответственно.
Параметр k извлекается из равномерного распределения между 0,5 и 1,5. Равномерное распределение гарантирует, что k принимает значения, которые приводят к разумной и значимой кривизне тренда.
Сезонность
Каждый компонент γ извлекается из нормального распределения со средним значением 0 и стандартным отклонением 1.
Комбинируя косинусную и синусоидальную функции с разными γ, можно смоделировать циклические закономерности для учёта сезонности, присутствующей в данных. Косинусная и синусоидальная функции представляют колебательное поведение, наблюдаемое в течение периода в 52 единицы (недели).
Другие факторы (контрольные переменные)
Каждый коэффициент фактора λ извлекается из нормального распределения со средним значением 0 и стандартным отклонением 1, что означает, что λ может принимать положительные или отрицательные значения, представляющие направление и величину влияния каждого фактора на результат.
Каналы медиа
Распределение для коэффициента β канала медиа m задано как полунормальное распределение, где параметр стандартного отклонения v определяется суммой общих затрат, связанных с каналом медиа m. Общие затраты отражают инвестиции или ресурсы, выделенные на этот конкретный канал медиа.
Трансформации медиа
В этих уравнениях мы моделируем поведение каналов медиа с помощью серии преобразований, таких как adstock и насыщение Хилла.
Моделирование маркетингового микса с использованием PyMC3
Переменная каналы медиа представляет преобразованные каналы медиа в момент времени t. Она получается путём применения преобразования к исходному значению канала медиа x. Преобразование Хилла контролируется параметрами K — точкой половинного насыщения (0 < k ≤ 1) и формой S, контролирующей крутизну кривой (s > 0).
Переменная x ∗ представляет значение преобразованных каналов медиа в момент времени t после прохождения преобразования adstock. Оно рассчитывается путём сложения текущего исходного значения канала медиа с произведением предыдущего преобразованного значения и параметра затухания adstock λ.
Параметры K и S следуют гамма-распределениям с формой и масштабными параметрами, равными 1, а λ следует бета-распределению с формой параметров 2 и 1.
Заключение
Моделирование байесовского маркетингового микса может потребовать значительного времени для освоения. Я надеюсь, что эта статья помогла вам улучшить понимание предварительных распределений и байесовских спецификаций маркетинговых моделей.
Полный код можно скачать из моего репозитория на Github.
Спасибо за чтение!
