Resources
>
Shopify解説
>
Shopifyデータ×Excel/スプレッドシートでRFM分析を行う方法
Shopifyデータ×Excel/スプレッドシートでRFM分析を行う方法

Shopifyデータ×Excel/スプレッドシートでRFM分析を行う方法

はじめに

ECの顧客セグメンテーション手法の1つ「RFMセグメンテーション」は、LTV向上に重要な役割を果たします。この記事はLTV向上に取り組むECマーケティング担当者の方にむけて、Shopifyの注文データ(CSVファイル)から、Google SpreadsheetやExcelを使って、実際にRFM分析・RFMセグメンテーションを行う方法ついて解説します。

RFMセグメンテーションの概要と重要性

RFM分析は顧客の購買行動を、Recency(直近の購入からの経過日)、Frequency(購入回数)、Monetary(合計購入金額)という3つの主要要素に分解します。これらの頭文字を取ってRFMという呼称が広く使われています。

顧客をRFMの観点で点数付けしてセグメンテーションを行うことで、各セグメントの購買行動に即したマーケティング施策を打つことができるようになります。これにより、例えばリピート率の向上、エンゲージメントやコンバージョン率の向上などが期待でき、顧客生涯価値(LTV)を高めることに繋がるためとても重要な考え方です。

RFMセグメンテーションについては、下記の記事で詳しく解説しています。

RFMのスコアリングの基本的な考え方と、今回採用する方法

RFM分析ではRecency、Frequency、Monetaryそれぞれの観点で、各顧客にスコアを割り当てます。スコアは1~3または1~5の値で、数字が大きいほどより良いという意味になります。

現在までに様々なスコアリングのアプローチが提案されていて、実践的で実務向きな手法もあれば、専門的なアプローチを要するものもあります。たとえば、自分で閾値を決める方法のほかに、パーセンタイルベースのアプローチや数理統計を活用した手法などがあります。

いわゆる「正解」はなく、それぞれに利点と欠点があります。

今回は、パーセンタイルベースで点数付けを行う方法について解説します。パーセンタイルというと聞き馴染みがない方もいらっしゃるかと思います。これは、簡単にいうと「1000人の顧客リストがあったときに、顧客を合計購入金額が多い順に並び替えて、上から200人ずつ5点、4点、…と点数付けをしていく方法」と理解して頂いて構いません。(実際はデータの分布の関係で、200人ずつにはなりません)

【前準備】Shopifyから「顧客」「注文」の2つのCSVをダウンロードして整形する

Shopifyから顧客・注文データをダウンロードし、スプレッドシート上で下記のような形にデータを整形してください。

https://assets-global.website-files.com/642aaea322dda262581bd474/6451ee6387146c318a6b350d_image2.png

データのダウンロード方法や、データ整形の方法はこちらの記事で詳しく解説をしています。4章・5章をご参考ください。

参考記事:Shopifyデータ×Excel/スプレッドシートでLTVを計算し、平均注文金額・購入頻度・顧客寿命の観点から分析する方法

RFMをスコアリングする

今回の手法では、顧客シートの「Total Spend」をMonetary、「Total Orders」をFrequencyとして採用します。Recencyに関しては、注文データから各顧客の最新の注文日を集計して、分析時点(今日)からの日数を計算しましょう。

まず、Recencyのデータをつくります。顧客シートのD1セルに「Recency」とラベルをつけ、一つ下のD2セルに下記のような数式を入力してオートフィルしてください。

D2セル

=DATEDIF(MAX(FILTER('注文シート'!$C$2:$C, '注文シート'!$A$2:$A = A2)),today(),"d")

こちらのようになっていれば完成です。

次に、R, F, Mを1~5点にスコアリングします。これには、percentrank関数を用います。(Excelではpercentrank.inc という関数になります)

E1, F1, G1セルにそれぞれ「Rスコア」「Fスコア」「Mスコア」というような名前をつけて、一つ下のE2, F2, G2セルに下記の数式を入力してオートフィルしてください。

E2セル

=ROUND(4-(percentrank(D:D,D2,1)*4))+1

F2セル

=ROUND(percentrank(C:C,C2,1)*4)+1

G2セル

=ROUND(percentrank(B:B,B2,1)*4)+1

点数付けを1~3点にしたい場合は、上記の数式の「4」を「2」に変えればよいです。今回は1~5点で分析してみます。

下記のようになっていれば完成です。

以上でスコアリングが完了しました。ここからは、実際の分析方法をいくつかご紹介します。

RとFの二軸表(RF表)を作成する

RFM分析をはじめて行う場合は、まずRとFの二軸分析から始めてみましょう。というのも、合計購入回数(Frequency)と合計購入金額(Monetary)はほとんどのケースで相関性が高いので、RとFだけでも充分に実務的な示唆を得られることが多いからです。

(この想定が当てはまらないのは、商品ラインナップが多いECストアや、単価が大きく異なる商品を扱っているECストアです)

まずは、下記のような表を作成してみます。横軸がFスコア、縦軸がRスコアになっています。今回は分かりやすさの観点から、一つ下(隣)にしきい値を表示してみました。

