Recency, frequency, monetary (RFM)-segmentering

Kundsegmentering i Python

Karolis Urbonas

Head of Data Science, Amazon

Vad är RFM-segmentering?

Beteendebaserad kundsegmentering utifrån tre mätvärden:

  • Recency (R)
  • Frequency (F)
  • Monetary Value (M)
Kundsegmentering i Python

Gruppera RFM-värden

RFM-värdena kan grupperas på flera sätt:

  • Percentiler, t.ex. kvantiler
  • Pareto 80/20-uppdelning
  • Anpassat – baserat på affärskunskap

Vi implementerar percentilbaserad gruppering.

Kundsegmentering i Python

Kort genomgång av percentiler

Så beräknas percentiler:

  1. Sortera kunder efter det aktuella mätvärdet
  2. Dela in kunderna i ett fördefinierat antal lika stora grupper
  3. Tilldela varje grupp en etikett
Kundsegmentering i Python

Beräkna percentiler med Python

Data med åtta CustomerID och slumpmässigt beräknade Spend-värden.

Exempeldata för percentiler

Kundsegmentering i Python

Beräkna percentiler med Python

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

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

Kundsegmentering i Python

Tilldela etiketter

  • Högsta poäng tilldelas det bästa mätvärdet – bäst är inte alltid högst, t.ex. recency
  • I sådana fall inverteras etiketterna – ju nyare kunden är, desto bättre

Kundsegmentering i Python

Tilldela etiketter

# 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')
Kundsegmentering i Python

Tilldela etiketter

Som du ser är kvartiletiketternas ordning omvänd, eftersom nyare kunder är mer värdefulla.

recency-kvartiler

Kundsegmentering i Python

Anpassade etiketter

Du kan definiera en lista med strängar eller andra värden beroende på användningsfall.

# 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')
Kundsegmentering i Python

Anpassade etiketter

Anpassade etiketter tilldelade varje kvartil

Recency-kvartiler

Kundsegmentering i Python

Nu kör vi en övning!

Kundsegmentering i Python

Preparing Video For Download...