Phân khúc RFM: Tính gần đây, tần suất, giá trị tiền tệ

Phân khúc khách hàng bằng Python

Karolis Urbonas

Head of Data Science, Amazon

RFM là gì?

Phân khúc hành vi khách hàng dựa trên 3 chỉ số:

  • Recency (R)
  • Frequency (F)
  • Monetary Value (M)
Phân khúc khách hàng bằng Python

Nhóm giá trị RFM

Có nhiều cách nhóm giá trị RFM:

  • Phần trăm vị, ví dụ: phân vị/quantil
  • Cắt Pareto 80/20
  • Tùy chỉnh – dựa trên hiểu biết nghiệp vụ

Chúng ta sẽ triển khai nhóm theo phần trăm vị.

Phân khúc khách hàng bằng Python

Ôn nhanh về phần trăm vị

Quy trình tính phần trăm vị:

  1. Sắp xếp khách hàng theo chỉ số đó
  2. Chia thành số nhóm định trước có kích thước bằng nhau
  3. Gán nhãn cho mỗi nhóm
Phân khúc khách hàng bằng Python

Tính phần trăm vị với Python

Dữ liệu gồm 8 CustomerID và giá trị Spend được tạo ngẫu nhiên.

dummy_percentile_data

Phân khúc khách hàng bằng Python

Tính phần trăm vị với Python

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

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

Phân khúc khách hàng bằng Python

Gán nhãn

  • Điểm cao nhất cho chỉ số tốt nhất – “tốt” không phải lúc nào cũng là cao nhất, ví dụ: recency
  • Ở đây nhãn đảo ngược – khách hàng càng mới càng tốt

Phân khúc khách hàng bằng Python

Gán nhãn

# 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')
Phân khúc khách hàng bằng Python

Gán nhãn

Như thấy, nhãn tứ phân vị bị đảo vì khách hàng càng mới càng giá trị.

recency_quartiles

Phân khúc khách hàng bằng Python

Nhãn tùy chỉnh

Có thể định nghĩa danh sách nhãn dạng chuỗi hoặc giá trị khác tùy trường hợp.

# 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')
Phân khúc khách hàng bằng Python

Nhãn tùy chỉnh

Nhãn tùy chỉnh được gán cho từng tứ phân vị

Recency_quartiles

Phân khúc khách hàng bằng Python

Hãy luyện tập với phần trăm vị!

Phân khúc khách hàng bằng Python

Preparing Video For Download...