まず、新しいシートを作成して、画像の黒色の部分(行ラベルと列ラベル)をご自分で入力してください。

グレーの部分の、Rのしきい値を計算する数式は下記のとおりです。B3に入力して下にオートフィルしてください。

B3セル

="~"&MAXIFS('顧客シート'!D:D,'顧客シート'!E:E,A3)

また、Fのしきい値を計算する数式は下記のとおりです。C2に入力して横にオートフィルしてください。

C2セル

=MINIFS('顧客シート'!$C:$C,'顧客シート'!$F:$F,C1)&"~”

最後に、各スコアに対応する顧客数を集計します。C3に下記の数式を入力して表全体にオートフィルしてください。

C3セル

=countifs('顧客シート'!$F:$F,C$19,'顧客シート'!$E:$E,$A3)

うまく表が作成できましたでしょうか。

次の章では、分析に入る前に、この最も簡単なスコアリング方法のいくつかの問題点と、それを改善する方法について説明します。

スコアリングの問題点と改善策

さきほど紹介した方法は、シンプルで簡単ではありますが、いくつかの問題点があります。

Recencyに購買サイクルを加味し、実態に近づける

まず、「Recency」についてです。お手元のデータと見比べて頂きたいのですが、4~2点のしきい値が直感的に大きすぎると感じないでしょうか?これは一定以上の期間(たとえば1年以上)で運営しているECストアに特に顕著な傾向です。「数年前に1度注文をしてそれっきり」という顧客に引っ張られてしまい、全体としてのしきい値が”甘くなっている”ことが原因です。

何が問題になるかというと、たとえばRecencyの点数が下がってきた顧客に対して「離脱リスクがある」と考えてタイムリーな離脱防止施策を講じる必要がありますが、このようなスコアリングだと、Recencyの点数が下がったときには既に手遅れになってしまう可能性があり、もっと早い段階で離脱リスクに気づき、適切に対応ができるようにする必要があります。

この問題に対応するには、Recencyのスコアリング基準に、「購買サイクルデータ」を活用するとよいです。「購買サイクルデータ」とは、すべてのリピート購入が何日で行われているか?というデータの分布を使うことです。このデータを活用することで、「この日数を超えてしまったら再購入してもらえる可能性が大きく下がる」ということを合理的に判断することができます。

そもそもECストアによって、顧客の購買サイクルは大きく異なります。たとえば”ロイヤル顧客”が年に2回のペースで購入するストアと、週1回のペースで購入するストアでは、同じ60日というRecencyの日数に対しての捉え方が異なるはずですよね。一般的に説明されているRFMの分析方法では、Recencyに購買サイクルが考慮に入れられていないので、ストアによっては実用的でなくなってしまうことがよくあります。

前置きが長くなりましたが、実際にデータの作成にうつります。まず、注文データに対して、その顧客にとっての2回目以上の注文に対して、前回の注文からの経過日数を計算します。

注文シートのデータを、最初に「CreatedAt」で昇順に並び替え、次に「Email」で昇順に並び替えてください。下記のように、同じメールアドレスごとに注文が古い順に並んでいれば問題ありません。

※Arrayformula関数を使った参照をしている場合、この操作に失敗する場合があります。その場合はすべてのデータを選択してコピーし、同じ場所で「特殊貼り付け」>「値のみを貼り付け」を行ってください。

注文シートのD1セルに「前回購入からの経過日」と名前をつけ、D2セルに下記の関数を入力してください。

D2セル

=if(A2=A1,if(C2-C1<1,"",C2-C1),"")

こちらの式では、同じ日の注文をカウントしない処理をしています。

次に、顧客シートのH1セルに新しく「Rスコア_r1」などの名前を付けてください。H2セルに下記の数式を入力して、オートフィルしてください。

H2セル

=iferror(ROUND(4-(percentrank('注文シート'!E:E,D2,1)*4))+1,1)

