PyMC-Marketing en v1.0

En résumé, PyMC-Marketing offre la puissance bayésienne, ainsi que tous ces avantages, à la modélisation marketing. Plus particulièrement, le package permet d’obtenir la distribution complète de probabilité associée aux résultats, contrairement aux outils classiques, qui eux fournissent uniquement des estimations « point-estimate ». Tout ceci avec une grande flexibilité et une grande communauté active.

Les 5 piliers du Package

  1. Marketing Mix Modeling (MMM)
    • Pour modéliser l’impact de chaque canal marketing sur les ventes, afin d’optimiser l’allocation budgétaire
  2. Customer Lifetime Value (CLV)
    • Pour quantifier la valeur à vie de vos clients, i.e. la prévision des revenus futures pour chaque segment de clients
  3. Customer Choice Analysis (CSA)
    • Pour analyser les préférences clients
  4. Bass Diffusion Model
    • Pour comprendre l’adoption de votre produit dans le marché
  5. Predicted Incrementality by Experimentation
    • Pour mesurer l’impact causal de vos campagnes, grâce à l’analyse d’expérimentations et A/B testing

Un exemple Pratique de MMM avec PyMC-Marketing

Ci-dessous un exemple pour lancer un MMM sur des données fictives:

import numpy as np
import pandas as pd
from pymc_marketing.mmm import ( MMM, GeometricAdstock, LogisticSaturation)

# ---------------------------------------------------------------------
# 1. Génération des données
# ---------------------------------------------------------------------
# Des données example ont été générées avec :
#   - date_week: la date au format YYYY-MM-DD
#   - channel_1 et 2: une mesure de deux channel marketing
#   - event_1 et 2: les boolééens indiquant les évènements liés aux channels
#   - dayofyear: le jour de l'année entre 1 et 365
#   - t: un index incremental pour chaque ligne


# ---------------------------------------------------------------------
# 2. Définition des transformations
# ---------------------------------------------------------------------
# Adstock géométrique :
#   - alpha contrôle la persistance de l'effet
#   - l_max indique le nombre maximal de semaines de retard

adstock = GeometricAdstock(l_max=8, normalize=True)

# LogisticSaturation :
#   - modélise les rendements décroissants
#   - ses paramètres sont estimés par le modèle
saturation = LogisticSaturation()

# ---------------------------------------------------------------------
# 3. Définition du Media Mix Model
# ---------------------------------------------------------------------
mmm = MMM(
    date_column=date_column,
    channel_columns=channel_columns,
    target_column=target_column,
    adstock=adstock,
    saturation=saturation,

    # Optionnel : variables de contrôle
    # control_columns=["price", "promotion", "holiday"],

    # Optionnel : saisonnalité annuelle
    yearly_seasonality=2,

    # Appliquer d'abord l'adstock puis la saturation
    adstock_first=True,

    # Configuration du sampler
    sampler_config={
        "progressbar": True,
    },
)

# ---------------------------------------------------------------------
# 4. Inférence bayésienne avec NUTS
# ---------------------------------------------------------------------
fit_result = mmm.fit(X=X, y=y, tune=500, draws=500)

Bien que le code soit relativement sommaire, le modèle généré est bel et bien complexe et aurait nécessité de nombreuses lignes de codes avec PyMC, comme le montre l’image ci-dessous:

Le modèle, une fois ajusté, permet d’analyser les contributions des différentes channels et variables de contrôle (non incluses dans l’exemple), un aperçu est fourni dans le graphique ci-dessous:

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *