Quelle auf GitHub anzeigen
|
Enthält die Hauptfunktionen für die Anpassung des MMM von Meridian.
meridian.model.model.Meridian(
input_data: meridian.data.input_data.InputData,
model_spec: (meridian.model.spec.ModelSpec | None) = None,
inference_data: (az.InferenceData | None) = None
)
Methoden
adstock_hill_media
adstock_hill_media(
media: tf.Tensor,
alpha: tf.Tensor,
ec: tf.Tensor,
slope: tf.Tensor,
n_times_output: (int | None) = None
) -> tf.Tensor
Transformiert Medien mit Adstock- und Hill-Funktionen in der gewünschten Reihenfolge.
| Argumente | |
|---|---|
media
|
Tensor mit Dimensionen (n_geos, n_media_times, n_media_channels), der nicht negative Werte für die Media-Ausführung enthält. In der Regel sind das Impressionen, es kann aber auch ein beliebiger anderer Messwert sein, z. B. media_spend. Für bezahlte Suchanzeigen werden häufig Klicks verwendet.
|
alpha
|
Gleichverteilung für Adstock- und Hill-Berechnungen. |
ec
|
Verschobene halbnormale Verteilung für Adstock- und Hill-Berechnungen. |
slope
|
Deterministische Verteilung für Adstock- und Hill-Berechnungen. |
n_times_output
|
Anzahl der Zeiträume, die ausgegeben werden sollen. Dieses Argument ist optional, wenn die Anzahl der Zeiträume in media gleich self.n_media_times ist. In diesem Fall ist n_times_output standardmäßig self.n_times.
|
| Ausgabe | |
|---|---|
Tensor mit Dimensionen [..., n_geos, n_times, n_media_channels] für Adstock- und Hill-transformierte Media.
|
adstock_hill_rf
adstock_hill_rf(
reach: tf.Tensor,
frequency: tf.Tensor,
alpha: tf.Tensor,
ec: tf.Tensor,
slope: tf.Tensor,
n_times_output: (int | None) = None
) -> tf.Tensor
Transformiert Reichweite und Häufigkeit mithilfe der Hill- und Adstock-Funktionen.
| Argumente | |
|---|---|
reach
|
Tensor mit Dimensionen (n_geos, n_media_times, n_rf_channels), der nicht negative Media-Werte für die Reichweite enthält.
|
frequency
|
Tensor mit Dimensionen (n_geos, n_media_times, n_rf_channels), der nicht negative Media-Werte für die Häufigkeit enthält.
|
alpha
|
Gleichverteilung für Adstock- und Hill-Berechnungen. |
ec
|
Verschobene halbnormale Verteilung für Adstock- und Hill-Berechnungen. |
slope
|
Deterministische Verteilung für Adstock- und Hill-Berechnungen. |
n_times_output
|
Anzahl der Zeiträume, die ausgegeben werden sollen. Dieses Argument ist optional, wenn die Anzahl der Zeiträume in reach gleich self.n_media_times ist. In diesem Fall ist n_times_output standardmäßig self.n_times.
|
| Ausgabe | |
|---|---|
Tensor mit Dimensionen [..., n_geos, n_times, n_rf_channels] für Adstock- und Hill-transformierte Reichweite und Häufigkeit.
|
create_inference_data_coords
create_inference_data_coords(
n_chains: int, n_draws: int
) -> Mapping[str, np.ndarray | Sequence[str]]
Erstellt Datenkoordinaten für Inferenzdaten.
create_inference_data_dims
create_inference_data_dims() -> Mapping[str, Sequence[str]]
expand_selected_time_dims
expand_selected_time_dims(
start_date: (tc.Date | None) = None, end_date: (tc.Date | None) = None
) -> (list[str] | None)
Validiert und gibt Zeitdimensionswerte basierend auf den ausgewählten Zeiträumen zurück.
Wenn sowohl start_date als auch end_date auf „None“ gesetzt sind, wird „None“ zurückgegeben. Wenn angegeben, werden start_date sowie end_date berücksichtigt und müssen in den Zeitkoordinaten der Eingabedaten vorhanden sein.
| Argumente | |
|---|---|
start_date
|
Startdatum des ausgewählten Zeitraums. Wenn „None“ festgelegt ist, wird der früheste Zeitdimensionswert in den Eingabedaten verwendet. |
end_date
|
Enddatum des ausgewählten Zeitraums. Wenn „None“ festgelegt ist, wird der letzte Zeitdimensionswert in den Eingabedaten verwendet. |
| Ausgabe | |
|---|---|
Eine Liste von Zeitdimensionswerten (als Meridian-formatierte Objekte) in den Eingabedaten im ausgewählten Zeitraum. Wenn für beide Argumente „None“ festgelegt ist oder start_date und end_date den gesamten Zeitraum in den Eingabedaten abdecken, wird „None“ übergeben.
|
| Löst aus | |
|---|---|
„ValueError“, wenn start_date oder end_date nicht in den Zeitdimensionen der Eingabedaten enthalten ist.
|
populate_cached_properties
populate_cached_properties()
Aktiviert sofort alle Eigenschaften im Cache.
Das ist nützlich, um ein tf.function-Berechnungsdiagramm mit diesem Meridian-Objekt als Teil einer erfassten Closure zu erstellen. Im Berechnungsdiagramm sind interne Zustandsänderungen problematisch. Daher friert die Methode die Zustände des Objekts ein, bevor das Berechnungsdiagramm erstellt wird.
sample_posterior
sample_posterior(
n_chains: (Sequence[int] | int),
n_adapt: int,
n_burnin: int,
n_keep: int,
current_state: (Mapping[str, tf.Tensor] | None) = None,
init_step_size: (int | None) = None,
dual_averaging_kwargs: (Mapping[str, int] | None) = None,
max_tree_depth: int = 10,
max_energy_diff: float = 500.0,
unrolled_leapfrog_steps: int = 1,
parallel_iterations: int = 10,
seed: (Sequence[int] | None) = None,
**pins
)
Führt eine Markow-Chain-Monte-Carlo-Stichprobenerhebung (MCMC) von Posterior-Verteilungen aus.
Weitere Informationen zu den Argumenten finden Sie unter windowed_adaptive_nuts.
Die erstellten Samples werden in der Arviz-inference_data-Property dieses Modells zusammengeführt.
| Argumente | |
|---|---|
n_chains
|
Anzahl der MCMC-Ketten. Bei einer Sequenz von Ganzzahlen wird windowed_adaptive_nuts einmal für jedes Element aufgerufen. Das n_chains-Argument jedes windowed_adaptive_nuts-Aufrufs entspricht dem jeweiligen Ganzzahlelement. Mit einer Liste von Ganzzahlen lassen sich Ketten eines windowed_adaptive_nuts-Aufrufs in mehrere Aufrufe mit weniger Ketten pro Aufruf aufteilen. Dadurch kann die Arbeitsspeichernutzung reduziert werden. Eventuell sind hierfür mehr Anpassungsschritten für die Konvergenz erforderlich, da die Optimierung über weniger Ketten pro Stichprobenaufruf erfolgt.
|
n_adapt
|
Anzahl der Anpassungsziehungen pro Kette. |
n_burnin
|
Anzahl der Burn-in-Ziehungen pro Kette. Die Burn-in-Ziehungen erfolgen nach den Anpassungsziehungen und vor den behaltenen Ziehungen. |
n_keep
|
Ganzzahlige Anzahl der Ziehungen pro Kette, die für die Inferenz beibehalten werden sollen. |
current_state
|
Optionale Struktur von Tensoren, mit der die Stichprobenerhebung initialisiert werden soll. Verwenden dieselbe Form und Struktur wie model.experimental_pin(**pins).sample(n_chains).
|
init_step_size
|
Optionale Ganzzahl, die bestimmt, wo die Schrittweite für den Leapfrog-Integrator initialisiert wird. Die Struktur muss mit current_state kompatibel sein. Wenn das beispielsweise der Anfangsstatus ist: { 'a':
tf.zeros(n_chains), 'b': tf.zeros([n_chains, n_features]), }, dann funktionieren entweder 1., {'a': 1., 'b': 1.} oder {'a': tf.ones(n_chains), 'b':
tf.ones([n_chains, n_features])}. Standardmäßig ist die Dimension der Logdichte auf die ¼-Potenz gesetzt.
|
dual_averaging_kwargs
|
Optionale Keyword-Argumente in Form eines Dictionarys, die an tfp.mcmc.DualAveragingStepSizeAdaptation übergeben werden sollen. Der Standardwert für target_accept_prob ist auf 0.85 gesetzt, die Akzeptanzwahrscheinlichkeiten über die Ketten hinweg werden mit dem harmonischen Mittelwert reduziert und andernfalls werden die Standardwerte der Klasse verwendet.
|
max_tree_depth
|
Maximale Tiefe der Baumstruktur, die implizit durch NUTS erstellt wird. Die maximale Anzahl der Leapfrog-Schritte ist durch 2**max_tree_depth begrenzt, z. B. die Anzahl der Knoten in einem binären Baum mit einer Tiefe von max_tree_depth Knoten. Bei der Standardeinstellung von 10 sind bis zu 1.024 Leapfrog-Schritte möglich.
|
max_energy_diff
|
Skalarer Grenzwert für Energiedifferenzen bei jedem Leapfrog-Schritt. Divergenzproben werden als Leapfrog-Schritte definiert, die diesen Grenzwert überschreiten. Der Standardwert ist 1000.
|
unrolled_leapfrog_steps
|
Die Anzahl der Leapfrog-Schritte, die pro Baumexpansionsschritt ausgeführt werden sollen. Wendet einen direkten linearen Multiplikator auf die maximale Länge der Kurve (Trajektorie) an, die durch max_tree_depth impliziert ist. Der Standardwert ist 1.
|
parallel_iterations
|
Anzahl der Iterationen, die parallel ausgeführt werden dürfen. Muss eine positive Ganzzahl sein. Weitere Informationen finden Sie unter tf.while_loop.
|
seed
|
Wird verwendet, um den Seed für reproduzierbare Ergebnisse festzulegen. Weitere Informationen finden Sie unter PRNGS and seeds. |
**pins
|
Sie werden verwendet, um die bereitgestellte gemeinsame Verteilung zu steuern, und direkt an joint_dist.experimental_pin(**pins) übergeben.
|
| Löst | |
|---|---|
MCMCOOMError
|
aus, wenn das Modell nicht genügend Arbeitsspeicher hat. Versuchen Sie, n_keep zu verringern, oder übergeben Sie eine Liste von Ganzzahlen als n_chains, um Ketten nacheinander auszuführen. Weitere Informationen finden Sie unter „ResourceExhaustedError“ beim Ausführen von „Meridian.sample_posterior“.
|
sample_prior
sample_prior(
n_draws: int, seed: (int | None) = None
)
Es werden Stichproben aus den Prior-Verteilungen gezogen.
Die erstellten Samples werden in der Arviz-inference_data-Property dieses Modells zusammengeführt.
| Argumente | |
|---|---|
n_draws
|
Anzahl der Stichproben, die aus der Prior-Verteilung gezogen werden. |
seed
|
Wird verwendet, um den Seed für reproduzierbare Ergebnisse festzulegen. Weitere Informationen finden Sie unter PRNGS and seeds. |
Quelle auf GitHub anzeigen