Recencyが大きすぎる場合はエラー(#NUM)になってしまうので、1点にカウントする処理をしています。

下記のようになっていれば完了です。

それでは、新しくRF表を作成してみましょう。

さきほどの表をコピーして、参照先をRスコアからRスコア_r1に変更してください。

参考までに手元のサンプルデータで使っている数式を掲載しておきます。

B12セル

="~"&MAXIFS('顧客シート'!D:D,'顧客シート'!H:H,A12)

C12セル

=countifs('顧客シート'!$F:$F,C$19,'顧客シート'!$H:$H,$A12)

いかがでしょうか。より「もっともらしい」スコアのしきい値になったのではないでしょうか。

手元のデータでも、もともとスコア3点の基準が342日だったのが、63日になり、もっともらしい数字になりました。

FrequencyとMonetaryを両方加味したRF表を作成する

実務でデータを分析するうえでは2軸(2次元)データが扱いやすいため、RF表の考え方をご紹介しています。ただし、商品ラインナップが多いECストアや、単価が大きく異なる商品を扱っているECストアの場合、購入回数(Frequency)は少ないが合計購入金額(Monetary)が高い顧客を過小評価してしまう、という問題があります。

この方法を改善するために、FスコアとMスコアを両方加味した表を作成してみましょう。

「どのように加味するか」はケースバイケースです。今回はFとMのうちの点数が大きい方を基準にして表を作成する方法をご紹介します。これ以外にも、たとえば単純平均をする方法や、自分で決めた重みによって加重平均する方法などが考えられますが、説明は割愛します。

では、まず顧客シートで、新しくI1セルに「F・Mスコア」などの名前をつけて、一つ下のI2セルに下記の数式を入力して、オートフィルしてください。

I2セル

=max(F2,G2)

下図のようになっていれば大丈夫です。

それでは、新しく表を作成します。サンプルデータではA19セルを基準に作成しています。

C21セルに下記の数式を入力して表全体にオートフィルしてください。

C21セル

=countifs('顧客シート'!$I:$I,C$19,'顧客シート'!$H:$H,$A21)

こちらは前項で挙げたRecencyのスコアリング方法を使った数式です。

基本のRecencyのスコアリングを利用する場合、下記のような数式になります。適宜修正をしてください。

C21セル (最初に説明したRecencyのスコアリング)

=countifs('顧客シート'!$I:$I,C$19,'顧客シート'!$E:$E,$A21)

いかがでしょうか。手元のデータでは、Frequencyだけではロイヤル顧客の取りこぼしがあったようで、表の右上の顧客数が増える結果となりました。

自社ストアに合ったスコアリング方法を考えることが大切

RFM分析は実務的な工数面での敷居が低くとても有用なツールですが、このように何も考えずに点数をつけてしまうと「離脱リスク顧客」や「本当のロイヤル顧客」を見逃してしまう可能性があります。

どのようなスコアリングが適しているか、自社ストアの特徴を踏まえて考えることが大切です。

RFMセグメンテーションを施策に繋げるには

ここからは、「この表をどのように読み解いて、どう施策に繋げたらよいか」についてです。

R, F, Mのスコアごとに顧客セグメントを作成し、それぞれのステータスに合った適切な施策を講じるということが基本の考え方になります。

一つの例として、1~5点のRF表をもとにした、より詳細なRFMセグメントの種類とそれぞれに対する施策例を掲載します。

[2]ロイヤルカスタマー(Loyal Customer)

これらの顧客は、頻度と金額スコアが高い顧客です。ロイヤリティを維持する施策が重要です。

  • 普段購入しているよりも高い商品をアップセルする。
  • 普段購入している商品と補完的な商品をクロスセルする。
  • ブランドの口コミレビューや周囲の人に対する紹介を依頼する。
  • パーソナライズされたメッセージを送り、エンゲージメントを高める。

[5]要注意顧客(Need Attention)

中程度のFrequency, Recencyの顧客です。もう少しでロイヤルカスタマーに育ってくれるはずだったが、あと一歩の後押しが足りていないために、直近の購入から時間が経ってしまった顧客です。ブランドのファンになってもらうために背中を押すような施策が考えられます。

  • 積極的なサポートや有益なコンテンツを提供したり、もしくはブランドに込められた想いや開発秘話などのストーリーを発信することで、ブランドに対する共感・エンゲージメントを獲得する
  • ニーズを把握し、ロイヤル顧客になってもらうために不足している要素が何かを分析する

[8]失なってはいけない顧客(Can’t Lose Them)

購入回数が非常に多い顧客ですが、直近購入日から一定以上の時間が経過してしまっています。特定の商品カテゴリに確実なニーズを持っている顧客であるからこそ、たとえば競合他社の商品に魅力を感じていたり、すでに乗り換えを検討している可能性が高いと言えます。

こうした顧客を取り戻すためには、以下のことが必要です。

  • 特別なクーポンを送ったり、魅力的な限定商品を提案する。
  • 競合他社を意識した内容で、改めて自社商品のプロモーションやメッセージングを行う。
  • メールだけでなく、チャットやLINEなどを活用して1to1に近いコミュニケーションを図る。

そのほかのRFMセグメントに対する施策例は、こちらの記事で説明しているのであわせてご確認ください。

まとめ

この記事では、Shopifyの注文データ(CSVファイル)から、Google SpreadsheetやExcelを使って、実際にRFM分析・RFMセグメンテーションを行う方法ついて解説しました。

RFM分析は実用的で強力なツールですが、スコアリング方法によっては「離脱リスク顧客」や「本当のロイヤル顧客」を見逃してしまう可能性もあります。どのようなRFMスコアリングが適しているか、自社ストアの特徴を踏まえて考えることが大切です。

分析をして終わりではなく、RFMの顧客セグメントを作成して、それぞれのステータスに合った適切な施策を講じることがLTV向上にとって大切です。

顧客セグメントツールECPowerではRFMのセグメントをテンプレートから簡単に作成し、LTVをはじめとしたKPIをセグメント単位で管理することができます。Shopify公式アプリの無料インストールはこちらから。

Author
ECPower Inc.

顧客セグメント管理ツール"ECPower"を開発・提供する株式会社ECPowerがこの記事を編集・監修しています。ECPowerの運営および、EC事業者に対するLTVグロース支援・リピート育成支援の経験を踏まえたコンテンツをお届けいたします。

ON THIS PAGE