5/13/2017

Guía para segmentar a empleados como si fueran clientes con RFM

(Eduardo Valencia y Clara Cabañas)
¿Es posible segmentar a los empleados para que las acciones de, por ejemplo compensaciones y desarrollo del talento tengan mejores resultados y se adapten a los perfiles de cada empleado, como se hace regularmente con clientes? 
Ya sabemos que a menudo la analítica de RRHH y el marketing van de la mano (Infografía: 12 técnicas imprescindibles de People Analytics que hemos copiado de Marketing). En este post, una vez más, vamos a seguir la senda marcada por Marketing.

Las campañas de marketing a menudo pueden ser costosas, consumir mucho tiempo, y lo peor de todo, ser ineficaces. Demasiadas empresas desperdician valiosos recursos para clientes y empleados que probablemente no respondan como se esperaba, simplemente porque no se ha hecho una segmentación acertadas.

Si es cierto, por ejemplo, que el 80% de las ventas provienen del 20% de los clientes, ¿cómo pueden los esfuerzos de marketing ser adaptados para llegar más eficazmente a la audiencia correcta?

RECENCIA, FRECUENCIA Y MONETIZACIÓN


El análisis RFM (Recency, Frequency, Monetary) es uno de los métodos de segmentación de clientes más sencillos de implantar, y al mismo tiempo uno de los que mejores resultados aportan a corto plazo.

Se busca determinar determinar cuáles son los mejores clientes a partir de tres métricas: recencia (R = recency), frecuencia (F = frequency) y monetización (M = monetary).

Nota: como todos decimos R, F M (“erre-efe-eme” en español), recurrimos aquí a unas traducciones un tanto forzadas. Nos damos cuenta de que eso de “recencia” suena poco castizo, y lo de “monetización” está pillado por los pelos. También usamos en este post los nombres de las variables en inglés con cierta frecuencia. ¡Perdonad!

Estas tres métricas constituyen los factores más importantes en la segmentación de clientes:
·      A menudo el factor más importante es la recencia (R): días transcurridos desde la última compra. Los clientes que han realizado adquisiciones recientemente tienen más posibilidades de adquirir nuevos productos.
·      El segundo factor más importante es la frecuencia (F): número de compras por período de tiempo. Los clientes que han adquirido más productos tienen más posibilidades de adquirir nuevos productos.
·      El tercer factor más importante es la monetización (M): es decir, la cantidad total que han gastado en un período de tiempo.

La técnica RFM es ampliamente utilizada en el ámbito del marketing, pero no se ha aplicado tradicionalmente en ningún otro campo. En Sngular hemos trasladando esta técnica al campo de People Analytics, concretamente al área profesional de los agentes comerciales.

De esta manera, obtenemos una clasificación de los empleados de una determinada organización con base en los tres parámetros básicos del análisis RFM: RecencyFrequency y Monetary.

En este caso, el análisis se ha aplicado al ámbito de los agentes inmobiliarios, con el fin de poder poner en marcha planes de formación personalizados y planes de compensaciones económicas de acuerdo al desempeño de cada agente.

Para ello, construimos una clasificación (ranking) basada en las tres variables del análisis RFM, asignando a cada empleado un valor según el grupo en que se encuentren. En nuestro caso dividimos los valores de cada variable en cuatro grupos de igual tamaño, o cuartiles.

Por ejemplo, un empleado que estuviera en el 20% de los que más recientemente han efectuado una venta, en el 20% por frecuencia de venta y en el 20% en valor total de ventas, pertenecería al segmento 444.






En la figura puede verse que los valores más altos de cada variable corresponden a los segmentos más favorables, de manera que a menor recencia, mayor el número del segmento para Recency, a mayor frecuencia de ventas, mayor el número del segmento para Frequency, y a mayor valor monetario de las ventas del agente, mayor el número del segmento para Monetary.

