MCMC-Konvergenz erreichen
Eine fehlende Konvergenz ist in der Regel auf eine der folgenden Ursachen zurückzuführen:
- Das Modell ist nicht gut auf die Daten zugeschnitten. Das Problem kann im Likelihood-Teil (der Modellspezifikation) oder im Prior-Teil vorliegen.
-
Die Argumente
n_adapt + n_burnin
odern_keep
in der FunktionMeridian.sample_posterior
sind nicht groß genug.
Probieren Sie die folgenden Empfehlungen in dieser Reihenfolge aus, damit Ihre Ketten konvergieren können:
- Beurteilen Sie die Identifizierbarkeit oder schwache Identifizierbarkeit anhand der nachstehenden Fragen:
-
Sind die
media
- odercontrols
-Variablen multikollinear? -
Ist die Variation bei Ihrer
media
- odercontrols
-Variablen so gering, dass es schwierig ist, ihren Effekt zu schätzen? -
Ist eine der
media
- odercontrols
-Variablen stark mit der Zeit korreliert oder stimmt sogar perfekt mit der Zeit überein? Weitere Informationen finden Sie unter Wann Sieknots < n_times
verwenden müssen. -
Ist eine der
media
-Variablen ziemlich dünnbesetzt? Eine dünne Besetzung kann bedeuten, dass innerhalb eines Channels nur sehr wenig Aktivitäten vorhanden sind, es zu viele geografische Einheiten ohne jegliche Aktivitäten gibt oder es zu viele Zeiträume ohne jegliche Media-Aktivitäten gibt (insbesondere, wenn die Anzahl derknots
nahe ann_times
liegt). - Überdenken Sie die Priors. Priors mit einer sehr geringen Informativität erschweren oft die Konvergenz. Das passiert in bestimmten Fällen jedoch auch bei stark informativen Priors.
- Wenn Ihr KPI „Umsatz“ ist oder Daten zum Umsatz pro KPI verfügbar sind, finden Sie Empfehlungen für kostenpflichtige Media-Channels im Hilfeartikel ROI-Priors und ‑Abstimmung.
- Falls Sie keine Umsatzdaten haben, lesen Sie die Empfehlungen für kostenpflichtige Media-Channels im Hilfeartikel Benutzerdefinierte Priors festlegen, wenn das Ergebnis nicht „Umsatz“ ist. Wenn Sie den Mittelwert und/oder die Standardabweichung des Priors für den Gesamtbeitrag von Media reduzieren, kann dies zu einer ausreichenden Regularisierung beitragen.
-
Passen Sie die Modellierungsoptionen an. Versuchen Sie insbesondere, das
knots
-Argument vonModelSpec
zu verringern. Weitere Modellierungsoptionen, die Sie anpassen können, sindunique_sigma_for_each_geo
undmedia_effects_dist
vonModelSpec
. -
Prüfen Sie, ob ein Datenfehler vorliegt, z. B. ob die Reihenfolge von
population
nicht mit der vonmedia
für geografische Einheiten übereinstimmt. Das Meridian-Modell geht von einer geografischen Hierarchie bei Media- und Kontrolleffekten aus. Wenn diese Annahme nicht auf Ihre Daten zutrifft, können Sie diese Parameter weiter regularisieren, indem Sie die Priors für Parameter festlegen, die die hierarchische Varianz messen (eta_m
undxi_c
), z. B.HalfNormal(0.1)
. Sie können die Annahme der geografischen Hierarchie auch mit einemDeterministic(0)
-Prior deaktivieren. - Prüfen Sie, ob Sie genügend Daten haben. Weitere Informationen finden Sie unter Erforderliche Datenmenge.
Wenn der Posterior gleich dem Prior ist
Wenn das Modell viele Variablen untersuchen muss, sind mehr Daten erforderlich, um eine bestimmte Variable richtig zu analysieren. Beim Marketing Mix Modeling (MMM) wird in der Regel versucht, ohne viele Datenpunkte Rückschlüsse auf viele Variablen zu ziehen, insbesondere bei einem länderbezogenen Modell. Das bedeutet, dass es Situationen geben kann, in denen die Daten für einen bestimmten Media-Channel nur wenige Informationen liefern. Dies kann sich noch verschlimmern, wenn für einen bestimmten Channel entweder nur geringe Ausgaben, eine sehr geringe Varianz bei der skalierten Media-Ausführung oder eine hohe Korrelation der skalierten Media-Ausführung zwischen den Channels vorliegen. Weitere Informationen zu Datenmengen finden Sie unter Erforderliche Datenmenge. Weitere Informationen zu Channels mit niedrigen Ausgaben
Mithilfe von weniger informativen Priors lassen sich die Unterschiede zwischen Priors und Posteriors verstärken. Zur Wiederholung: Der Prior ist eine Schätzung eines Parameters, bevor die Daten berücksichtigt werden, und der Posterior eine Schätzung eines Parameters nach der Berücksichtigung der Daten. Wenn die Daten nur wenige Informationen enthalten, fallen die Daten für beide ähnlich aus. Dies gilt insbesondere, wenn der Prior relativ informativ ist. Relativ bezieht sich auf die Informationen im Prior im Vergleich zu den Informationen in den Daten. Falls Sie einen nicht informativen Prior wählen, können die Daten also einen größeren Einfluss auf das Ergebnis haben. Wenn der Prior nicht informativ ist und auch die Daten wenig Informationen enthalten, dann führt dies zu einem Posterior, der sehr breit ist, was ein Zeichen für hohe Unsicherheit ist.
Um die Dinge zu vereinfachen, können Sie realistische Priors für Parameter wie den ROI festlegen. Sie müssen sich nicht zu viele Gedanken über die relative Informativität der Priors machen, wenn Sie vernünftige Priors festlegen, an die Sie glauben. Wenn die Daten wenig oder gar keine Informationen enthalten, ist es aus einer bayesschen Perspektive sinnvoll, dass der Prior und der Posterior ähnlich sind. Enthalten die Daten viele Informationen, ist zu erwarten, dass sich der Prior entsprechend ändert.
Channels mit niedrigen Ausgaben
Bei Channels mit niedrigen Ausgaben ist es besonders wahrscheinlich, dass der ROI-Posterior dem ROI-Prior ähnelt. Für jeden Channel gibt es einen Bereich von ROI-Werten, der den Daten ziemlich gut entspricht. Wenn dieser Bereich relativ breit ist und die meisten Werte abdeckt, die in der ursprünglichen Schätzung der ROI-Werte (Prior) als wahrscheinlich erachtet wurden, fällt der Posterior ähnlich dem Prior aus. Der Bereich der angemessenen ROI-Werte für einen Channel mit geringen Ausgaben ist in der Regel viel größer als der für einen Channel mit hohen Ausgaben, da bei Channels mit geringen Ausgaben ein sehr hoher ROI erforderlich ist, um einen signifikanten Einfluss auf die Anpassung des Modells zu haben. Bei einem breiten Bereich an möglichen ROI-Werten ist die Wahrscheinlichkeit höher, dass die Daten gut dargestellt werden.
Die Auswirkungen von Media werden anhand des angegebenen Media-Messwerts modelliert, z. B. Impressionen und Klicks. Weder die Größe des verwendeten Messwerts noch das Niveau der Ausgaben haben Auswirkungen auf die Anpassung des Modells oder den Bereich des inkrementellen Ergebnisses, das dem Channel vernünftigerweise zugeschrieben werden kann. Der ROI ist definiert als inkrementelles Ergebnis geteilt durch die Ausgaben. Wenn also der Bereich der angemessenen Werte für das inkrementelle Ergebnis in einen Bereich von ROI-Werten umgerechnet wird, kann ein Channel mit höheren Ausgaben tendenziell eine engere Bandbreite an ROI-Werten aufweisen, die gut zu den Daten passen.
Hinweis: Bei der Anwendung der Methode der gewöhnlichen kleinsten Quadrate (ordinary least squares regression, OLS-Regression) hat die Skalierung der unabhängigen Variablen (Kovariaten) keinen Einfluss auf die Anpassung des Modells. Die Skalierung kann in einer bayesschen Regression wichtig sein, da sie die Priors der Koeffizienten beeinflussen kann. Meridian wendet jedoch eine Skalierungstransformation auf jeden Media-Messwert an. Wenn Sie die Impressionen eines Channels beispielsweise um den Faktor 100 skalieren, hat das keine Auswirkungen auf die Anpassung des Modells von Meridian.
Wenn sich die ROI-Ergebnisse je nach verwendetem Prior stark unterscheiden
Die ROI-Ergebnisse können sich stark unterscheiden, je nachdem, ob ROI-Standard-Priors oder Beta-Standard-Priors im Einsatz sind.
Die Verwendung von ROI-Standard-Priors oder Beta-Standard-Priors kann sich aus folgenden Gründen auf die ROI-Ergebnisse auswirken:
- Wenn ROI-Standard-Priors verwendet werden, wird der Posterior-ROI für jeden Media-Channel entsprechend den unterschiedlichen Verteilungen der Priors regularisiert. Das ist gut, weil jeder Channel gleich behandelt wird.
- Wenn die Media-Koeffizienten (Beta) mit Standard-Priors behandelt werden, wird der Posterior-ROI der einzelnen Media-Channels für unterschiedliche Verteilungen regularisiert. Das liegt daran, dass die Skalierung der Media-Daten nicht mit der Skalierung übereinstimmt, die für alle Channels verwendet wird. Derselbe Betawert führt also zu unterschiedlichen ROIs für die einzelnen Channels. Die Standard-Priors für die Media-Koeffizienten sind auch im Vergleich zu den Standard-Priors für den ROI nicht informativ, um potenziell große Unterschiede in der Skalierung der Media-Daten über die verschiedenen Channels hinweg zu berücksichtigen.
- Wenn die Daten nur wenige Informationen enthalten, fallen Prior und Posterior ähnlich aus, wie im Abschnitt Wenn der Posterior gleich dem Prior ist erläutert. Wenn die Daten nur wenige Informationen enthalten und Beta-Priors verwendet werden, unterscheiden sich die Posterior-ROIs in den verschiedenen Media-Channels. Dieser Unterschied ist jedoch nur auf die ungleichen Priors für die Media-Channels zurückzuführen und nicht auf die Daten. Zusammenfassend ist es wichtig, unterschiedliche ROI-Ergebnisse zwischen Channels nicht als Ergebnisse zu interpretieren, die ein Signal aus den Daten darstellen, wenn der Unterschied lediglich durch ungleiche Priors verursacht wird.
„ResourceExhaustedError“ beim Ausführen von Meridian.sample_posterior
Meridian.sample_posterior
ruft tfp.experimental.mcmc.windowed_adaptive_nuts
auf. Diese Methode kann sehr speicherintensiv sein und auf GPUs zu Leistungseinbußen führen, wenn eine große Anzahl von Ketten parallel ausgeführt oder das Modell mit großen Datensätzen trainiert wird.
Eine Möglichkeit, den maximalen GPU-Speicherverbrauch zu reduzieren, besteht darin, die Ketten nacheinander und nicht gleichzeitig auszuführen. Dazu wird eine Liste von Ganzzahlen an n_chains
übergeben. n_chains=[5, 5]
führt beispielsweise zu insgesamt 10 Ketten, da tfp.experimental.mcmc.windowed_adaptive_nuts
nacheinander aufgerufen wird, wobei jedes Mal n_chains=5
verwendet wird.
Das hat jedoch einen Einfluss auf die Laufzeit. Da diese Methode den Speicherverbrauch durch aufeinanderfolgende Aufrufe der MCMC-Stichprobenmethode reduziert, erhöht sich die Gesamtlaufzeit linear zur Länge der an n_chains
übergebenen Liste. Beispielsweise kann n_chains=[5,5]
bis zu doppelt so lange dauern wie n_chains=10
und n_chains=[4,3,3]
sogar bis zu dreimal so lange.
Der Beitrag organischer Media ist zu hoch
Wenn der Beitrag organischer Media höher als erwartet ist, wird eventuell ein ungeeigneter Prior verwendet. Für organische Media ist kein ROI definiert. Daher wird die Parameterisierung des Regressionskoeffizienten mit dem entsprechenden Prior (beta_om
oder beta_orf
) verwendet. Wenn der Beitrag für organische Media höher als erwartet ist, sollten Sie die Priors, die für die organischen Media-Channels verwendet werden, noch einmal überprüfen. Standardmäßig sind die angenommenen Priors nicht besonders informativ, aber es wird davon ausgegangen, dass sie einen positiven Effekt haben, der zu einem hohen Prior-Mittelwert führen kann. Wenn die Daten nur wenige Informationen enthalten, kann dies auch einen hohen Posterior-Mittelwert zur Folge haben. Falls dies ein Problem darstellt, kann es sich anbieten, einen alternativen Prior zu verwenden, der mehr Gewicht im unteren Wertebereich hat. Beachten Sie auch, dass $\beta_i^{[OM]}$ bei media_effects_dist = 'log_normal'
der Prior-Mittelwert des Logarithmus des Media-Effekts auf geografischer Ebene ist ($\log(\beta_{g,i}^{[OM]})$). Beim Standard-Prior HalfNormal(5.0)
werden in diesem Fall Werte nahe null zu wenig berücksichtigt. Dies wird beim Exponenzieren noch verstärkt. Sie könnten einen Prior in Betracht ziehen, der mehr Gewicht in der Nähe von null hat, z. B. HalfNormal(0.1)
. Auch wenn die Varianz gering ist, bietet sie dennoch ein breites Spektrum möglicher Werte auf der exponentiellen Skala. Für mehr Flexibilität können Sie alternativ einen Normal-Prior verwenden, mit dem sich sowohl der Standort als auch die Skala festlegen lassen, z. B. Normal(0.0, 3.0)
. Bei media_effects_dist = 'normal'
sollten Sie einen Prior mit einer kleineren Skala als die Standardverteilung verwenden, z. B. HalfNormal(1.0)
.
Fehlermeldung zu Kontrollvariablen, die zwischen Gruppen oder geografischen Einheiten nicht variieren
Dieser Fehler bedeutet, dass Sie dieselbe Variable auf Länderebene für verschiedene geografische Einheiten verwenden und dass Sie „knots = n_times“ festgelegt haben. Bei „knots = n_times“ hat jeder Zeitraum einen eigenen Parameter. Eine Variable auf Länderebene variiert nur zeitlich, nicht geografisch. Eine solche Variable ist perfekt kollinear mit der Zeit und daher redundant mit einem Modell, das einen Parameter für jeden Zeitraum hat. „Redundant“ bedeutet, dass Sie entweder die Variable auf Länderebene beibehalten oder „knots < n_times“ festlegen können. Welche Variable Sie auswählen, hängt von Ihren Interpretationszielen ab.
Negativer R-Quadrat-Wert
Aus den folgenden Gründen kann der R-Quadrat-Wert im Trainings- oder Test-Datensatz negativ sein:
- Die Kombination aus starken Priors und Daten mit schwachem Signal (d. h. niedrigem Signal-Rausch-Verhältnis) kann dazu führen, dass die Posterior-Verteilungen stark durch die Priors beeinflusst werden. In der Folge passt sich das Meridian-Modell im Trainings-Datensatz so an, dass die Fehlerquadratsumme (Total Sum of Squares, SSE) größer ist als die Gesamtquadratsumme (Total Sum of Squares, SST) – was zu einem negativen R-Quadrat-Wert führt. Weitere Informationen finden Sie bei Gelman et al. (2018).
- Ein negativer R-Quadrat-Wert für den Test-Datensatz tritt auf, wenn das Modell zwar zu den Trainingsdaten passt, aber nicht auf den Test-Datensatz generalisiert werden kann. Das ist bei jedem Modell möglich. In Meridian tritt dieses Problem auf, wenn die Holdout-Daten als die letzten N zusammenhängenden Zeitpunkte angegeben werden. Weitere Informationen finden Sie hier.
- Ein negativer R-Quadrat-Wert kann durch Fehler bei der Dateneingabe verursacht werden. Insbesondere falsche Bevölkerungszahlen auf geografischer Ebene können große Auswirkungen haben, da der R-Quadrat-Wert auf der rohen KPI-Skala berechnet wird, das Modell jedoch auf Pro-Kopf-Werten basiert. Ein weiterer häufiger Fehler bei der Eingabe ist die doppelte Skalierung der KPI nach Bevölkerungsgröße. Das passiert, wenn die KPI bereits vor der Eingabe in Meridian pro Kopf skaliert wurde – und Meridian anschließend automatisch eine zweite Skalierung vornimmt.