近期、頻率、金額(RFM)分群

Python 的客群分群

Karolis Urbonas

Head of Data Science, Amazon

什麼是 RFM 分群?

以三個指標進行顧客行為分群:

  • Recency (R)
  • Frequency (F)
  • Monetary Value (M)
Python 的客群分群

RFM 數值分組

RFM 數值可用多種方式分組:

  • 百分位,例如分位數
  • 帕累托 80/20 切分
  • 自訂——依商業知識

我們將實作以百分位為基礎的分組。

Python 的客群分群

百分位快速複習

計算百分位的流程:

  1. 依該指標排序顧客
  2. 將顧客切成預先定義且等大小的群組
  3. 為每個群組指派標籤
Python 的客群分群

用 Python 計算百分位

包含 8 個 CustomerID 與隨機計算的 Spend 數值的資料。

示範百分位資料

Python 的客群分群

用 Python 計算百分位

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

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

Python 的客群分群

指派標籤

  • 最佳指標給最高分——但最佳不一定是數值最大,例如 recency
  • 本例標籤需反向——顧客越近期越好

Python 的客群分群

指派標籤

# 建立數字標籤
r_labels = list(range(4, 0, -1))

# 依四分位分組 recency_quartiles = pd.qcut(data['Recency_Days'], q=4, labels=r_labels)
# 建立新欄位 data['Recency_Quartile'] = recency_quartiles
# 將 recency 由小到大排序 data.sort_values('Recency_Days')
Python 的客群分群

指派標籤

如你所見,四分位標籤是反向的,因為顧客越近期,價值越高。

recency_quartiles

Python 的客群分群

自訂標籤

可依情境定義由字串或其他值組成的標籤清單。

# 建立字串標籤
r_labels = ['Active', 'Lapsed', 'Inactive', 'Churned']

# 依四分位分組 recency_quartiles = pd.qcut(data['Recency_Days'], q=4, labels=r_labels) # 建立新欄位 data['Recency_Quartile'] = recency_quartiles # 由小到大排序 data.sort_values('Recency_Days')
Python 的客群分群

自訂標籤

為各四分位指派的自訂標籤。

Recency_quartiles

Python 的客群分群

一起來練習吧!

Python 的客群分群

Preparing Video For Download...