Aunque nosotros hayamos elegido los cuartiles, en realidad, lo más habitual es trabajar con una clasificación de  5 niveles (quintiles) como veis en la imagen de abajo. Tampoco es raro el uso de 10 valores (deciles), sobre todo en venta directa y online.


 
Fuente: https://i1.wp.com/www.unica360.com/wpcontent/uploads/RFM_valores.jpg?resize=363%2C289


El análisis RFM constituye una herramienta extremadamente útil que proporciona muy buenos resultados a corto plazo. Además, es un método muy sencillo de implementar.

En este post se muestran dos de las opciones más utilizadas: Excel y R. Desde aquí, abajo, el post se convierte en una especie de tutorial para llevar adelante el análisis. Vamos a necesitar tres archivos:

Dataset para excel: rfm-inmo.csv.zip
Dataset preprocesado para R: rfm-inmo10.csv.zip
Script en R: rfm10.R.zip

Segmentación RFM en Excel


Para realizar una segmentación RFM en Excel partiendo del conjunto de datos original, es necesario un ligero pre-procesado de los datos para convertirlos a un formato apropiado para el análisis RFM.
 

El primer paso es crear la variable R (Recency) a partir de la última fecha de venta, de la que se dispone.  Para esto, partiendo del dataset de ejemplo mostrado en la figura, creamos una nueva columna en Excel, en la que los valores correspondan a la fórmula:

= HOY() – F2




Finalmente, calculamos los cuartiles para cada variable y se asigna un valor del 1 al 4 dependiendo de los valores de las variables R, F y M para cada agente. Para esto, y partiendo del dataset resultante del preprocesado, se insertan tres nuevas columnas, correspondientes al valor de los segmentos para cada una de las tres variables.

La variable Rank_R puede obtenerse añadiendo una nueva columna, en la que los valores correspondan a la fórmula:

= SI(G2 < CUARTIL.INC($G$2:$G$125; 1); 4; SI(G2 < CUARTIL.INC($G$2:$G$125; 2); 3; SI(G2 < CUARTIL.INC($G$2:$G$125; 3); 2; 1)))

Análogamente, se crean dos nuevas columnas para las variables Rank_F y Rank_M, cuyos valores serán iguales a las dos fórmulas siguientes respectivamente:

= SI(H2 < CUARTIL.INC($H$2:$H$125; 1); 1;
 SI(H2 < CUARTIL.INC($H$2:$H$125; 2); 2;
 SI(H2 < CUARTIL.INC($H$2:$H$125; 3); 3; 4)))

= SI(I2 < CUARTIL.INC($I$2:$I$125; 1); 1;  SI(I2 < CUARTIL.INC($I$2:$I$125; 2); 2;  SI(I2 < CUARTIL.INC($I$2:$I$125; 3); 3; 4)))

Obtenemos así un modelo RFM para la segmentación de agentes en una determinada inmobiliaria.



Captura de los valores de clasificación de varios empleados para R F y M

 

Repetir el análisis a menudo para entender la segmentación


Un modelo de RFM es una instantánea del comportamiento pasado de los empleados (o clientes) desde la perspectiva actual.

Es necesario repetir el análisis en fases diferentes y utilizar los resultados para mostrar cómo los clientes se mueven entre las diferentes categorías proporciona una profundidad que un solo resultado no puede dar.

La forma más sencilla de hacerlo es crear un archivo de datos simple que almacene las puntuaciones de RFM para cada cliente por fecha.

Utilizando consultas sencillas, se puede extraer la serie temporal de puntuaciones de RFM para clientes individuales y grupos de clientes a lo largo del tiempo.


Segmentación RFM con clustering utilizando R

A continuación vamos a utilizar R para llevar a cabo una segmentación con clustering. Podemos agrupar a los empleados por categorías afines para ayudar a definir acciones que se adapten mejor a sus necesidades específicas.

