Democratizando los modelos de marketing mix (MMM) con código abierto y Gen AI

Han estado en la industria durante varios años y recientemente han experimentado un renacimiento. Dado que las señales rastreadas digitalmente están en desuso debido al aumento de las restricciones de privacidad de los datos, los especialistas en marketing están recurriendo a los MMM para obtener un marco de atribución y medición estratégico, confiable y seguro para la privacidad.

A diferencia de las herramientas de seguimiento a nivel de usuario, MMM utiliza series temporales agregadas y datos transversales para estimar cómo los canales de marketing impulsan los KPI empresariales. Los avances en el modelado bayesiano con potencia informática mejorada han llevado a MMM nuevamente al centro del análisis de marketing.

Durante años, los anunciantes y las agencias de medios han utilizado y confiado en el MMM bayesiano para comprender las contribuciones de los canales de marketing y la asignación del presupuesto de marketing.

El papel de GenAI en el MMM moderno

Un número cada vez mayor de empresas está utilizando las funciones GenAI como una mejora de MMM de varias maneras.

1. Preparación de datos e ingeniería de funciones
2. Automatización de canalizaciones: generación de código para canalizaciones MMM
3. Explicación de conocimientos: traduzca los conocimientos del modelo a un lenguaje empresarial sencillo.
4. Planificación de escenarios y optimización del presupuesto.

Si bien estas capacidades son potentes, dependen de motores MMM propietarios.

El propósito de este artículo no es mostrar cómo funciona el MMM bayesiano, sino demostrar un posible diseño de sistema gratuito y de código abierto que los especialistas en marketing pueden explorar sin la necesidad de suscribirse a la pila de MMM de caja negra que ofrecen los proveedores de la industria.

El enfoque combina:

1. Google Meridian como motor MMM bayesiano de código abierto
2. Modelo de lenguaje grande (LLM) de código abierto: Mistral 7B como una capa de conocimiento e interacción además de la salida de inferencia bayesiana de Meridian.

A continuación se muestra un diagrama de arquitectura que representa el diseño del sistema de código abierto propuesto para los especialistas en marketing.

Este diagrama de arquitectura se creó utilizando herramientas de diseño asistido por Gen-AI para la creación rápida de prototipos.

Este flujo de trabajo de código abierto tiene varios beneficios:

Democratización del MMM bayesiano: elimina el problema de la caja negra de las herramientas MMM propietarias. Rentabilidad: reduce la barrera financiera para que las pequeñas y medianas empresas accedan a análisis avanzados. Esta separación preserva el rigor estadístico requerido de los motores MMM y lo hace más accesible. Con una capa de información de GenAI, las audiencias no necesitan comprender las matemáticas bayesianas; en lugar de eso, pueden simplemente interactuar utilizando indicaciones de GenAI para conocer información del modelo sobre la contribución del canal, el retorno de la inversión (ROI) y posibles estrategias de asignación de presupuesto. Adaptabilidad a herramientas de código abierto más nuevas: una capa GenAI se puede reemplazar con LLM más nuevos cuando estén disponibles abiertamente para obtener información mejorada.

Ejemplo práctico de implementación del modelo MMM de Google Meridian con una capa LLM

Para esta presentación, he utilizado el modelo de código abierto Mistral 7B, obtenido localmente de la plataforma Hugging Face alojada en el motor Llama.

Se supone que este marco es independiente del dominio, es decir, se puede utilizar cualquier modelo MMM alternativo de código abierto como Robyn, PyMC, etc. de Meta y versiones LLM para modelos GPT y Llama, dependiendo de la escala y el alcance de los conocimientos deseados.

Nota importante:

Se creó un conjunto de datos de marketing sintético, con un KPI como “Conversiones” y canales de marketing como TV, búsqueda, redes sociales pagadas, correo electrónico y OOH (medios externos). Google Meridian produce resultados valiosos, como ROI, coeficientes de canal y contribuciones para impulsar KPI, curvas de respuesta, etc. Si bien estos resultados son estadísticamente sólidos, a menudo requieren experiencia especializada para interpretarlos. Aquí es donde un LLM se vuelve valioso y puede utilizarse como traductor de conocimientos. Se utilizaron ejemplos de código Python de Google Meridian para ejecutar el modelo Meridian MMM en los datos de marketing sintéticos creados. Para obtener más información sobre cómo ejecutar el código Meridian, consulte esta página. Se utilizó un modelo LLM de código abierto, Mistral 7B, debido a su compatibilidad con el nivel gratuito de recursos de GPU de Google Colab y también por ser un modelo adecuado para generar información basada en instrucciones sin depender de ningún requisito de acceso a API.

