Як 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 дні. Замовте консультацію та отримайте аналіз ваших даних протягом одного робочого дня.







