Wenn Sie das Modell ausführen, fügen Sie die Modellspezifikation hinzu und führen dann die Befehle aus, um Stichproben aus der Prior- und Posterior-Verteilung zu ziehen.
Markow-Chain-Monte-Carlo-Algorithmen (MCMC) werden verwendet, um Stichproben aus der Posterior-Verteilung zu ziehen. Meridian verwendet die No-U-Turn-Methode zur Stichprobenerhebung mit Schrittgröße und Kernel-Adaptation.
So führen Sie das Modell aus:
Fügen Sie die Modellspezifikation hinzu.
Beispiel:
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, ) ```Führen Sie die folgenden Befehle aus, um Stichproben aus der Prior- und Posterior-Verteilung zu ziehen. Konfigurieren Sie die Parameter nach Bedarf:
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)Parameter Beschreibung n_chainsDie Anzahl der Ketten, die parallel gezogen werden sollen. Um die Arbeitsspeicherauslastung zu reduzieren, können Sie eine Liste von Ganzzahlen verwenden, um sequenzielle Aufrufe für die MCMC-Stichprobenerhebung zu ermöglichen. Bei einer Liste entspricht jedes Element in der Sequenz dem n_chains-Argument für einen Aufruf vonwindowed_adaptive_nuts.n_adaptDie Anzahl der MCMC-Ziehungen pro Kette, bei denen Schrittweite und Kernel angepasst werden. Diese Ziehungen sind immer ausgeschlossen. n_burninEine zusätzliche Anzahl von MCMC-Ziehungen pro Kette, die ausgeschlossen werden sollen, nachdem Schrittweite und Kernel festgelegt wurden. Diese zusätzlichen Ziehungen können erforderlich sein, um sicherzustellen, dass alle Ketten die stationäre Verteilung erreichen, nachdem die Adaption abgeschlossen ist. In der Praxis stellen wir jedoch oft fest, dass die Ketten die stationäre Verteilung bereits während der Adaption erreichen und dass n_burnin=0ausreicht.n_keepDie Anzahl der MCMC-Ziehungen pro Kette, die für die Modellanalyse und die Ergebnisse beibehalten werden sollen. (Optional) Dünnen Sie die Posterior-Verteilung aus, um schnellere Iterationen zu ermöglichen.
Wenn Sie nachgelagerte Aufgaben während iterativer Workflows beschleunigen möchten (z. B. das Erstellen vorläufiger Berichte zu Modellergebnissen oder das Bewerten mehrerer Szenarien zur Budgetoptimierung), können Sie die Posterior-Ziehungen mit
posterior_thinning()herunterskalieren. Hierbei wird eine kettenübergreifende Teilmenge von Posterior-Ziehungen aus jeder MCMC-Kette so ausgewählt, dass die Kettenstruktur erhalten bleibt. Durch dieses systematische Sampling wird die Autokorrelation minimiert:# 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)Wenn
preserve_original=Truefestgelegt ist, können Sie die vollständige Posterior-Verteilung jederzeit vor der endgültigen Bereitstellung wiederherstellen:mmm.restore_full_posterior()Parameter Beschreibung sampling_rateDer Anteil der Ziehungen, die pro Kette in (0, 1]beibehalten werden sollen. Empfohlen:0.15(15 %) für explorative Workflows. Es muss genau eines vonsampling_rateundn_drawsangegeben werden.n_drawsDie Anzahl der Ziehungen, die pro Kette in [1, original_n_draws]beibehalten werden sollen. Es muss genau eines vonsampling_rateundn_drawsangegeben werden.methodDie Auswahlmethode für die Ziehung. Unterstützt ThinningMethod.SYSTEMATIC(Standard).seedEin optionaler ganzzahliger Zufalls-Seed für eine reproduzierbare Ziehungsauswahl. preserve_originalEin boolesches Flag (Standard: True). FallsTrue, wird eine Kopie der vollständigen Posterior-Verteilung gespeichert, damitrestore_full_posterior()sie wiederherstellen kann.
Führen Sie als Nächstes Diagnosen für die Modellierung aus, um die Konvergenz zu bewerten, die Verteilungen zu prüfen und die Modellanpassung zu beurteilen.