Ejemplo: el siguiente fragmento de código Python se ejecutó en la plataforma Google Colab:

# Instalar meridian: desde PyPI @ última versión! pip install –upgrade google-meridian[colab,and-cuda,schema]

# Instalar dependencias importar IPython desde meridian importar constantes de meridian.analysis importar analizador de meridian.analysis importar optimizador de meridian.analysis importar resumidor de meridian.analysis importar visualizador de meridian.analysis.review importar revisor de meridian.data importar data_frame_input_data_builder de meridian.model importar modelo de meridian.model importar prior_distribution de meridian.model importar especificación de esquema.serde importar meridian_serde importar numpy como np importar pandas como pd

Se creó un conjunto de datos de marketing sintético (que no se muestra en este código) y, como parte del requisito del flujo de trabajo de Meridian, se crea una instancia del generador de datos de entrada como se muestra a continuación:

constructor = data_frame_input_data_builder.DataFrameInputDataBuilder( kpi_type=’sin_ingresos’, default_kpi_column=’conversiones’, default_revenue_per_kpi_column=’ingresos_por_conversión’, ) constructor = ( builder.with_kpi(df) .with_revenue_per_kpi(df) .with_poblation(df) .with_controls( df, control_cols=[“sentiment_score_control”, “competitor_sales_control”] ) ) canales = [“tv”,”paid_search”,”paid_social”,”email”,”ooh”]

constructor = constructor.with_media( df, media_cols=[f”{channel}_impression” for channel in channels]media_spend_cols=[f”{channel}_spend” for channel in channels]media_channels=canales, ) data = builder.build() #Construye los datos de entrada

Configure y ejecute el modelo Meridian MMM:

# Inicializando la clase Meridian pasando datos cargados y especificaciones de modelo personalizadas. Una ventaja de utilizar Meridian MMM es la capacidad de establecer antecedentes de modelado para cada canal, lo que brinda a los modeladores la capacidad de establecer la distribución de canales según el conocimiento histórico del comportamiento de los medios. roi_mu = 0,2 # Mu para el ROI anterior de cada canal de medios. roi_sigma = 0.9 # Sigma para el ROI previo de cada canal de medios. prior = prior_distribution.PriorDistribution( roi_m=tfp.distributions.LogNormal(roi_mu, roi_sigma, name=constants.ROI_M) ) model_spec = spec.ModelSpec(prior=prior, enable_aks=True) mmm = model.Meridian(input_data=data, model_spec=model_spec) mmm.sample_prior(500) mmm.sample_posterior( n_chains=10, n_adapt=2000, n_burnin=500, n_keep=1000, semilla=0 )

Este fragmento de código ejecuta el modelo de meridiano con antecedentes definidos para cada canal en el conjunto de datos de entrada generado. El siguiente paso es evaluar el rendimiento del modelo. Si bien existen parámetros de salida del modelo como R cuadrado, MAPE, valores P, etc. que se pueden evaluar, para los fines de este artículo solo incluyo un ejemplo de evaluación visual:

model_fit = visualizador.ModelFit(mmm) model_fit.plot_model_fit()

Ahora que se ha ejecutado el modelo Meridian MMM, tenemos parámetros de salida del modelo para cada canal de medios, como ROI, curvas de respuesta, coeficientes del modelo, niveles de gasto, etc. Podemos reunir toda esta información en un único objeto JSON de entrada que se puede usar directamente como entrada al LLM para generar conocimientos:

import json # Combina todo en un diccionario genai_input = { “roi”: roi.to_dict(orient=’records’), “coficientes”: coeffs.to_dict(orient=’records’), “priors”: priors.to_dict(orient=’records’), “response_curves”: Response_curves.to_dict(orient=’records’) } # Convertir a cadena JSON para el LLM genai_input_json = json.dumps(genai_input, sangría=2)

