Як AI-медіамікс моделювання допомагає оптимізувати бюджет?
З відмовою від cookie-трекінгу та посиленням GDPR класична атрибуція за останнім кліком втратила актуальність. Media Mix Modeling (MMM) повертається як privacy-safe метод оцінки внеску кожного маркетингового каналу. Ми допомагаємо компаніям побудувати MMM-модель, яка враховує adstock (відкладений ефект), saturation (спадну віддачу) та мультиколінеарність. Наш досвід — 5+ років, 30+ реалізованих проєктів у ритейлі, фінтехі та e-commerce. В одному з проєктів для ритейлера ми знизили CPA на 18%, перерозподіливши бюджет з ТВ на digital на основі MMM. Економія бюджету зазвичай становить 15–25%, а в одному кейсі економія перевищила $300K на рік. За даними Nielsen, MMM може дати ROI у 3–5 разів вищий, ніж атрибуція за останнім кліком. Оцінимо ваш проєкт за 1–2 дні.
Media Mix Modeling: визначення та необхідність
MMM — економетричний підхід, де регресія (часто байєсівська) оцінює залежність продажів від рекламних витрат за каналами з урахуванням сезонності та зовнішніх факторів. Головна перевага — робота з агрегованими даними, без трекінгу користувачів. Але є складнощі: реклама діє не миттєво (carry-over) і зі спадною ефективністю (diminishing returns). Докладніше про Media Mix Modeling.
Чому adstock і saturation критичні для точності?
Adstock трансформація моделює відкладений ефект. Типові реалізації: геометричне зважування (один параметр затухання) та Weibull-розподіл (гнучка форма — пік може бути відкладеним). Без adstock модель недооцінює канали з довгим циклом (ТВ, радіо). Saturation описується Hill-функцією: spend^alpha / (gamma^alpha + spend^alpha). Параметр gamma — точка половинного насичення, alpha — крутість кривої. Без урахування saturation модель буде помилково рекомендувати нескінченні інвестиції в найефективніший канал.
Код для adstock трансформації:
def adstock_transform(spend_series, decay_rate=0.3, lag=None):
"""
Adstock: кожна точка = spend + decay × попередній adstock
decay_rate: 0 = немає пам'яті, 0.9 = довга пам'ять
"""
adstock = np.zeros(len(spend_series))
adstock[0] = spend_series[0]
for t in range(1, len(spend_series)):
adstock[t] = spend_series[t] + decay_rate * adstock[t-1]
return adstock
def weibull_adstock(spend, shape=2.0, scale=4.0, max_lag=13):
"""
Weibull PDF: гнучка форма розподілу відкладеного ефекту
shape < 1: спадний (миттєвий вплив)
shape > 1: delayed peak (реклама накопичується)
"""
pdf = scipy.stats.weibull_min.pdf(np.arange(max_lag), shape, scale=scale)
pdf = pdf / pdf.sum()
return np.convolve(spend, pdf, mode='full')[:len(spend)]
Як байєсівський MMM вирішує проблеми мультиколінеарності?
Класична лінійна регресія страждає від мультиколінеарності — коли канали скорельовані в часі (наприклад, ТВ і digital запускаються одночасно). Байєсівський підхід (PyMC, Stan) вирішує це через інформативні priors та регуляризацію. Байєсівська модель у 3 рази точніша за OLS при високій мультиколінеарності.
import pymc as pm
import numpy as np
with pm.Model() as mmm_model:
# Priors для параметрів кожного каналу
beta_tv = pm.HalfNormal('beta_tv', sigma=1.0)
beta_digital = pm.HalfNormal('beta_digital', sigma=1.0)
beta_search = pm.HalfNormal('beta_search', sigma=1.0)
# Decay priors (0-1)
decay_tv = pm.Beta('decay_tv', alpha=3, beta=3)
decay_digital = pm.Beta('decay_digital', alpha=2, beta=5)
# Saturation priors
gamma_tv = pm.HalfNormal('gamma_tv', sigma=0.5)
# Transformed media
tv_adstock = adstock_transform(tv_spend, decay_tv)
tv_saturated = hill_saturation(tv_adstock, gamma=gamma_tv)
# Baseline та тренди
trend = pm.Deterministic('trend', np.arange(len(y)))
seasonality = pm.Deterministic('seasonality', fourier_features(n_harmonics=4))
intercept = pm.Normal('intercept', mu=y.mean(), sigma=y.std())
# Модель
mu = (intercept +
beta_tv * tv_saturated +
beta_digital * digital_saturated +
beta_search * search_saturated +
trend_coef * trend +
seasonality_coefs @ seasonality)
sigma = pm.HalfNormal('sigma', sigma=y.std() * 0.2)
y_obs = pm.Normal('y_obs', mu=mu, sigma=sigma, observed=y)
trace = pm.sample(2000, tune=1000, target_accept=0.95)
Posterior розподіли дають довірчі інтервали для внеску кожного каналу, а не точкову оцінку. Це критично важливо при прийнятті рішень про перерозподіл бюджету.
Як оцінити ROI кожного каналу за допомогою MMM?
Після побудови моделі ми розраховуємо marginal ROI для кожного каналу: точка, де подальші інвестиції дають приріст менший за вартість. Наприклад, якщо marginal ROI ТВ дорівнює 1.2, а digital — 2.5, оптимальний перерозподіл очевидний. Байєсівський підхід дозволяє отримати розподіл marginal ROI, а не одну цифру, що знижує ризик помилкового рішення.
Процес побудови MMM: від даних до оптимізації бюджету
- Збір та агрегація даних (витрати, продажі, зовнішні фактори) — 1–2 тижні.
- Adstock і saturation трансформації — налаштування функціональних форм.
- Побудова байєсівської моделі — вибір priors, MCMC семплювання, діагностика збіжності (R-hat < 1.01).
- Валідація in-sample та out-of-sample — MAPE на холдауті < 10% вважається хорошим результатом.
- Калібрування через geo-експерименти — зміна бюджету в тестовому регіоні для верифікації ефектів.
- Оптимізація бюджету — максимізація сумарного lift при обмеженні бюджету (scipy.optimize).
Порівняння підходів
| Підхід | Переваги | Недоліки |
|---|---|---|
| OLS | Простота, інтерпретованість | Чутливий до мультиколінеарності, немає невизначеності |
| Байєсівський (PyMC) | Довірчі інтервали, стійкість, priors | Обчислювально затратніший, потребує налаштування priors |
| Robyn (Meta) | Автоматизація, пошук по сітці, Pareto-фронт | Менше гнучкості, замкнений фреймворк |
Ми використовуємо гібридний підхід: байєсівська модель для розуміння ефектів, Robyn — для швидкого сценарного аналізу.
Що входить у нашу послугу
- Аудит даних та підготовка (очищення, агрегація, обробка викидів).
- Побудова байєсівської MMM-моделі з кастомізацією під бізнес-контекст.
- Інтеграція Robyn для автоматизованого підбору гіперпараметрів.
- Оптимізація бюджету з розрахунком маржинального ROI (точка, де ROI = 1).
- Візуалізація внесків та сценаріїв (shiny/dash дашборд).
- Документація моделі та навчання команди (2–3 воркшопи).
- Підтримка при geo-експериментах та рекалібруванні (3 місяці після впровадження).
Терміни та етапи впровадження
| Етап | Тривалість |
|---|---|
| Аналітика даних та налаштування adstock/saturation | 2–3 тижні |
| Байєсівська модель та валідація | 2–3 тижні |
| Бюджетний оптимізатор та дашборд | 1–2 тижні |
| Geo-калібрування та фінальний звіт | 2–4 тижні |
| Разом: базове рішення | 4–6 тижнів |
| Повний цикл (з Robyn та експериментами) | 2–3 місяці |
Чому клієнти обирають нас
- Досвід: команда з 5+ річним стажем у MMM, 30+ проєктів у ритейлі та фінтехі.
- Технології: PyMC, Robyn, байєсівські priors від бізнесу — не чорна скринька.
- Гарантія: MAPE на холдауті < 10% або доопрацювання за наш рахунок.
- Підтримка: навчання команди, документація, допомога в geo-експериментах.
Зв'яжіться з нами для безкоштовної оцінки вашого проєкту. Ми підготуємо комерційну пропозицію та roadmap за 2 дні. Замовте консультацію та отримайте аналіз ваших даних протягом одного робочого дня.







