RFM(最新購買・頻度・金額)セグメンテーション

Pythonで学ぶカスタマーセグメンテーション

Karolis Urbonas

Head of Data Science, Amazon

RFMセグメンテーションとは?

3つの指標に基づく行動型顧客セグメンテーション:

  • Recency(R)
  • Frequency(F)
  • Monetary Value(M)
Pythonで学ぶカスタマーセグメンテーション

RFM値のグループ化

RFM値のグループ化方法:

  • パーセンタイル(例:分位)
  • パレート80/20分割
  • カスタム(ビジネス知識に基づく)

ここではパーセンタイルによるグループ化を実装します。

Pythonで学ぶカスタマーセグメンテーション

パーセンタイルの復習(短縮)

パーセンタイル算出の手順:

  1. その指標で顧客を並べ替える
  2. 同サイズの事前定義グループに分割
  3. 各グループにラベルを付与
Pythonで学ぶカスタマーセグメンテーション

Pythonでパーセンタイルを計算

8件のCustomerIDとランダムに算出したSpendのデータ。

dummy_percentile_data

Pythonで学ぶカスタマーセグメンテーション

Pythonでパーセンタイルを計算

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

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

Pythonで学ぶカスタマーセグメンテーション

ラベルの付与

  • 最高スコア=最良の指標。ただし常に高いほど良いとは限らない(例:最新性)
  • この場合は逆ラベル。より最近の顧客ほど良い

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
# 最新性を小さい順に並べ替え 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...