Ver el código fuente en GitHub
|
Contiene la funcionalidad principal para ajustar el modelo de MMM de 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
)
Métodos
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
Transforma los medios con las funciones Adstock y Hill en el orden deseado.
| Args | |
|---|---|
media
|
Tensor de dimensiones (n_geos, n_media_times, n_media_channels) que contiene valores no negativos de ejecución de medios. Por lo general, se refiere a las impresiones, pero puede ser cualquier métrica, como media_spend. Los clics se suelen usar en relación con los anuncios de búsqueda pagada.
|
alpha
|
Distribución uniforme para los cálculos de Adstock y Hill. |
ec
|
Distribución seminormal desplazada para los cálculos de Adstock y Hill. |
slope
|
Distribución determinística para los cálculos de Adstock y Hill. |
n_times_output
|
Cantidad de períodos para mostrar. Este argumento es opcional cuando la cantidad de períodos incluidos en media es igual a la de self.n_media_times, en cuyo caso n_times_output se establece en self.n_times de forma predeterminada.
|
| Devolución | |
|---|---|
Tensor con dimensiones [..., n_geos, n_times, n_media_channels] que representa los medios transformados con Adstock y Hill.
|
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
Transforma el alcance y la frecuencia (RF) con las funciones Adstock y Hill.
| Args | |
|---|---|
reach
|
Tensor de dimensiones (n_geos, n_media_times, n_rf_channels) que contiene medios no negativos para el alcance.
|
frequency
|
Tensor de dimensiones (n_geos, n_media_times, n_rf_channels) que contiene medios no negativos para la frecuencia.
|
alpha
|
Distribución uniforme para los cálculos de Adstock y Hill. |
ec
|
Distribución seminormal desplazada para los cálculos de Adstock y Hill. |
slope
|
Distribución determinística para los cálculos de Adstock y Hill. |
n_times_output
|
Cantidad de períodos para mostrar. Este argumento es opcional cuando la cantidad de períodos incluidos en reach es igual a la de self.n_media_times, en cuyo caso n_times_output se establece en self.n_times de forma predeterminada.
|
| Devolución | |
|---|---|
Tensor con dimensiones [..., n_geos, n_times, n_rf_channels] que representa los datos de RF transformados con Adstock y Hill.
|
create_inference_data_coords
create_inference_data_coords(
n_chains: int, n_draws: int
) -> Mapping[str, np.ndarray | Sequence[str]]
Crea coordenadas de datos para los datos de inferencia.
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)
Valida y devuelve los valores de la dimensión de tiempo según los horarios seleccionados.
Si se especifica None para start_date y end_date, se devuelve None. Si se especifica,
start_date y end_date son inclusivos, y deben estar presentes en las
coordenadas temporales de los datos de entrada.
| Args | |
|---|---|
start_date
|
Es la fecha de inicio del período seleccionado. "None" implica el valor más antiguo de la dimensión de tiempo en los datos de entrada. |
end_date
|
Es la fecha de finalización del período seleccionado. "None" implica el valor más reciente de la dimensión de tiempo en los datos de entrada. |
| Devolución | |
|---|---|
Se devuelve una lista de los valores de la dimensión de tiempo (como cadenas con formato de Meridian) indicados en los datos de entrada para el período seleccionado, o no se hace nada y se pasa None si ambos argumentos se establecen en None o si start_date y end_date corresponden a todo el período de los datos de entrada.
|
| Excepción | |
|---|---|
ValueError si no se incluye start_date o end_date en las dimensiones temporales de los datos de entrada.
|
populate_cached_properties
populate_cached_properties()
Activa de inmediato todas las propiedades almacenadas en caché.
Este método es útil para crear un grafo de procesamiento tf.function con este objeto Meridian como parte de un cierre con captura. Dentro del grafo de procesamiento, las mutaciones de estado interno son problemáticas, por lo que este método inmoviliza los estados del objeto antes de que se cree el grafo de procesamiento.
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
)
Ejecuta el muestreo del método de Monte Carlo basado en cadenas de Markov (MCMC) de las distribuciones a posteriori.
Para obtener más información sobre los argumentos, consulta windowed_adaptive_nuts.
Las muestras extraídas se combinan en la propiedad inference_data de Arviz de este modelo.
| Args | |
|---|---|
n_chains
|
Cantidad de cadenas de MCMC. Dada una secuencia de números enteros, se llamará a windowed_adaptive_nuts una vez por cada elemento. El argumento n_chains de cada llamada a windowed_adaptive_nuts será igual al elemento de número entero respectivo. Con una lista de números enteros, se pueden dividir las cadenas de una llamada a windowed_adaptive_nuts en varias llamadas con menos cadenas por llamada. Esto puede reducir el uso de memoria, además de que podría requerir una mayor cantidad de pasos de adaptación para la convergencia, ya que la optimización se produce en menos cadenas por llamada de muestreo.
|
n_adapt
|
Cantidad de extracciones de adaptación por cadena. |
n_burnin
|
Cantidad de extracciones iniciales por cadena. Las extracciones iniciales se ejecutan después de las de adaptación y antes de las conservadas. |
n_keep
|
Número entero de extracciones por cadena que se deben conservar para la inferencia. |
current_state
|
Estructura opcional de tensores en la que se inicializa el muestreo. Usa la misma forma y estructura que model.experimental_pin(**pins).sample(n_chains).
|
init_step_size
|
Número entero opcional que determina dónde inicializar el tamaño del paso para el integrador de salto de rana. La estructura se debe emitir con current_state. Por ejemplo, si el estado inicial es { 'a':
tf.zeros(n_chains), 'b': tf.zeros([n_chains, n_features]), }, funcionará cualquiera de 1., {'a': 1., 'b': 1.} o {'a': tf.ones(n_chains), 'b':
tf.ones([n_chains, n_features])}. La configuración predeterminada utiliza la dimensión de la densidad de registro a la potencia de ¼.
|
dual_averaging_kwargs
|
Argumentos de palabra clave opcionales de la función dict para pasar a tfp.mcmc.DualAveragingStepSizeAdaptation. De forma predeterminada, se establece un target_accept_prob de 0.85, se reducen las probabilidades de aceptación en las cadenas usando una media armónica y, en los demás casos, se utilizan los valores predeterminados de la clase.
|
max_tree_depth
|
Profundidad máxima del árbol compilado por NUTS de forma implícita. La cantidad máxima de pasos de salto de rana está limitada por 2**max_tree_depth; por ejemplo, la cantidad de nodos en una profundidad de max_tree_depth de un árbol binario. El parámetro de configuración predeterminado de 10 toma hasta 1,024 pasos de salto de rana.
|
max_energy_diff
|
Umbral escalar de las diferencias de energía en cada salto de rana (las muestras de la divergencia se definen como pasos de salto de rana que superan este umbral). La configuración predeterminada es 1000.
|
unrolled_leapfrog_steps
|
Cantidad de saltos de rana para desenroscar por paso de expansión del árbol. Aplica un multiplicador lineal directo a la longitud de trayectoria máxima sugerida por max_tree_depth. La configuración predeterminada es 1.
|
parallel_iterations
|
Cantidad de iteraciones permitidas para ejecutar en paralelo. Debe ser un número entero positivo. Para obtener más información, consulta tf.while_loop.
|
seed
|
Argumento usado para establecer los valores semilla para los resultados reproducibles. Para obtener más información, consulta PRNGS y valores semilla. |
**pins
|
Argumentos usados para condicionar la distribución conjunta proporcionada que se pasan directamente a joint_dist.experimental_pin(**pins).
|
| Arroja | |
|---|---|
MCMCOOMError
|
Si el modelo se queda sin memoria. Intenta reducir el valor de n_keep o pasar una lista de números enteros como n_chains para muestrear cadenas de forma serial. Para obtener más información, consulta ResourceExhaustedError cuando se ejecuta Meridian.sample_posterior.
|
sample_prior
sample_prior(
n_draws: int, seed: (int | None) = None
)
Extrae muestras de las distribuciones a priori.
Las muestras extraídas se combinan en la propiedad inference_data de Arviz de este modelo.
| Args | |
|---|---|
n_draws
|
Cantidad de muestras extraídas de la distribución a priori. |
seed
|
Argumento usado para establecer los valores semilla para los resultados reproducibles. Para obtener más información, consulta PRNGS y valores semilla. |
Ver el código fuente en GitHub