Hace algunos años tuve la ocasión de participar en un proyecto de Datawarehousing con la solución SAP BW en un cliente del sector retail alimentación, la arquitectura que tenían era un BW 7.0 con base de datos Oracle. Como podéis imaginar, las volumetrías eran bastante altas por lo que había que hilar muy fino en lo relativo al modelo de datos y aplicar las opciones que había en ese momento para tener un rendimiento entre aceptable y bueno (compresión, particiones, agregados y unas queries orientadas a rendimiento).

Uno de los procesos que había definidos era la creación de segmentos de clientes basados en segmentación RFM que en ese momento se implementó con funcionalidad de BW y con reglas estáticas para el cálculo de los segmentos; así que en este post vamos a ver un enfoque para realizar una segmentación RFM con un dataset demo pero empleando funcionalidad nativa de Hana.

En este post con la primera parte os cuento el modelo físico, lógico y el approach con Hana AFM

Parte I: El modelo y RFM empleando Hana AFM

Antes de nada empecemos por el principio.

¿Qué es una segmentación RFM?

La segmentación RFM es una técnica muy popular de marketing que permite segmentar a los clientes en grupos con un comportamiento homogéneo analizando el histórico de compras con el objetivo de establecer campañas o acciones adaptadas a las características de cada grupo.

Se establecen 3 ejes de análisis:

  • Recencia (R): Como de reciente es la visita o compra del cliente (Fecha de la última compra).
  • Frecuencia (F): Volumen de transacciones de compra (Número de transacciones).
  • Monetario (M): Importe de las compras (Importe).

EL RFM permite responder por ejemplo a preguntas del tipo:

  • Quiénes son tus mejores clientes.
  • Clientes susceptibles dejar de comprar (churn).
  • Qué clientes nos interesa retener y cuáles dejar marchar (Principio de Pareto aplicado a ventas y marketing).
  • ….

Vamos a echar un vistazo al funcionamiento de una segmentación RFM. Dado un dataset con histórico de ventas por cliente.

Dataset

Establecemos unos intervalos agrupando los valores individuales, normalmente 5, para segmentar cada uno de los 3 ejes. El valor 5 representa el segmento con la compra más reciente (R), con mayor frecuencia (F) y con mayor valor monetario (M) mientras que el valor 1 representa el segmento con la compra más antigua (R) con la menor frecuencia (F) y con el menor valor monetario (M).

Segmentos RFM

Finalmente determinamos el segmento RFM concatenando el valor de cada segmento individual y calculamos el score.

Score = (R + F + M) / 3

RFM y Score del Cliente
Lumira Discovery Segmentos RFM

Vamos a echar un vistazo a los elementos que serán necesarios en nuestro ejemplo.

  • El modelo de datos físico: Las tablas con el dataset cargado.
  • El modelo de datos lógico: Modelo de vistas con los cálculos y relaciones. La idea de este modelo es que de servicio a reporting y sirva de base para el cálculo del RFM.
  • Hana PAL para creación de los segmentos.
  • Hana DSI (Smart Data Integration) para persistencia.
  • Herramienta de BI para visualización.

Modelo de datos físico

El modelo de datos del que partimos tiene un conjunto de tablas donde una de ellas contiene los datos transaccionales de los tickets de venta a nivel de posición con el producto vendido y otras actúan como tablas de datos maestros (atributos y descripciones). En nuestro ejemplo trabajaremos con un total unos 31 millones de registros de datos transaccionales, 5.000 productos y 50.000 clientes.

Datos Transaccionales
Volumetrias del Dataset
Vista del modelo de datos físico en EA Designer

Modelo de datos lógico

Para crear el modelo de datos lógico, nos hemos decantado por la funcionalidad de Hana Modelling, creando un conjunto de vistas calculadas (calculation views) que nos ha permitido crear un modelo de datos virtual donde relacionamos las tablas, generamos KPI’s y semántica al vuelo en tiempo de ejecución.

Vista modelo de datos físico EA Designer
Calculation View Datalineage
Detalle Calculation view con los cálculos al vuelo

Este conjunto de vistas se encargará de proporcionarnos las métricas que necesitamos para generar nuestro análisis RFM además de permitir explotar la información desde herramientas de BI, adicionalmente tenemos una última vista donde realizamos la exposición de los campos que vamos a emplear en la segmentación (cliente, importe, nº de transacciones y días desde última compra). El detalle de cálculo de cada uno es el siguiente:

  • Para la recencia: La obtenemos mediante una diferencia de fechas entre el momento de análisis y el momento de cada una de las compras. Como nos interesa la compra más reciente aplicamos un ranking para quedarnos con la 1ª compra, es decir, la más reciente.
