Exécuter le modèle

Lorsque vous exécutez le modèle, vous ajoutez la spécification de votre modèle, puis exécutez les commandes pour échantillonner la distribution a priori et la distribution a posteriori.

Les algorithmes de la méthode de Monte-Carlo par chaînes de Markov (MCMC, Markov Chain Monte Carlo) sont utilisés pour échantillonner à partir de la distribution a posteriori. Meridian utilise la méthode d'échantillonnage No-U-Turn avec une taille de pas et une adaptation du kernel.

Pour exécuter le modèle :

  1. Ajoutez les caractéristiques de votre modèle.

    Exemple :

     model_spec = spec.ModelSpec(
         prior=prior_distribution.PriorDistribution(),
         media_effects_dist='log_normal',
         hill_before_adstock=False,
         max_lag=8,
         unique_sigma_for_each_geo=False,
         media_prior_type='roi',
         roi_calibration_period=None,
         rf_prior_type='coefficient',
         rf_roi_calibration_period=None,
         organic_media_prior_type='contribution',
         organic_rf_prior_type='contribution',
         non_media_treatments_prior_type='contribution',
         knots=None,
         baseline_geo=None,
         holdout_id=None,
         control_population_scaling_id=None,
         adstock_decay_spec='geometric',
         enable_aks=False,
     )
     ```
    
  2. Exécutez les commandes suivantes pour échantillonner à partir de la distribution a priori et a posteriori. Configurez les paramètres nécessaires :

    mmm = model.Meridian(input_data=data, model_spec=model_spec)
    mmm.sample_prior(500)
    mmm.sample_posterior(n_chains=7, n_adapt=1000, n_burnin=500, n_keep=1000)
    
    Paramètre Description
    n_chains Nombre de chaînes à échantillonner en parallèle. Pour réduire la consommation de mémoire, vous pouvez utiliser une liste d'entiers afin de permettre des appels d'échantillonnage MCMC séquentiels. Pour une liste donnée, chaque élément de la séquence correspond à l'argument n_chains d'un appel à windowed_adaptive_nuts.
    n_adapt Nombre de tirages MCMC par chaîne, au cours desquels la taille de pas et le kernel sont adaptés. Ces tirages sont toujours exclus.
    n_burnin Nombre supplémentaire de tirages MCMC, par chaîne, à exclure une fois la taille de pas et le kernel corrigés. Ces tirages supplémentaires peuvent être nécessaires pour s'assurer que toutes les chaînes atteignent la distribution stationnaire une fois l'adaptation terminée. Toutefois, en pratique, nous constatons souvent que les chaînes atteignent la distribution stationnaire pendant l'adaptation et que n_burnin=0 est suffisant.
    n_keep Nombre de tirages MCMC, par chaîne, à conserver pour l'analyse et les résultats du modèle.
  3. (Facultatif) Réduisez la distribution a posteriori pour des itérations plus rapides.

    Pour accélérer les tâches en aval lors des workflows itératifs (comme la génération de rapports préliminaires sur les résultats du modèle ou l'évaluation de plusieurs scénarios d'optimisation du budget), vous pouvez sous-échantillonner les tirages a posteriori à l'aide de la fonction posterior_thinning(). Cette fonction sélectionne un sous-ensemble de tirages a posteriori préservant la chaîne dans chaque chaîne MCMC à l'aide d'un échantillonnage systématique pour réduire au maximum l'autocorrélation :

    # Recommended: 15% sampling rate balances fast iteration with
    # near-approximate inference
    mmm.posterior_thinning(sampling_rate=0.15, preserve_original=True)
    
    # Alternatively, specify the exact number of draws to keep per chain
    # mmm.posterior_thinning(n_draws=150, preserve_original=True)
    

    Si preserve_original=True est défini, vous pouvez restaurer l'intégralité de la distribution a posteriori à tout moment avant la livraison finale :

    mmm.restore_full_posterior()
    
    Paramètre Description
    sampling_rate Proportion de tirages à conserver par chaîne dans (0, 1]. Recommandé : 0.15 (15 %) pour les workflows exploratoires. Vous devez spécifier soit sampling_rate, soit n_draws.
    n_draws Nombre de tirages à conserver par chaîne dans [1, original_n_draws]. Vous devez spécifier soit sampling_rate, soit n_draws.
    method Méthode de sélection des tirages. Valeur acceptée : ThinningMethod.SYSTEMATIC (par défaut).
    seed Entier facultatif de départ aléatoire pour une sélection de tirages reproductible.
    preserve_original Indicateur booléen (True par défaut). Si la valeur est True, une copie de l'intégralité de la distribution a posteriori est enregistrée afin que restore_full_posterior() puisse la restaurer.

Exécutez ensuite des diagnostics de modélisation pour déterminer la convergence, vérifier les distributions et évaluer l'ajustement du modèle.