Im Allgemeinen haben Media eine verzögerte Wirkung auf KPIs (Key Performance Indicators), die mit der Zeit abnimmt. Um diesen verzögerten Effekt zu modellieren, transformieren wir die Media-Ausführung eines bestimmten Channels mit der Adstock-Funktion:
Dabei gilt:
\(w(s; \alpha) \) ist eine nicht-negative Gewichtungsfunktion,
\(x_s \geq 0\) ist die Media-Ausführung zum Zeitpunkt \(s\),
\(\alpha\ \in\ [0, 1]\) ist der Parameter für das Abklingen,
\(L\) ist die maximale Verzögerungsdauer.
In Meridian gibt es zwei Abklingkurven: geometrisch und binomial. Die Geschwindigkeit, mit der der Media-Effekt abnimmt, wird durch die Auswahl der Funktion und den gelernten Parameter Alpha bestimmt. Mit dem Parameter adstock_decay_spec
von ModelSpec
wird festgelegt, welche Funktion oder Kombination von Funktionen verwendet wird.
Wenn Sie beispielsweise das binomiale Abklingen für alle Channels nutzen möchten, können Sie Folgendes verwenden:
from meridian.model import spec
model_spec = spec.ModelSpec(
adstock_decay_spec='binomial'
)
Wenn Sie binomiales, geometrisches und binomiales Abklingen für drei Channels mit den Namen "Channel0"
, "Channel1"
und "Channel2"
verwenden möchten, können Sie Folgendes angeben:
from meridian.model import spec
model_spec = spec.ModelSpec(
adstock_decay_spec=dict(
Channel0='binomial',
Channel1='geometric',
Channel2='binomial',
)
)
Im Allgemeinen empfehlen wir die Verwendung des binomialen Abklingens, wenn Sie davon ausgehen, dass ein erheblicher Teil der verzögerten Effekte eines Media-Channels in der zweiten Hälfte des Effektzeitraums bestehen bleibt. Andernfalls empfehlen wir die Verwendung des geometrischen Abklingens.
Mit diesen Funktionen werden Gewichtungen \(w(s; \alpha)\) für die Adstock-Funktion definiert. Sie werden so definiert, dass zum Zeitpunkt \(t-s\) die Media-Ausführung zum Zeitpunkt \(t\)die Gewichtung \(w(s; \alpha) / \sum_{s\in{\{0, ..., L\}}}w(s; \alpha)\)hat. Weitere Informationen zur Adstock-Funktion finden Sie unter Media – Übersättigung und Verzögerung.
Geometrisches Abkingen
Das geometrische Abklingen wird als \(w(s; \alpha) = \alpha^s\)parametriert, wobei\(\alpha \in [0, 1] \) der geometrische Parameter für die Abklingrate und\(s\) die Verzögerung ist. Zum Zeitpunkt \(t\)hat die Media-Ausführung zum Zeitpunkt \(t-s\) die Gewichtung \(w(s; \alpha) = \alpha^s\), die dann so normalisiert wird, dass alle Gewichtungen zusammen eins ergeben.
Binomiales Abklingen
Das binomiale Abklingen wird so parametrisiert:
Dabei ist \(L\) die maximale Verzögerung (der Parametermax_lag
vonModelSpec
). Die Zuordnung \(\alpha_*=\frac{1}{\alpha} - 1\) wird verwendet, um Werte von\(\alpha\) von \([0, 1]\) zu \([0, \infty)\)zuzuordnen.
Die Binomialkurve ist konvex, wenn \(\alpha < 0.5\), linear, wenn \(\alpha = 0.5\)und konkav, wenn \(\alpha > 0.5\). Sie ist so definiert, dass ihr x-Achsenabschnitt immer bei \(L + 1\)liegt.
Zwischen dem geometrischen und binomialen Abklingen entscheiden
Wir empfehlen, den binomialen Abklingeffekt auszuwählen, wenn Sie der Meinung sind, dass ein Channel in der zweiten Hälfte des Effektzeitraums einen erheblichen Anteil an Effekten hat. Andernfalls wählen Sie das geometrische Abklingen aus.
Die Abklingkurve wirkt sich auf die relativen Gewichtungen verzögerter Media aus. Wenn Sie die relative Gewichtung späterer Zeiträume erhöhen, verringert sich zwangsläufig die relative Gewichtung früherer Zeiträume. Die binomiale Abklingkurve definiert Gewichtungen, die langsamer auf null abklingen als die geometrische Kurve. Daher wird bei der binomialen Kurve für den verzögerten Effekt ein größerer Anteil des gesamten Media-Effekts eines Channels in späteren Zeiträumen berücksichtigt, während bei der geometrischen Kurve für den verzögerten Effekt ein größerer Anteil des gesamten Media-Effekts eines Channels in früheren Zeiträumen berücksichtigt wird. Die binomiale Abklingkurve ist eine gute Wahl, wenn Sie größere Werte für max_lag
verwenden, da sie „gestreckt“ wird, um das Effektzeitfenster abzudecken. Ihr x-Achsenabschnitt liegt immer bei \(L + 1\). Weitere Informationen
Es kann verlockend sein, die binomiale Abklingkurve für alle Channels auszuwählen, da sie größere max_lag
-Werte unterstützt. Beachten Sie jedoch, dass sich nicht alle Channels am besten mit der binomialen Abklingkurve modellieren lassen. Diese eignet sich besonders dann, wenn Sie davon ausgehen, dass ein Channel einen erheblichen Teil der Effekte in der zweiten Hälfte des Zeitraums für die Effekte hat. Eine falsche Anwendung der binomialen Abklingkurve kann zu einer Unterschätzung kurzfristiger Effekte führen.
Funktion | Geometrisch | Binomial |
---|---|---|
Optimal für | Media mit kurzlebigen Effekten. | Media mit Effekten, die bis in die zweite Hälfte des Effektzeitraums anhalten. |
Kurvenform | Schnelles Abklingen. | Sie können länger bestehen, bevor sie abklingen. |
Empfehlung für maximale Verzögerung | 2–10 Zeiträume | 4–20 Zeiträume |
Nachteile | Anfällig für eine Unterschätzung der langfristigen Effekte. | Anfällig für eine Unterschätzung der kurzfristigen Effekte. |
Hinweise zu langfristigen Effekten
Wenn Sie langfristige Effekte erwarten, die in einem Modell nicht berücksichtigt werden, kann eine Kombination aus der binomialen Abklingkurve, dem Ändern des Priors für Alpha und dem Ändern von max_lag
helfen. Anhand der Prior-Kurven aus media_effects.plot_adstock_decay()
können Sie sehen, wie max_lag
, der Alpha-Prior und die Abklingfunktion interagieren. Anschließend können Sie diese optimieren, um ein Modell an Ihre ursprünglichen Annahmen zu verzögerten Effekten anzupassen. Die Anpassung des Priors und von max_lag
kann parallel zur oder anstelle der Auswahl einer bestimmten Abklingfunktion erfolgen. Wir empfehlen, mit verschiedenen Kombinationen zu experimentieren, um Konvergenz, Modellanpassung und Effektzeitraum in Einklang zu bringen. Weitere Informationen zum Auswählen des Werts max_lag
finden Sie unter Parameter „max_lag“ festlegen.
Der Alpha-Prior
Der Standard-Alpha-Prior in Meridian ist \(U(0, 1)\). Das ist ein nicht informativer Prior für geometrische und binomiale Abklingfunktionen. Wenn Sie eine Vermutung dazu haben, wie schnell der Media-Effekt für einen bestimmten Channel nachlässt, können Sie einen benutzerdefinierten Alpha-Prior für diesen Channel festlegen, um Meridian darüber zu informieren.
Sowohl beim geometrischen als auch beim binominalen Abklingen besteht eine monotone Beziehung zwischen\(\alpha\) und der Rate, mit der der Media-Effekt abklingt: Ein kleinerer \(\alpha\)entspricht einem schnelleren Abklingen und ein größerer \(\alpha\) einem kürzeren Abklingen. Sowohl geometrische als auch binomiale Funktionen maximieren kurzfristige Effekte, wenn \(\alpha=0\). In diesem Fall gibt es keine verzögerten Effekte. Langfristige Effekte werden maximiert, wenn \(\alpha=1\). In diesem Fall werden alle Media innerhalb des historischen verzögerten Zeitraums gleich gewichtet.
Daher empfehlen wir, einen Prior für Alpha festzulegen, bei dem ein Großteil der Masse nahe null liegt, um ein schnelleres Abklingen und kurzfristige Effekte zu fördern. Wir empfehlen, einen Prior mit einem Großteil seiner Masse in der Nähe von 1 festzulegen, um ein langsameres Abklingen und langfristige Effekte zu erzielen.
Die binomiale \(\alpha\) -Zuordnung
Die Zuordnung von \(\alpha_*: [0, 1]\rightarrow[0, \infty) \) wird ausgeführt, weil die Binomialfunktion für \(\alpha_* \in [0, \infty)\) abklingt, während die geometrische Funktion für \(\alpha \in [0, 1]\)abklingt. Durch diese Zuordnung können Priors, die für das Intervall \([0, 1]\) definiert sind, im Binomialfall korrekt in \([0, \infty)\) übersetzt werden. Außerdem wird die Konsistenz der Modellspezifikation mit dem geometrischen Abklingen beibehalten. Niedrige Werte von Alpha implizieren ein schnelles Abklingen und kurzfristige Effekte, höhere Werte von Alpha ein langsames Abklingen und langfristige Effekte.
Erweiterte Option: Benutzerdefinierten Prior direkt für \(\alpha_*\) festlegen, wenn die Binomialverteilung verwendet wird
Meridian verwendet für geometrische und binomiale Funktionen einen Standard-Prior von \(U(0, 1)\) für \(\alpha\) . Beim binomialen Abklingen entspricht ein \(U(0, 1)\) -Prior für\(\alpha\) einem Lomax(1, 1)-Prior für \(\alpha_*\):
Dies bleibt ein relativ nicht informativer Prior, damit Daten die Abklingrate mit binomialem Abklingen beeinflussen können.
Für benutzerdefinierte \(\alpha\) -Priors wird in Meridian eine Unterstützung von \([0, 1]\) erwartet (z. B. eine Beta-Verteilung), die dann mit \(1/x-1\)auf die nicht-negativen reellen Zahlen abgebildet wird. Wenn Sie jedoch einen Prior für \(\alpha_*\) mit Unterstützung von \([0, \infty)\) definieren möchten, können Sie dies tun und ihn dann mit der inversen Zuordnung \(\frac{1}{1+x}\)transformieren. Diese Zuordnung ist über die Hilfsmethode adstock_hill.transform_non_negative_reals_distribution
verfügbar.
Wenn Sie beispielsweise einen lognormalen Prior für \(\alpha_*\) mit einem Mittelwert von 0,5 und einer Varianz von 0,5 erhalten möchten, gehen Sie so vor:
import tensorflow as tf
# Example: pick mu, sigma so that the mean, variance of alpha_* are both 0.5
mu = -tf.math.log(2.0) - 0.5 * tf.math.log(3.0)
sigma = tf.math.sqrt(tf.math.log(3.0))
alpha_star_prior = tfp.distributions.LogNormal(mu, sigma) # prior on alpha_* for binomial
alpha_prior = adstock_hill.transform_non_negative_reals_distribution(alpha_star_prior)
prior = prior_distribution.PriorDistribution(
alpha=alpha_prior
)
model_spec = spec.ModelSpec(
prior=prior,
adstock_decay_spec='binomial'
)
Sie können dann auch den Alpha-Prior direkt abfragen. So rufen Sie beispielsweise die Wahrscheinlichkeitsdichtefunktion für Alpha auf:
import numpy as np
from matplotlib import pyplot as plt
x = np.linspace(0, 1, 100)
fig, ax = plt.subplots(figsize=(8, 6))
ax.plot(x, alpha_prior.prob(x), linewidth=3)
ax.set(xlabel='Alpha', ylabel='Probability')
plt.show()
In diesem Diagramm sehen Sie den Prior für \(\alpha\) , der zu einem lognormalen Prior für\(\alpha_*\) mit einem Mittelwert und einer Varianz von 0,5 führt.