Descargando Mistral 7B LLM desde la plataforma Hugging Face localmente e instalando el motor Llama requerido para ejecutar el LLM:

# Descargue la película Mistral 7B de Hugging Face! wget -O /content/models/mistral-7b-instruct-v0.2.Q4_K_M.gguf \ https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.2-GGUF/resolve/main/mistral-7b-instruct-v0.2.Q4_K_M.gguf # Instale Llama para Python motor!pip instalar llama-cpp-python –actualizar

Ejecutar Mistral LLM usando el JSON de entrada que tiene salida Meridian MMM e incluye el mensaje de instrucción apropiado:

from llama_cpp import Llama # Inicializa el modelo llm = Llama( model_path=”/content/models/mistral-7b-instruct-v0.2.Q4_K_M.gguf”, n_ctx=2048, n_gpu_layers=35, seed=42, verbose=False, Temperature=0.2 ) # Convierte JSON en un mensaje para recomendaciones aviso = f””” Eres una mezcla de marketing experto en modelado. 1. Resuma la eficiencia de cada canal de marketing según el resultado de MMM. 2. Explique los impulsores clave del ROI para cada canal en términos comerciales simples. 3. Canales con rendimientos decrecientes. 4. Si queremos maximizar el ROI total con el presupuesto actual, ¿cómo debemos reasignar el gasto entre los canales? JSON: {genai_input_json} “”” # Generar recomendaciones respuesta = llm(prompt, max_tokens=300) # Imprimir. sólo la salida de texto se imprime (respuesta[“choices”][0][“text”])

Salida de ejemplo:

1. Según el resultado del Marketing Mix Modeling (MMM), TV, OOH y Search Ads tienen un ROI positivo (3,0, 2,5 y 1,5 respectivamente), mientras que las redes sociales y el correo electrónico tienen un ROI más bajo (0,9 y 0,7 respectivamente).

2. Los impulsores clave del ROI para cada canal en términos comerciales simples son:

– Televisión: cada dólar gastado en anuncios de televisión genera 3 dólares en ventas.

– Redes sociales: cada dólar gastado en anuncios en redes sociales genera $0,9 en ventas.

– Anuncios de búsqueda: cada dólar gastado en anuncios de búsqueda genera 2,5 dólares en ventas.

– Correo electrónico: cada dólar gastado en marketing por correo electrónico genera 0,7 dólares en ventas.

– OOH: cada dólar gastado en anuncios fuera del hogar (OOH) genera $1,5 en ventas.

3. Los canales con rendimientos decrecientes son las redes sociales y el correo electrónico, ya que sus curvas de respuesta muestran que el crecimiento de las ventas no es proporcional al aumento del gasto en marketing.

4. Para maximizar el ROI total con el presupuesto actual, deberíamos considerar reasignar el gasto de las redes sociales y el correo electrónico hacia TV y OOH, ya que tienen un ROI más alto.

Consideraciones prácticas

La calidad y los conocimientos del modelo siguen dependiendo de la calidad de los datos de entrada. El diseño oportuno es fundamental para evitar ideas engañosas. La automatización para el procesamiento de datos de entrada y la visualización y generación de informes de resultados de modelos ayudará a que esta pila funcione a escala.

Pensamientos finales

Este tutorial ilustra cómo un potencial MMM bayesiano basado en código abierto aumentado con un flujo de trabajo GenAI puede traducir resultados bayesianos complejos en conocimientos prácticos para especialistas en marketing y líderes.

Este enfoque no intenta simplificar las matemáticas detrás de los modelos de Marketing Mix, sino que las preserva e intenta hacerlas más accesibles para audiencias más amplias con conocimiento del modelo y recursos presupuestarios limitados para su organización.

A medida que los análisis de marketing seguros para la privacidad se convierten en una norma, los sistemas MMM de código abierto con aumento GenAI ofrecen un camino sostenible: transparente, adaptable y diseñado para evolucionar tanto con el negocio como con la tecnología subyacente.

Recursos y referencias: