การคำนวณค่า RFM

การแบ่งกลุ่มลูกค้าด้วย Python

Karolis Urbonas

Head of Data Science, Amazon

คำนิยาม

  • Recency - จำนวนวันนับจากธุรกรรมล่าสุดของลูกค้า
  • Frequency - จำนวนธุรกรรมใน 12 เดือนที่ผ่านมา
  • Monetary Value - ยอดใช้จ่ายรวมใน 12 เดือนที่ผ่านมา
การแบ่งกลุ่มลูกค้าด้วย Python

ชุดข้อมูลและการเตรียมข้อมูล

  • ใช้ชุดข้อมูล online เดิมจากบทเรียนก่อนหน้า
  • ต้องเตรียมข้อมูลก่อน
  • เพิ่มคอลัมน์ TotalSum = Quantity x UnitPrice

5 แถวแรกของชุดข้อมูล RFM

การแบ่งกลุ่มลูกค้าด้วย Python

ขั้นตอนการเตรียมข้อมูล

เริ่มต้นด้วย DataFrame online ที่ผ่านการประมวลผลแล้ว โดยมีเฉพาะข้อมูล 12 เดือนล่าสุด:

print('Min:{}; Max:{}'.format(min(online.InvoiceDate),
                              max(online.InvoiceDate)))
Min:2010-12-10; Max:2011-12-09

สร้างวันที่สมมติ snapshot_day เสมือนว่ากำลังวิเคราะห์ในปัจจุบัน

snapshot_date = max(online.InvoiceDate) + datetime.timedelta(days=1)
การแบ่งกลุ่มลูกค้าด้วย Python

คำนวณค่า RFM

# Aggregate data on a customer level
datamart = online.groupby(['CustomerID']).agg({
    'InvoiceDate': lambda x: (snapshot_date - x.max()).days,
    'InvoiceNo': 'count',
    'TotalSum': 'sum'})

# Rename columns for easier interpretation datamart.rename(columns = {'InvoiceDate': 'Recency', 'InvoiceNo': 'Frequency', 'TotalSum': 'MonetaryValue'}, inplace=True)
# Check the first rows datamart.head()
การแบ่งกลุ่มลูกค้าด้วย Python

ค่า RFM ที่ได้

ตารางสำหรับการแบ่งกลุ่ม RFM เสร็จสมบูรณ์แล้ว!

ค่า RFM 5 แถวแรก

การแบ่งกลุ่มลูกค้าด้วย Python

มาฝึกกันเถอะ!

การแบ่งกลุ่มลูกค้าด้วย Python

Preparing Video For Download...