Segmentasi recency, frequency, monetary (RFM)

Segmentasi Pelanggan dengan Python

Karolis Urbonas

Head of Data Science, Amazon

Apa itu segmentasi RFM?

Segmentasi perilaku pelanggan berdasarkan tiga metrik:

  • Recency (R)
  • Frequency (F)
  • Monetary Value (M)
Segmentasi Pelanggan dengan Python

Mengelompokkan nilai RFM

Nilai RFM dapat dikelompokkan dengan beberapa cara:

  • Persentil, mis. kuantil
  • Potongan Pareto 80/20
  • Kustom — berdasarkan pengetahuan bisnis

Kita akan menerapkan pengelompokan berbasis persentil.

Segmentasi Pelanggan dengan Python

Tinjauan singkat persentil

Proses menghitung persentil:

  1. Urutkan pelanggan berdasarkan metrik tersebut
  2. Bagi ke sejumlah grup berukuran sama
  3. Beri label tiap grup
Segmentasi Pelanggan dengan Python

Hitung persentil dengan Python

Data dengan delapan CustomerID dan nilai Spend yang dihitung acak.

dummy_percentile_data

Segmentasi Pelanggan dengan Python

Hitung persentil dengan Python

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

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

Segmentasi Pelanggan dengan Python

Memberi label

  • Skor tertinggi untuk metrik terbaik – terbaik tidak selalu tertinggi, mis. recency
  • Di sini label dibalik — makin baru pelanggan, makin baik

Segmentasi Pelanggan dengan Python

Memberi label

# 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')
Segmentasi Pelanggan dengan Python

Memberi label

Seperti terlihat, label kuartil dibalik, karena pelanggan yang lebih baru lebih bernilai.

recency_quartiles

Segmentasi Pelanggan dengan Python

Label kustom

Kita dapat membuat daftar label string atau nilai lain, sesuai kebutuhan.

# 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')
Segmentasi Pelanggan dengan Python

Label kustom

Label kustom untuk tiap kuartil

Recency_quartiles

Segmentasi Pelanggan dengan Python

Ayo berlatih dengan persentil!

Segmentasi Pelanggan dengan Python

Preparing Video For Download...