Recency-, frequentie- en monetarisering (RFM)-segmentatie

Klantsegmentatie in Python

Karolis Urbonas

Head of Data Science, Amazon

Wat is RFM-segmentatie?

Gedragssegmentatie van klanten op basis van drie metrics:

  • Recency (R)
  • Frequentie (F)
  • Monetaire waarde (M)
Klantsegmentatie in Python

RFM-waarden groeperen

RFM-waarden kun je op meerdere manieren groeperen:

  • Percentielen, bv. kwantielen
  • Pareto 80/20-scheiding
  • Aangepast – op basis van businesskennis

We gaan groeperen op basis van percentielen.

Klantsegmentatie in Python

Korte review van percentielen

Stappen voor percentielen:

  1. Sorteer klanten op die metriek
  2. Verdeel in vooraf ingestelde groepen van gelijke grootte
  3. Ken elk groep een label toe
Klantsegmentatie in Python

Percentielen berekenen met Python

Data met acht CustomerID en willekeurig berekende Spend-waarden.

dummy_percentile_data

Klantsegmentatie in Python

Percentielen berekenen met Python

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

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

Klantsegmentatie in Python

Labels toekennen

  • Hoogste score voor de beste metriek – beste is niet altijd hoogste, bv. recency
  • Hier is het label omgekeerd: hoe recenter de klant, hoe beter

Klantsegmentatie in Python

Labels toekennen

# 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')
Klantsegmentatie in Python

Labels toekennen

Zoals je ziet zijn de kwartiel-labels omgekeerd, omdat recentere klanten waardevoller zijn.

recency_quartiles

Klantsegmentatie in Python

Aangepaste labels

We kunnen een lijst met strings of andere waarden definiëren, afhankelijk van de usecase.

# 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')
Klantsegmentatie in Python

Aangepaste labels

Aangepaste labels per kwartiel

Recency_quartiles

Klantsegmentatie in Python

Laten we oefenen met percentielen!

Klantsegmentatie in Python

Preparing Video For Download...