Viewing entries tagged
segmentar

Fidelizando clientes con RFM en Sql Server

Fidelizando clientes con RFM en Sql Server

La segmentación de clientes es fundamental en las estrategias de mercadeo directo, pues para cada grupo se tendrá un objetivo comercial diferente según sus características, y por supuesto, las estrategias y la comunicación será específica para cada uno.

RFM es un método bastante sencillo para agrupar a los clientes según su importancia para el negocio, calificándolos en tres dimensiones.

R hace referencia al término Recencia, que indica que tan recientemente hizo el cliente una compra; F en cambio indica la frecuencia con la que el cliente consume los productos o servicios y finalmente M indica el monto adquirido. Este último puede ser el valor de la venta o la rentabilidad generada según los intereses de la empresa.

Lo que hace el método es darle una calificación, para el caso del ejemplo, en quintiles (de 1 a 5) a cada una de las categorías, así el cliente de mayor rentabilidad tendrá una calificación de 5, mientras el que el más bajo tendrá una calificación de 1. Lo mismo se aplica para la Recencia (el mas reciente 5) y la Frecuencia (el más frecuente 5).

Finalmente con este proceso se lograrán grupos o clusters de clientes calificados en las tres áreas RFM, por ejemplo clientes que tengan 555, indicando que en R, F y M este grupo tiene la mejor calificación. Estos deberían ser los clientes VIP. Otro grupo puede tener una calificación 552, indicando que en R y F tienen calificaciones 5 pero en monto solo una calificación de dos. Estos clientes serían los que han venido recientemente al negocio y además que lo hacen con frecuencia pero que a pesar de ello consumen poco valor en dinero. La estrategia para estos clientes debe ser que aprovechando su importante número de visitas suban su ticket de facturación. Para ello se debería hacer una campaña de marketing directo apuntada y con una comunicación específica para esos clientes que logre el objetivo indicado.

En MS Sql Server podemos generar los clusters para la calificación de las dimensiones con la función NTILE. Al indicarle a NTILE el orden en el que tiene que generar los grupos, por ejemplo en base al monto, y al decirle el número de clusters que necesitamos, para el ejemplo 5 (quintiles), Sql Server devolverá el conjunto de datos agregándole un número de 1 a 5, de acuerdo al quintil correspondiente:

Para el ejemplo usaremos una tabla de datos de aproximadamente 7000 registros.

Screen Shot 2017-06-17 at 12.28.14.png

El primer paso será agrupar el monto de ventas por cada ClienteID, así mismo seleccionaremos la última fecha de compra usando la función max() de Sql Server y finalmente con count() contaremos el número único de facturas por cada ClienteId, valor que representa la frecuencia.

select ClienteID, count( FacturaID) as RecuentoFacturas, sum(Monto) as SumMonto, max(Fecha) as UltimaFecha from RfmDemo group by ClienteID order by ClienteID

La base de datos de ejemplo tiene datos de los años 1997 y 98. Para establecer la recencia en días, usaremos la fecha mayor como referencia (9/jun/1998) y obtenemos la diferencia entre esa fecha y la fecha de la factura, mientras más cerca la fecha de la factura a la de corte, más alta la calificación de recencia. En este caso mientras menor el número de días de recencia mayor el puntaje, por eso en el momento de agrupar usaremos la opción Order ... Desc.

datediff(d, max(Fecha), '9/6/1998')

Ahora usaremos la función NTile para generar los cluster por cada una de las dimensiones. Es importante insistir que a Ntile hay que indicarle el orden en que queremos agrupar y el número de grupos:

select

ClienteID, count(FacturaID) as RecuentoFacturas, sum(Monto) as SumMonto, datediff(d, max(Fecha), '9/6/1998') as UltimaFecha,

NTILE(5) over (order by datediff(d, max(Fecha), '9/6/1998') desc) as Calificacion_Recencia,

NTILE(5) over (order by count( FacturaID)) as Calificacion_Frecuencia,

NTILE(5) over (order by sum (monto)) as Calificacion_Monto

from RfmDemo

group by ClienteID

order by ClienteID

Finalmente obtendremos un reporte con los campos de calificación RFM, mismos que nos servirán para agrupar a los clientes:

 

Finalmente podemos ver la distribución obtenida por grupos de clientes (número de clientes por grupo). Hay otros métodos estadísticos que permiten crear los grupos con el mismo número de clientes por grupo, pero para nuestro ejemplo lo hemos hecho de la forma natural por dimensión, lo que genera conjuntos con cantidades diferentes de elementos, lo que permite comparar la evolución de los clusters en el tiempo (tomando en cuenta la variación de los parámetros).

 

 

clusters

A. Moya