ConstruirModeloFusionado#
- class pymc_marketing.mmm.budget_optimizer.BuildMergedModel(models, prefixes=None, merge_on='channel_data', use_every_n_draw=1)[fuente]#
Fusionar múltiples modelos compatibles con el optimizador en un solo modelo.
Este envoltorio combina varios envoltorios MMM compatibles con optimizadores al: - Fusionar sus
InferenceDataposteriores con prefijos por modelo - Opcionalmente reducir las muestras posteriores a través deuse_every_n_draw- Exponer unModelde PyMC fusionado y persistente para optimización a través de_set_predictors_for_optimizationy una propiedadmodeldinámica para inspección cuando sea necesario- Parámetros:
- modelos :
list[OptimizerCompatibleModelWrapper]list[OptimizerCompatibleModelWrapper] Una lista de envoltorios que cada uno expone
idatay_set_predictors_for_optimization(num_periods: int) -> Model.- prefijos :
list[str] |None, opcionalpython:list[python:str] | python:None, opcional Prefijos por modelo utilizados al fusionar. Si
None, se utiliza por defecto["model1", "model2", ...]con un prefijo por modelo.- merge_on :
str|None, opcional, por defecto «channel_data»python:str | python:None, opcional, predeterminado «channel_data» Nombre de una variable que se espera que esté presente en todos los modelos y que debe permanecer sin prefijo y ser utilizada para alinear/combinar dimensiones (por ejemplo,
"channel_data"). Si esNone, ninguna variable se trata como compartida y todas las variables/dimensiones tienen prefijo.- use_every_n_draw :
int, opcional, valor por defecto 1python:int, opcional, predeterminado 1 Factor de adelgazamiento aplicado al fusionar idatas. Mantiene cada n-ésimo sorteo.
- modelos :
- Atributos:
- prefijos :
list[str]list[str] La lista final de prefijos utilizados para cada modelo.
- modelos :
list[OptimizerCompatibleModelWrapper]list[OptimizerCompatibleModelWrapper] La lista de envolturas proporcionada.
- num_models
int Número de modelos que se están fusionando.
- num_periods
int|None Número de períodos de pronóstico inferidos del modelo primario (si está disponible).
- idata
arviz.InferenceData El contenedor posterior (y de datos) fusionado y prefijado.
- adstock :
CualquieraCualquiera Transferido del modelo principal cuando está disponible.
modelo:pymc.Modelpymc.ModelDevuelve el modelo PyMC combinado.
- prefijos :
Ejemplos
Fusionar tres MMM multidimensionales en un único modelo de optimización:
from pymc_marketing.mmm.multidimensional import ( MMM, MultiDimensionalBudgetOptimizerWrapper, ) from pymc_marketing.mmm.budget_optimizer import ( BuildMergedModel, BudgetOptimizer, ) # Assume m1, m2, m3 are already fitted MMM instances w1 = MultiDimensionalBudgetOptimizerWrapper( model=m1, start_date=start, end_date=end ) w2 = MultiDimensionalBudgetOptimizerWrapper( model=m2, start_date=start, end_date=end ) w3 = MultiDimensionalBudgetOptimizerWrapper( model=m3, start_date=start, end_date=end ) merged = BuildMergedModel( models=[w1, w2, w3], prefixes=["north", "south", "west"], merge_on="channel_data", use_every_n_draw=2, ) optimizer = BudgetOptimizer( model=merged, num_periods=merged.num_periods, response_variable="north_total_media_contribution_original_scale", )
Modelo único: auto-prefijo y tiradas delgadas:
merged_single = BuildMergedModel( models=[w1], prefixes=None, # auto -> ["model1"] merge_on="channel_data", use_every_n_draw=5, ) m_opt = merged_single._set_predictors_for_optimization( num_periods=merged_single.num_periods )
Fusionar todo con prefijos (sin variable compartida retenida):
merged_all_prefixed = BuildMergedModel( models=[w1, w2], prefixes=["a", "b"], merge_on=None, # do not keep any unprefixed variable )
Métodos
BuildMergedModel.__init__(models[, ...])Atributos
modelDevuelve el modelo PyMC combinado.
adstockidata