A partir del análisis de los datos disponibles del empleado se encuentran asociaciones que permiten agrupar a los empleados en segmentos con características comunes. El clustering permite segmentar por comportamientos reales, en base, en este caso a los valores que adoptan las variables de Recencia, Frecuencia y Monetización.


En este post traemos los datos ya pre-procesados. Partimos de un conjunto de datos que contiene los valores de las tres variables R, F y M.

Primero, se convierte la variable que contiene la fecha de la última venta en la variable Recency, que representa el tiempo (en días) que ha transcurrido desde la última venta. Para esto, se ejecuta el siguiente código en R:

El siguiente paso es realizar la segmentación de los agentes inmobiliarios según sus valores para las tres variables, R, F y M.

El modelo RFM genera demasiados segmentos como para que resulte operativo actuar sobre esas agrupaciones.
En nuestro modelo de cuartiles, RFM genera 64 (4*4*4) grupos diferentes de empleados. En el modelo más habitual de quintiles son 125 (5*5*5) los grupos que se generan. En la división con deciles son 1000 los grupos (10*10*10).

Por medio de clustering podemos agrupar a los empleados por categorías afines para ayudar a definir acciones de fidelización que se adapten mejor a sus necesidades específicas.

Antonio Pitapremio al mejor científico de datos de España 2016 en modalidad Data Analysis en los DataScience Awards 2016, fue la primera persona de la que aprendimos a utilizar las variables de RFM para realizar una agrupación por clustering de clientes.

Nosotros hemos aplicado algoritmos de clustering a la segmentación de empleados.


El número óptimo de clústeres

Decidir cuál es el número óptimo de clústeres en un conjunto de datos, es un problema frecuente en analítica. También lo es, por tanto en People Analytics  

Dos recomendaciones para explorar la profundidad de este problema recurrente:

1.     Wikipedia tiene una entrada muy completa sobre este problema: https://en.wikipedia.org/wiki/Determining_the_number_of_clusters_in_a_dataset

2.     Hay un una respuesta muy completa en stackoverflow que contiene el código R para varios métodos de cálculo de un valor óptimo de k para el análisis de clúster k-means: Eight methods for determining an optimal k value for k-means analysis.


En este post vamos a mostrar, en primer lugar el método Silhouette. Más adelante haremos una exploración uno a uno con K-means para valores que van de 2 a 5.


Número óptimo de clústeres con Silhouette


Silhouette es un método de interpretación y validación de la coherencia dentro de un clúster de datos. La técnica proporciona una representación gráfica sucinta de la posición de cada elemento dentro de su agrupamiento.

El valor de Silhouette es una medida de la similitud de un objeto con su propio cluster (cohesión) en comparación con otros clusters (separación). La silueta varía de -1 a 1, donde un valor alto indica que el objeto está bien adaptado a su propio clúster y mal adaptado a los clústeres vecinos.

En R, una línea de código nos da la respuesta.  

fviz_nbclust(rfm3, kmeans, method = "silhouette")

rfm3 es el nombre del data-set después de unas pequeñas transformaciones que se explican con buen número de comentarios en el script  de R (rfm10.R.zip)

 

De acuerdo con Silhouette, por tanto, 2 grupos de empleados parece la segmentación óptima.

 

Otros procedimientos devuelven resultados diferentes. Por ejemplo el método del codo parece sugerir 3 clusters.


El método elbow “codo” examina el porcentaje de varianza explicado como una función del número de clusters: si se traza el porcentaje de varianza explicado por los grupos en función del número de clústeres, los primeros grupos agregarán mucha información (explican mucha varianza), pero en algún momento la ganancia marginal disminuirá, dando un ángulo en la grafico. El número de clusters se elige en este punto, de ahí el "criterio del codo". Este "codo" no siempre puede identificarse inequívocamente.

# Compute and plot wss for k = 2 to k = 15
k.max <- 15 # Maximal number of clusters
data <- rfm3
wss <- sapply(1:k.max,
              function(k){kmeans(data, k, nstart=10 )$tot.withinss})
