Segmentación RFM: recencia, frecuencia y valor

Segmentación de clientes en Python

Karolis Urbonas

Head of Data Science, Amazon

¿Qué es la segmentación RFM?

Segmentación de clientes por comportamiento basada en tres métricas:

  • Recencia (R)
  • Frecuencia (F)
  • Valor monetario (M)
Segmentación de clientes en Python

Agrupar valores RFM

Los valores RFM pueden agruparse de varias formas:

  • Percentiles, p. ej., cuantiles
  • Corte Pareto 80/20
  • Personalizado: según el negocio

Aplicaremos agrupación por percentiles.

Segmentación de clientes en Python

Repaso rápido de percentiles

Cómo calcular percentiles:

  1. Ordena clientes por esa métrica
  2. Divide en un número predefinido de grupos del mismo tamaño
  3. Asigna una etiqueta a cada grupo
Segmentación de clientes en Python

Calcular percentiles con Python

Datos con ocho CustomerID y valores de Spend calculados al azar.

dummy_percentile_data

Segmentación de clientes en Python

Calcular percentiles con Python

spend_quartiles = pd.qcut(data['Spend'], q=4, labels=range(1,5))

data['Spend_Quartile'] = spend_quartiles
data.sort_values('Spend')

Segmentación de clientes en Python

Asignar etiquetas

  • Puntuación más alta para la mejor métrica; la mejor no siempre es la más alta (p. ej., recencia)
  • Aquí la etiqueta es inversa: cuanto más reciente el cliente, mejor

Segmentación de clientes en Python

Asignar etiquetas

# Crea etiquetas numeradas
r_labels = list(range(4, 0, -1))

# Divide en grupos según cuartiles recency_quartiles = pd.qcut(data['Recency_Days'], q=4, labels=r_labels)
# Crea nueva columna data['Recency_Quartile'] = recency_quartiles
# Ordena recencia de menor a mayor data.sort_values('Recency_Days')
Segmentación de clientes en Python

Asignar etiquetas

Como ves, las etiquetas de cuartil están invertidas: los clientes más recientes valen más.

recency_quartiles

Segmentación de clientes en Python

Etiquetas personalizadas

Podemos definir una lista con cadenas u otros valores, según el caso.

# Crea etiquetas de texto
r_labels = ['Active', 'Lapsed', 'Inactive', 'Churned']

# Divide en grupos según cuartiles recency_quartiles = pd.qcut(data['Recency_Days'], q=4, labels=r_labels) # Crea nueva columna data['Recency_Quartile'] = recency_quartiles # Ordena de menor a mayor data.sort_values('Recency_Days')
Segmentación de clientes en Python

Etiquetas personalizadas

Etiquetas personalizadas para cada cuartil

Recency_quartiles

Segmentación de clientes en Python

¡Vamos a practicar con percentiles!

Segmentación de clientes en Python

Preparing Video For Download...