Segmentarea RFM (Recency, Frequency, Monetary)

Segmentarea clienților în Python

Karolis Urbonas

Head of Data Science, Amazon

Ce este segmentarea RFM?

Segmentare comportamentală a clienților bazată pe trei metrici:

  • Recență (R)
  • Frecvență (F)
  • Valoare monetară (M)
Segmentarea clienților în Python

Gruparea valorilor RFM

Valorile RFM pot fi grupate în mai multe moduri:

  • Percentile, ex. cuartile
  • Tăietură Pareto 80/20
  • Personalizat - bazat pe cunoașterea afacerii

Vom implementa gruparea bazată pe percentile.

Segmentarea clienților în Python

Recapitulare: percentile

Procesul de calcul al percentilelor:

  1. Sortați clienții după metrică
  2. Împărțiți clienții în grupuri egale ca număr
  3. Atribuiți o etichetă fiecărui grup
Segmentarea clienților în Python

Calculul percentilelor în Python

Date cu opt CustomerID și valori Spend calculate aleatoriu.

dummy_percentile_data

Segmentarea clienților în Python

Calculul percentilelor în Python

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

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

Segmentarea clienților în Python

Atribuirea etichetelor

  • Cel mai mare scor pentru cea mai bună metrică - cel mai bun nu înseamnă întotdeauna cel mai mare, ex. recența
  • În acest caz, eticheta este inversă - cu cât clientul este mai recent, cu atât este mai valoros

Segmentarea clienților în Python

Atribuirea etichetelor

# 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')
Segmentarea clienților în Python

Atribuirea etichetelor

Etichetele de cuartilă sunt inversate, deoarece clienții mai recenți sunt mai valoroși.

recency_quartiles

Segmentarea clienților în Python

Etichete personalizate

Se poate defini o listă cu valori de tip string sau altele, în funcție de caz.

# 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')
Segmentarea clienților în Python

Etichete personalizate

Etichete personalizate atribuite fiecărei cuartile

Recency_quartiles

Segmentarea clienților în Python

Să exersăm cu percentile!

Segmentarea clienților în Python

Preparing Video For Download...