¡AHORA PUEDES PAGAR CUANDO TENGAS TRABAJO!
Contactar
ONLINE
Menu
ONLINE
Contactar

Cómo crear una solución de propensión de compra

10 de febrero de 2021 17:29:24 CET

La propensión de compra es ampliamente aplicable a muchos sectores, como puede ser el retail, finanzas, seguros y todos aquellos en los que afecta directamente a logística; compras, producción y por supuesto al departamento de marketing.

En casi todos los programas de Data Science se enseña mucha práctica sobre modelos de aprendizaje automático, pero se ven pocos casos de cómo aplicarlos. Aquí viene el reto de todos estudiantes que recién acaban un bootcamp en NEOLAND, estudiar los diferentes pipeline, o procesos, de machine learning y poniendo en práctica lo estudiado para finalmente entender qué viene después de crear un modelo en tu propio ordenador local. 

¿Qué vamos a ver?

En este post, se explicará cómo crear una solución de inicio a fin con BigQuery ML y Kubeflow Pipelines, una herramienta de flujo de trabajo de operaciones de aprendizaje automático. En este ejemplo utilizaremos el notebook oficial de Google Cloud Platform utilizando un conjunto de datos de Google Analytics para determinar qué clientes tienen propensión a comprar

La idea es poder utilizar la solución para llegar a tus clientes objetivo en una campaña online y también offline, así como en el resto de campañas de digital marketing. Es un ejemplo real y que además los estudiantes del Bootcamp de Data Science Part-Time en NEOLAND están estudiando. De esta manera, podrán usarlo cuando el cliente está navegando en un sitio web de comercio electrónico y paralelamente crear un recomendador de algunos productos o enviar un correo electrónico personalizado al cliente.

¿Por qué son importantes los modelos de propensión?

Según un estudio realizado por McKinsey, el saber utilizar correctamente un caso de uso de personalización de campañas y perfilado de usuario, permite a las empresas crear entre 1 y 3 billones de dólares de facturación adicional. Aunque existen en la actualidad empresas que se encargan de recoger datos de los usuarios (siempre cumpliendo con la GDPR), no siempre son eficientes ni generan un retorno esperado. Los modelos de propensión son importantes ya que son claves para el éxito. Utilizados correctamente pueden dirigirse de manera más eficaz a los clientes que tienen más probabilidades de comprar determinados productos. 

Arquitectura de la solución de inicio a fin y pasos de implementación habituales

Veamos cómo funciona "el todo". Primero debemos seleccionar los atributos, crearemos una etiqueta de clasificación (le indicamos si un cliente tiene la propensión a comprar), crearemos un modelo, el modelo lanzará su decisión y predicción en BigQuery con BigQuery ML. Si nunca has utilizado Google Cloud Platform no te preocupes, existen muchos ejemplos útiles de cómo crear modelos de aprendizaje automático en BigQuery mediante consultas SQL estándar. 

Esto significa que no se necesita exportar tus datos para entrenar e implementar modelos de aprendizaje automático; al entrenar, también se está implementando en el mismo paso. En combinación con el escalado automático de los recursos informáticos de BigQuery, no tendrás que preocuparte por hacer girar un clúster o crear una canalización de implementación y entrenamiento de modelos. Esto significa que ahorrarás tiempo en la creación del canal de aprendizaje automático, lo que permitirá que tu empresa se centre más en el valor del aprendizaje automático en lugar de dedicar tiempo a configurar la infraestructura. 

Para automatizar este proceso de creación de modelos, se utilizará un organizador mediante Kubeflow Pipelines, una plataforma para la creación e implementación de dispositivos portátiles, flujos de trabajo escalables de aprendizaje automático (machine learning) basados en contenedores Docker.

Aquí el esquema completo de la arquitectura a realizar:

La solución implica los siguientes pasos:

  1. Identificar la fuente de datos con el historial de compras de clientes anteriores y cargar los datos en BigQuery.
  2. Preparar los datos para las tareas de Machine Learning (ML).
  3. Crear un modelo de aprendizaje automático que determine la propensión de un cliente a comprar.
  4. Unificar los datos del cliente con un sistema CRM para recopilar detalles del cliente (por ejemplo, identificación de correo electrónico, otras informaciones del cliente, etc.).
  5. Determinar qué producto deberíamos recomendar al cliente.
  6. Lanzar una campaña digital con los datos anteriores (o utilizar este modelo junto con la API de Google Ads, Facebook Ads, etc.).
  7. Gestionar el ciclo de vida de la comunicación con el cliente (por ejemplo, correo electrónico) en el CRM o similar.
  8. Redefinir el valor de vida útil del cliente a partir del resultado de la campaña.
  9. Monitorear los modelos para asegurarse de que cumplan con las expectativas.
  10. Volver a entrenar el modelo, si es necesario, basándose en un nuevo conjunto de datos o en un conjunto de datos rectificado

Todos estos pasos serán explicados a continuación, aquí puedes ver el link con el notebook oficial para realizar los 3 primeros pasos de esta solución. Evidentemente, no se pudo insertar datos del CRM porque iría relacionado con las herramientas del cliente.