plot(1:k.max, wss,
     type="b", pch = 19, frame = FALSE,
     xlab="Number of clusters K",
     ylab="Total within-clusters sum of squares")
abline(v = 3, lty =2)

fviz_nbclust(rfm3, kmeans, method = "wss") +
  geom_vline(xintercept = 3, linetype = 2)



Si esta curva fuera un brazo doblado, el codo se correspondería probablemente con k = 3 o (menos claro) incluso con k=4

Decidir el número óptimo de clústeres es, por tanto, una actividad que combina arte y ciencia.



Iteraciones con K-means

 

Vamos a recurrir a un análisis individual de diferentes agrupamientos tal y como se hace con K-means de forma que podamos decidir visualmente la segmentación que mejor se ajusta. K-means busca dividir las observaciones en un número (k) predefinido de clúster en los que cada observación pertenece al clúster con la media más cercana.


K-means=2


#Performing Kmeans = 2

km.res2 <- kmeans(rfm3, 2)
# k-means group number of each observation
km.res2$cluster


Hacemos un plot para visualizar el aspecto de los dos clusters. Resultan razonables.

 

# Visualize k-means = 2 clusters
fviz_cluster(km.res2, rfm3,
             palette = "Set2", ggtheme = theme_minimal())

 


K-means=3


La representación de k=3 también resulta igualmente acceptable.



K-means=4


La separación de los grupos con  k=4 es algo más confusa. Especialmente los grupos 3 y 4 no parecen tener unos límites claros.



K =5


La representación de k=5 no parece ya aceptable. Los grupos 3,4 y 5 aparecen como un solo racimo.


 



Parallel coordinate plot para tres grupos


Más allá del método que utilicemos para elegir el número óptimo de grupos, la clasificación en tres grupos resulta, para nuestra compañía, más razonable, intuitiva y accionable.

Para visualizar los resultados, generamos un parallel coordinate plot con k=3. La gráfica permite visualizar el valor de todas las variables al mismo tiempo para un conjunto de muestras. Hemos aplicado esta gráfica a los centroides de los tres clústeres obtenidos por medio del siguiente código en R:

library(MASS)
parcoord(clustering$centers,col=c("deepskyblue4","firebrick4", "goldenrod3"), var.label = TRUE, main="Parcoord Plot")

La ejecución del código permite la visualización de manera intuitiva de las características de los empleados pertenecientes a cada clúster.




El parallel coordinate plot nos permite ver tres grupos de empleados bien diferenciados entre sí.

·      Clúster azul: los mejores agentes inmobiliarios: presentan valores altos de las variables Frequency y Monetary, y un valor bajo de la variable Recency. Esto significa que realizan un gran número de ventas, por un valor monetario muy alto y su última venta ocurrió recientemente.
·      Clúster rojo: los agentes inmobiliarios con peor desempeño: tienen valores bajos para las variables Frequency y Monetary, y un valor alto para la variable Recency. Esto implica que su número de ventas es pequeño, que el importe de sus ventas es bajo y que hace mucho tiempo desde que realizaron la última venta.
·      Clúster naranja: los agentes inmobiliarios comunes: tienen valores medios para las tres variables, lo que implica que no destacan en ninguna de ellas, ni por exceso ni por defecto.

Nota: Los nombres con los que bautizamos a cada grupo (clúster azul, clúster rojo, clúster naranja) son de creación propia. Podríamos haber recurrido por ejemplo a nombres como “Oro, plata y bronce” o “XL, L y M”.

Conclusión

La combinación de la aplicación de la segmentación RFM clásica y de la agrupación de agentes inmobiliarios por medio de técnicas de clustering permite a los responsables de RR. HH. de la inmobiliaria segmentar de manera operativa a los agentes inmobiliarios.

Dataset para excel: rfm-inmo.csv.zip
Dataset preprocesado para R: rfm-inmo10.csv.zip
Script en R: rfm10.R.zip