この記事は最終更新から3年以上が経過しています。最新情報は担当のカスタマーサクセスにご確認ください。
はじめに
トレジャーデータはクラウドでデータマネージメントサービスを提供しています。
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 |
time | 1379880709 | 1337749470 |
member_id | 2026429 | 1931260 |
goods_id | 583266 | 109601 |
category | Automotive and Industrial | Automotive and Industrial |
sub_category | Industrial Supplies | Lab and Scientific |
ship_date | 2013-09-27 | 2021-01-03 |
amount | 1 | 1 |
price | 277 | 300 |
Recency
Recency は「昨日」「今日」といったある基準日に対して、各ユーザーの最終購入日が何日(何週間)前なのかについて集計をとったものです。
Web サービスやゲームのようなアクティビティの高いサービスでは日単位で集計しますが、ECのような買い物周期の長いものは週単位で集計することが多いようです。ここでは2013-11-31を基準日とした1年分のデータでの各ユーザーのRecencyを日単位、週単位で集計しています。
term_day | term_week | cnt |
---|---|---|
0 | 0 | 545 |
1 | 0 | 825 |
2 | 0 | 864 |
3 | 0 | 1093 |
さらに任意の間隔を記述すれば、よりわかりやすいユーザーのグルーピングが可能です。
今回の結果では、実に60%以上のユーザーが半年前から購入アクティビティが無かった事がわかりますね。
Frequency
Recency は直近購入という最新のアクティビティを示すものですが、それまでにどれくらい活発に購入しているかという頻度に関するアクティビティは見えません。
Frequencyは特定の期間内で各ユーザーが何回購入しているのかの頻度を軸に、グルーピングを行います。
2013-11-31を基準日とした1年分のデータでの各ユーザーのFrequencyを日単位、週単位で集計しています。
freq | cnt |
---|---|
286 | 1 |
185 | 1 |
181 | 1 |
しかし、このままではfreqの値の粒度が細かすぎて、グラフが見にくくなってしまいます。
custom_freq | cnt |
---|---|
101 | 85 |
100 | 563 |
50 | 1440 |
30 | 2260 |
20 | 6406 |
10 | 10729 |
5 | 36928 |
1 | 63359 |
↑このように参照する側にとってわかりやすい区切りを行えば、色々なことが簡単に見えてきます。年間の頻度で見て1回のみ購入しているユーザーが50%以上とかなりを占めていますね。一方で12回以上(≃月に1回)のユーザーも20%近くいることがわかりますね。
Monetary
Monetary は特定の期間内で各ユーザーが合計いくら購入しているのかの総額を軸にグルーピングします。Monetary を1円毎に集計しては、先ほどの Frequency より取り得る値の粒度が細かすぎて見にくくなっています。ここでは既にカスタマイズした区分で集計することから始めましょう。
購入総額といった区分のしやすいものは、Case文でマニュアルで分けていくといった形が最適ですが、仮想ポイント総額など取り得る値が0〜100万というような広いレンジにある場合にはマニュアルでは大変ですので、自動的に区分を作ってくれる魔法のクエリを使います。
おおざっぱな区切り
x | cnt |
---|---|
0 | 403 |
1000000 | 121319 |
2000000 | 37 |
3000000 | 4 |
4000000 | 4 |
6000000 | 1 |
83000000 | 1 |
より細かい区切り
x | cnt |
---|---|
0 | 403 |
1000 | 7112 |
2000 | 8378 |
3000 | 9565 |
4000 | 6465 |
5000 | 5668 |
… | … |
さて次回は個々に紹介したR、F、Mを組み合わせて見ていくことにします。