Paso 1. Identificar la fuente de datos y cargarlos en BigQuery

Dependiendo de donde se encuentren los datos en tu empresa, debemos determinar las mejores técnicas de preprocesamiento para llevar los datos a BigQuery. Podemos automatizar el preprocesamiento en una canalización de MLOps, que veremos más adelante.

Para este ejemplo se utilizará solo el conjunto de datos alojados en BigQuery, que proporciona 12 meses (agosto de 2016 a agosto de 2017), son datos de Google Analytics 360 de Google Merchandise Store, una tienda de comercio electrónico real que vende productos con la marca Google.

Captura de la tienda Google Merchandise Store.

Y una muestra de consulta estándar con nuestro dataset de ejemplo de Google Analytics:

Paso 2. Preparar los datos para las tareas de Machine Learning (ML)

Ahora que tenemos el conjunto de datos, comenzamos a preparar los datos para el desarrollo del modelo de machine learning. Seleccionamos los atributos (las variables independientes) y las etiquetas adecuadas si deseamos realizar el aprendizaje supervisado. Para este artículo, se utilizarán un par de atributos con fines de demostración y solo utilizando SQL.

La query creará una tabla para entrenar el modelo, con los atributos tasa de rebote y tiempo de sesión, (bounces, time_on_site) y la etiqueta will_buy_on_return_visit que utilizaremos para crear el modelo después:

Aquí el resultado:

Paso 3. Crear un modelo que determine la propensión de un cliente a comprar

¿Qué tipo de modelo debemos utilizar? ¿Cuáles son todas las variables independientes a utilizar? ¿Cuál debería ser el conjunto de hiperparámetros para el modelo? Aquí llega el momento de poner en práctica nuestras habilidades como científicos de datos. 

En este tercer paso debemos clasificar si un cliente tiene la propensión a comprar. Por tanto, es una tarea de clasificación y siendo un modelo de uso común, utilizaremos la regresión logística que con BigQuery ML lo tenemos identificado en la documentación oficial.

La query será similar a esta:

Una vez creado el modelo, podemos verificar qué tan bien se comporta el modelo según ciertas reglas. Hemos adoptado algunas reglas empíricas (por ejemplo, ROC-AUC> 0.9) pero podemos ajustarlas según nuestras necesidades específicas.

La query evaluará el modelo según el valor esperado ROC AUC:

El resultado será el siguiente:

¿Estamos logrando construir un buen modelo?

No es fácil contestar observando un solo resultado, la curva de ROC utilizada en este ejemplo, pero lo más probable es que no. Porque un ROC_AUC del 84% se considera un scoring decente, pero no óptimo.

Se necesita mucho conocimiento del sector para construir un buen modelo. Este no es el mejor modelo que podríamos crear, pero nos da una línea de base. El objetivo de este artículo es crear una canalización de un extremo a otro más que enfocarnos en el rendimiento del modelo, por lo que un ajuste fino del modelo está fuera del alcance de este artículo.

El modelo entrenado podrá ayudarte a llegar a tus clientes en una campaña tanto offline como con campañas de marketing online. Así que usaremos la predicción por lotes (batch) para el primero y la predicción en línea (streaming) para el último. Además, aprovechando la plataforma de Google Cloud Platform, podemos usar el modelo entrenado para la predicción por lotes de un conjunto de datos grande en BigQuery, o implementar el modelo en Google Cloud AI Platform para la predicción en línea.

3a. Utilizar el modelo para la predicción en lotes

Para el escenario de campaña en modo offline, podemos realizar predicciones por lotes asincrónicas en un conjunto de datos grande. Creamos una tabla en BigQuery e insertamos todas los datos de entrada para las que deseamos predecir. Se creará una tabla rpm_ds_propensity_prediction_input_tbl en BigQuery, con cada fila como un cliente con rebotes y características de tiempo en el sitio. Luego, utilizaremos el modelo entrenado para predecir todas las entradas / filas.

La query será la siguiente:

El resultado de esta query será similar a esta con el resultado 1 para aquellos visitantes que comprarán en la próxima sesión:

¿El modelo predice correctamente?

Tal vez. Sin duda necesitaríamos profundizar más. Es posible que pudiéramos verificar las características, los parámetros, el umbral, que en este ejemplo es de 0.5 por defecto en el ML.PREDICT anterior, etc. y para ajustar el modelo.

3c. Utilizar el modelo para la predicción online

Para el escenario de la campaña en línea, necesitamos implementar el modelo en Cloud AI Platform. Es un proceso de dos pasos. Primero, debemos exportar el modelo y luego implementarlo en Cloud AI Platform, que expone una llamada REST y así para brindar predicción en línea.

Aquí la sentencia para exportar el modelo de BigQuery ML a Google Cloud Storage: 

En segundo lugar, debemos implementar el modelo exportado en Cloud AI Platform Prediction, que aloja el modelo entrenado, para que podamos enviar las solicitudes de predicción. Aquí se muestra el comando para implementar el modelo en Cloud AI Platform Prediction:

Ahora podemos predecir en línea a través de una solicitud / respuesta web utilizando la aplicación web para realizar acciones en el momento, como mostrar contenido personalizado o activar un proceso asincrónico. A continuación se muestra el comando donde puede probar rápidamente la predicción en línea:

El resultado será similar al siguiente:

En el resultado anterior, el modelo predijo que este cliente en particular tiene la propensión a comprar ya que PREDICTED_WILL_BUY_ON_RETURN_VISIT devuelve 1. Dada esta prueba de" 0 "rebotes y" 7363 "segundos en time ontsite, el modelo nos dice que hay un 92% posibilidad de que tengan la propensión a comprar. Con esta información, podemos enviarle un cupón al cliente (o quizás solo queremos regalar cupones a clientes entre 0.5 y 0.8 de probabilidad, porque hay una alta probabilidad de que compren el artículo también sin incentivos).

Por supuesto, podemos utilizar otras herramientas además de gcloud, por ejemplo (wget, curl, postman, etc.) para verificar rápidamente el endpoint del tipo REST.

4. Unificar los datos del cliente con un CRM 

Por lo tanto, ahora podemos predecir si un cliente tiene la propensión a comprar por lotes o en línea. ¿Y qué viene ahora?

Bueno, estamos usando fullvisitorid en el conjunto de datos. Necesitaremos los detalles del cliente, como la dirección de correo electrónico, porque su conjunto de datos no los tiene. La idea es recopilarlos de un sistema de gestión de relaciones con el cliente (CRM). Por lo tanto, necesitamos integrarnos con un sistema CRM para lograr el objetivo.

Si estamos utilizando Google Analytics y GA4 versión free, hay que realizar una tarea de matching para ello utilizaremos una hoja de cálculo, en caso de integración con Salesforce, estará disponible en GA360. El artículo habla sobre cómo integrar la Google Analytics 360 con Salesforce Marketing Cloud. La integración permite publicar audiencias creadas en Analytics 360 en Marketing Cloud y utilizar esas audiencias en las campañas de marketing directo por correo electrónico y SMS de Salesforce. Debemos determinar el mecanismo de integración adecuado en función de la plataforma CRM.

Últimos pasos desde el 5 hasta el 10

El resto de los pasos de la solución se explican por sí mismos, aunque puede que no sea tan trivial integrar e interoperar los sistemas. Pero, bueno, ese es un desafío continuo en el ciclo de vida del desarrollo de software en general, ¿no es así? También podemos consultar algunas pautas a medida que los próximos pasos potenciales continúan basándose en la solución existente.

Automatización y creación del pipeline de Machine Learning

Ahora vamos a crear un pipeline de machine learning para automatizar la solución de los pasos descritos de 1 a 3. Para ello utilizaremos Kubeflow Pipelines (KFP) y KFP administrado, Cloud AI Platform Pipelines en Google Cloud.

A continuación se muestra la representación visual de los pasos de la solución, que están disponibles en el mismo notebook en github visto anteriormente.

 

A continuación se muestra la representación visual de los pasos de las soluciones que se basan en la implementación actual:

Los tres enlaces en los diagramas anteriores son:

  • Consulta este artículo para tener una idea sobre cómo utilizar los clientes que tienen propensión a comprar con un sistema CRM.
  • Consulta este artículo, para obtener una idea de cómo puede utilizar Matrix Factorization para recomendar productos indicado en este documento.
  • Consulta el Capítulo 6 "Conjuntos de elementos frecuentes" del libro "Minería de conjuntos de datos masivos", para tener una idea de cómo crear una lista de productos de uso frecuente.

A continuación, se muestra el resultado de Cloud AI Platform Pipelines cuando ejecutamos el experimento de KFP desde el notebook. Cuando ejecutamos el experimento, es muy probable que resultado no sea el mismo:

Cada cuadro representa un componente de KFP. Puedes consultar el notebook de jupyter anterior para conocer la semántica, la sintaxis, el paso de parámetros en la función, etc. 

Conclusiones

Y llegamos al final de este largo post. Aprendimos a crear un modelo de propensión con BigQuery ML y cómo organizar un flujo de ML en Kubeflow Pipelines.

Nos faltaría estudiar mejor nuestro punto de partida, ya que tenemos disponible datos de Google Analytics, al cambiar el flujo de entrada debemos identificar otros atributos clave para nuestro modelo, el resto es cuestión de despliegue de servicios en cloud, lo mismo podemos realizarlo en AWS o Azure, hasta otros más específicos para trabajos de optimización de memoria en streaming, como Databricks. Finalmente hablamos de un solo pipeline, pero existen muchos más casos de uso.

Espero que sea de utilidad este post para tu puesta en producción del modelo de machine learning aplicado a tu caso de uso y no dudes de comentar en caso estar utilizando otro similar o si has tenido experiencia con Kubeflow.


Si quieres aprender a desarrollar soluciones como esta, no lo pienses más, fórmate en nuestros Data Science Bootcamp.

También te puede interesar

Estos post sobre Data Science

Suscríbete a nuestro email

Todavía no hay comentarios

Dinos que estás pensando