Segmentacja według aktualności, częstotliwości i wartości (RFM)

Segmentacja klientów w Pythonie

Karolis Urbonas

Head of Data Science, Amazon

Czym jest segmentacja RFM?

Behawioralna segmentacja klientów oparta na trzech metrykach:

  • Aktualność (R)
  • Częstotliwość (F)
  • Wartość monetarna (M)
Segmentacja klientów w Pythonie

Grupowanie wartości RFM

Wartości RFM można grupować na kilka sposobów:

  • Percentyle, np. kwantyle
  • Podział Pareto 80/20
  • Niestandardowy – oparty na wiedzy biznesowej

Zastosujemy grupowanie oparte na percentylach.

Segmentacja klientów w Pythonie

Krótkie przypomnienie o percentylach

Proces obliczania percentyli:

  1. Posortuj klientów według danej metryki
  2. Podziel ich na określoną liczbę równolicznych grup
  3. Przypisz etykietę do każdej grupy
Segmentacja klientów w Pythonie

Obliczanie percentyli w Pythonie

Dane z ośmioma CustomerID i losowo obliczonymi wartościami Spend.

przykładowe dane percentylowe

Segmentacja klientów w Pythonie

Obliczanie percentyli w Pythonie

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

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

Segmentacja klientów w Pythonie

Przypisywanie etykiet

  • Najwyższy wynik dla najlepszej metryki – „najlepszy" nie zawsze oznacza najwyższy, np. aktualność
  • W tym przypadku etykiety są odwrócone – im niedawniejszy zakup, tym lepiej

Segmentacja klientów w Pythonie

Przypisywanie etykiet

# 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')
Segmentacja klientów w Pythonie

Przypisywanie etykiet

Etykiety kwartyli są odwrócone, ponieważ nowsi klienci są cenniejszi.

etykiety kwartyli aktualności

Segmentacja klientów w Pythonie

Etykiety niestandardowe

Listę etykiet można zdefiniować jako ciągi znaków lub inne wartości, w zależności od przypadku użycia.

# 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')
Segmentacja klientów w Pythonie

Etykiety niestandardowe

Etykiety niestandardowe przypisane do każdego kwartyla

Kwartyle aktualności

Segmentacja klientów w Pythonie

Ćwiczenie z percentylami!

Segmentacja klientów w Pythonie

Preparing Video For Download...