¿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 si fueran 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: Recency, Frequency 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 Pita, premio 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