Ranking para la recencia

Para la frecuencia: La obtenemos mediante un ratio que aplica un count distinct sobre el campo ID del Ticket, es decir, aplicamos un conteo para saber el número de tickets y por tanto saber cuántas veces ha realizado compras del cliente en el intervalo de tiempo seleccionado.

Count Distinct para la frecuencia

Para el monetario: La obtenemos a través de un ratio de tipo decimal con método de agregación sum, nos proporciona el importe de la venta en el intervalo de tiempo seleccionado.

Agregación Sum para el Monetario

Hana PAL (Binning) – Creación de segmentos

Para la determinación de segmentos puede ser qué directamente nos hayan especificado el número y cómo deben ser los intervalos en cada uno de ellos, en cuyo caso simplemente realizaremos la definición en la implementación conforme a esas reglas.

Por ejemplo crear 5 intervalos para el segmento monetario con los siguientes ámbitos de valores:

  • De 0 – 100 — Segmento 1.
  • De 101 – 1000 — Segmento 2.
  • De 100.000 a 200.000 — Segmento 5.

Sin embargo, como parte del ejemplo de este post, lo que vamos a hacer en lugar de definir una serie de intervalos manuales es definirlos empleando los algoritmos disponibles en el PAL de Hana, en particular emplearemos el algoritmo de Binning o discretización.

En este link (Hana Pal Binning) tenemos el detalle de las opciones que pueden aplicarse para la obtención de intervalos.

Help.sap.com Hana Pal Binning

Binning Enfoque 1: AFM (Application Function Modeler)

El Application Function Modeler o AFM es una funcionalidad disponible tanto en Hana Studio (XS Classic) cómo Web IDE for Hana (XS Advance) que permite crear en una serie de flujos denominados flowgraphs que se implementan de manera gráfica para modelar y tratar los datos, se selecciona la fuente, el destino y en medio disponemos de una amplia variedad de operadores. Por defecto la activación de un flowgraph genera un procedimiento en el sistema.

Algunos de los operadores que admite son los siguientes:

Operadores disponibles en Flowgraph
Funciones PAL en Flowgraph

En nuestro ejemplo vamos a implementar 4 Flowgraphs para calcular el RFM, 3 de ellos nos servirán para obtener la R, la F y la M y el cuarto se encargará de unir esta información y persistirla físicamente en una tabla del sistema.

Flowgraph

Recencia

Como origen seleccionaremos el ratio “Diferencia de días” que previamente hemos creado en la vista.

La configuración del binning es la siguiente para generar 5 bins.

Configuración del Binning de Recencia

Frecuencia

Como origen seleccionaremos el ratio “Nº de transacciones” que previamente hemos creado en la vista.

Configuración del Data de Frecuencia

La configuración del binning es la siguiente para generar 5 bins.

Configuración del Binning de Frecuencia

Monetario

Como origen seleccionaremos el ratio “Importe” que previamente hemos creado en la vista.

Configuración del Data de Monetario

La configuración del binning es la siguiente para generar 5 bins.

Configuración del Binning de Monetario

Cómo pasó final hemos implementado un último flowgraph que será el encargado de unir la R la F y la M calculadas previamente y persistirlas en una tabla en Hana.

Generamos persistencia en una tabla con la segmentación RFM por cliente

Ejecutamos el proceso

El siguiente paso será ejecutar nuestro proceso esto podemos hacerlo de 2 maneras bien manualmente desde cada uno de los flowgraphs presionando el icono de “Execute” o a través de sentencias de SQL script.

Ejecución del proceso RFM via SQL

Una vez ejecutado el proceso correctamente el aspecto qué tiene la tabla donde ya tendremos todos los clientes perfectamente categorizados con cada uno de los intervalos es el siguiente.

Segmentación RFM final

Llegados a este punto hemos finalizado el ejemplo para realizar una segmentación de clientes RFM empleando la funcionalidad gráfica AFM (Application Function Modeler) mediante Flowgraphs.

En el siguiente post os contaré cómo realizar la misma aproximación, pero utilizando la API de Python para algoritmos de Machine learning en Hana y algunas visualizaciones interesantes utilizando una conexión Live contra este modelo desde SAP Analytics Cloud (SAC) y así poder analizar los segmentos.

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.