はじめに

トレジャーデータはクラウドでデータマネージメントサービスを提供しています。

EC や POS、Web サービス、Game など、購買行動を伴う一連の行動ログは活用意義のある大変貴重なものとして古くから分析が行われて来ました。

その中でも有名な手法である RFM 分析は

  • R(Recency:直近購買日)= いつ買ったか
  • F(Frequency:一定期間内の購買回数)= どのくらいの頻度で
  • M(Monetary:一定期間内の購買金額)= いくら使っているか

の3つの切り口から2つを選び、その2軸に基づいて顧客をグループに分け、そのグループ毎に目立った特徴を見ていく手法です。一般にRFM分析と呼ばれているのは、この前者:グルーピングを指す事が多いようです。

本記事でもRFMに基づいたグルーピングをご紹介していきます。トレジャーデータでのRFM分析は、非常に柔軟な設定のもとで簡単に行えるのが特徴です。

↑ 「RF Matrix」:R(y軸)とF(x軸)のクロステーブルは、これらの値の組み合わせにおいて何人がそこに該当するかが、各々のセルの値となって一覧で見ることができるようになっています。

RFM 分析に必要なデータセット

RFMに必要ないわゆる発注実績ログは、本ブログでもお馴染みの sales_slip テーブルです。

項目名(抜粋)サンプル1サンプル2
  time13798807091337749470
  member_id20264291931260
  goods_id583266109601
  category Automotive and Industrial Automotive and Industrial
  sub_category Industrial Supplies Lab and Scientific
  ship_date 2013-09-27 2021-01-03
  amount11
  price277300

Recency

Recency は「昨日」「今日」といったある基準日に対して、各ユーザーの最終購入日が何日(何週間)前なのかについて集計をとったものです。

Web サービスやゲームのようなアクティビティの高いサービスでは日単位で集計しますが、ECのような買い物周期の長いものは週単位で集計することが多いようです。ここでは2013-11-31を基準日とした1年分のデータでの各ユーザーのRecencyを日単位、週単位で集計しています。

term_dayterm_weekcnt
00545
10825
20864
301093

さらに任意の間隔を記述すれば、よりわかりやすいユーザーのグルーピングが可能です。

今回の結果では、実に60%以上のユーザーが半年前から購入アクティビティが無かった事がわかりますね。

Frequency

Recency は直近購入という最新のアクティビティを示すものですが、それまでにどれくらい活発に購入しているかという頻度に関するアクティビティは見えません。Frequencyは特定の期間内で各ユーザーが何回購入しているのかの頻度を軸に、グルーピングを行います。

2013-11-31を基準日とした1年分のデータでの各ユーザーのFrequencyを日単位、週単位で集計しています。

freqcnt
2861
1851
1811

しかし、このままではfreqの値の粒度が細かすぎて、グラフが見にくくなってしまいます。

custom_freqcnt
10185
100563
501440
302260
206406
1010729
536928
163359

↑このように参照する側にとってわかりやすい区切りを行えば、色々なことが簡単に見えてきます。年間の頻度で見て1回のみ購入しているユーザーが50%以上とかなりを占めていますね。一方で12回以上(≃月に1回)のユーザーも20%近くいることがわかりますね。

Monetary

Monetary は特定の期間内で各ユーザーが合計いくら購入しているのかの総額を軸にグルーピングします。Monetary を1円毎に集計しては、先ほどの Frequency より取り得る値の粒度が細かすぎて見にくくなっています。ここでは既にカスタマイズした区分で集計することから始めましょう。

購入総額といった区分のしやすいものは、Case文でマニュアルで分けていくといった形が最適ですが、仮想ポイント総額など取り得る値が0〜100万というような広いレンジにある場合にはマニュアルでは大変ですので、自動的に区分を作ってくれる魔法のクエリを使います。

おおざっぱな区切り

xcnt
0403
1000000121319
200000037
30000004
40000004
60000001
830000001
より細かい区切り

xcnt
0403
10007112
20008378
30009565
40006465
50005668

さて次回は個々に紹介したR、F、Mを組み合わせて見ていくことにします。