Segmentazione RFM (Recency, Frequency, Monetary)

Customer Segmentation in Python

Karolis Urbonas

Head of Data Science, Amazon

Cos’è la segmentazione RFM?

Segmentazione comportamentale dei clienti basata su tre metriche:

  • Recency (R)
  • Frequency (F)
  • Monetary Value (M)
Customer Segmentation in Python

Raggruppare i valori RFM

I valori RFM si possono raggruppare in vari modi:

  • Percentili, es. quantili
  • Taglio Pareto 80/20
  • Personalizzato, basato su conoscenza del business

Ora useremo il raggruppamento per percentili.

Customer Segmentation in Python

Ripasso veloce dei percentili

Processo per calcolare i percentili:

  1. Ordina i clienti in base alla metrica
  2. Dividili in un numero predefinito di gruppi di uguale dimensione
  3. Assegna un’etichetta a ogni gruppo
Customer Segmentation in Python

Calcolare i percentili con Python

Dati con otto CustomerID e valori Spend calcolati casualmente.

dummy_percentile_data

Customer Segmentation in Python

Calcolare i percentili con Python

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

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

Customer Segmentation in Python

Assegnare le etichette

  • Punteggio più alto al valore migliore – non sempre il più alto è il migliore (es. recency)
  • Qui l’etichetta è inversa: più recente è il cliente, meglio è

Customer Segmentation in Python

Assegnare le etichette

# Create numbered labels
r_labels = list(range(4, 0, -1))

# Divide into groups based on quartiles recency_quartiles = pd.qcut(data['Recency_Days'], q=4, labels=r_labels)
# Create new column data['Recency_Quartile'] = recency_quartiles
# Sort recency values from lowest to highest data.sort_values('Recency_Days')
Customer Segmentation in Python

Assegnare le etichette

Come vedi, le etichette dei quartili sono invertite: i clienti più recenti valgono di più.

recency_quartiles

Customer Segmentation in Python

Etichette personalizzate

Puoi definire una lista di stringhe o altri valori, in base al caso d’uso.

# Create string labels
r_labels = ['Active', 'Lapsed', 'Inactive', 'Churned']

# Divide into groups based on quartiles recency_quartiles = pd.qcut(data['Recency_Days'], q=4, labels=r_labels) # Create new column data['Recency_Quartile'] = recency_quartiles # Sort values from lowest to highest data.sort_values('Recency_Days')
Customer Segmentation in Python

Etichette personalizzate

Etichette personalizzate assegnate a ogni quartile

Recency_quartiles

Customer Segmentation in Python

Facciamo pratica con i percentili!

Customer Segmentation in Python

Preparing Video For Download...