データサイエンス

Matillion for BigQueryでGoogleAnalyticsのデータからWeb行動版RFM分析を行うための特徴量を作成する方法

こちらのすいすい会の後半にデモとしてお見せした内容を補足してお伝えいたします。

 

 

Web版行動版RFM分析とは

そもそものRFM分析に関しては、素晴らしい記事がたくさんありますので詳細はそちらを参照していただくとして、ここでは簡単な説明にとどめます。

RFM分析とは?マーケティングに役立つ基本知識や分析方法を紹介_Adobe Experience Cloud

顧客分析の手法(デシル分析、RFM分析)_ALBERT

要はマーケティングにおいて顧客をセグメンテーションする際のフレームワークです。対象期間における顧客の購買情報をもとに以下を集計します。

  • Recency(最新購買日):直近の購買から基準日までの経過日数
  • Frequency(購買回数):対象期間に購買した回数
  • Monetary(購買金額):対象期間に購買した金額の合計

この3つの量をもとに顧客をセグメンテーションし、施策対象を選定していくわけです。
例えば以下のようなイメージでしょうか。

  • 最近初めて買ってくれたお客さま(Frequencyが1でRecencyが小さい顧客)に対しては、定着を促すようにクーポンを発行したりポイントカードの存在を知らせたりする
  • 頻繁にお買い物をしてくれる(Frequencyが大きい)が、トータルではあまりお金を使っていない(Monetaryが小さい)お客さまに対しては、クロスセルを促すように関連商品をレコメンド
  • たまに来て大きな金額を落としてくれるが(Frequency小、Monetary大)、最近あまり来てない(Recency大)お客さまに対して、再訪を促すようなメールを送る

性年代などのデモグラ属性に全く関係なく、行動情報だけから顧客をセグメンテーションするこの手法は、データドリブンな意思決定の極地にある考え方だなと常々思います。
何歳であれ、性別がなんであれ、年収がいくらであれ、手元にあるデータ(行動情報)だけから判定しているわけですから。

さて、本来のRFM分析に関する説明はこのくらいにして、本題のWeb行動版RFM分析の話に移ります。一点注意として、この「Web行動版RFM」という言葉はおそらく一般的ではなく、弊社独自の考え方であることにはご留意ください(そしてもし一般的なら、すみませんがこっそり教えてください)。

ここで注意書きとして、以下ではWebといってもECサイトや自社商品紹介サイトのようにコンバージョンがはっきりしているサイトではなく、広告収入で利益を上げるニュースサイトやオウンドメディアの分析を念頭に置いて話を進めます。
つまり、何かを購入してもらうことが最終目的ではなく、できるだけ長くサイトに留まってもらい、広告のインプレッションを増やしたり自社のブランドイメージを向上させることが目的です。
このようなシチュエーションを考えたとき、RecencyとFrequencyに関しては「最新サイト訪問日」と「対象期間のサイト訪問日数」とすれば自然な形で定義可能かと思います。一方で少し考えなければならないのはMonetaryです。今のシチュエーションにおいて「購買金額」のようにサイト運営の「売上」に対応するものといえば、いくつか考えられます。
例えば

  • インプレッションを増やして広告収入を増やしたい → PV数
  • オウンドメディアで自社社員が発信しているブログを読んでもらって、ブランド力向上に繋げたい → セッション時間や読了数

などが考えられるのではないでしょうか。
つまり、目的に応じて、もっと言うと施策と対応するような形で、Monetaryを定義してあげることが重要だと思われます。

その中でも今回は、PV数をMonetaryとした状況を想定し、GoogleAnalyticsのサンプルデータから、これらRFMの特徴量をMatillion上で作成していきましょう。

MatillionでGoogleAnalyticsアクセスログからユーザーごとのRFM特徴量を作成する方法

手っ取り早く全体像から。上からM、F、Rの順番で作っております(気が利かなくてすみません)。以下で一個一個見ていきましょう。

一応以下で過不足なく説明するようにいたしますが、もしMatillionでのGAデータの取り扱いに関してもう少し詳しく説明して欲しいという方はこちらの記事もご参照ください。

MatillionでBigQueryのunnestされたデータを扱う方法どうも、最近家に帰ったら、弟がファンタジーアニメーションに出てくる魔法使いよろしく、鍋で丸太のような豚骨を煮込み自家製ラーメンを作ってい...

まずはテーブル読み込み。Wildcard Table Inputコンポーネントを使い日次でシャーディングされたGoogleAnalytics(GA)のサンプルデータを1カ月分(2017/07/01ー2017/07/31)読み込みます。

次にExtract Nested Dataコンポーネントを使って、ネストされたデータから必要なカラムだけ取り出します。GAのカラム定義はこちら*。
*Googleアナリティクスヘルプ_[UA] BigQuery Export スキーマ

今回必要なのはfullvisitorId(GAにおけるユニークユーザーを表す)、date、hits.type(ネストされているので開いて探してください。hitsは開くととんでもなく長いので図では閉じてます)。
準備ができたところで早速RFM特徴量の作成に移りましょう。

 

Recency

(1)Aggregateコンポーネントを使って、fullvisitorIdごとの直近のアクセス(dateのMax)を取得します。

(2)Calculatorコンポーネントを使って、recencyを以下のように計算しましょう。基準日は集計最終日である2017/07/31としています。

DATE_DIFF(PARSE_DATE('%Y%m%d', '20170731') , PARSE_DATE('%Y%m%d', `max_date`) , DAY)

 

Frequency

(1)Aggregateコンポーネントを使って、fullvisitorIdごとの来訪日数(dateのCount distinct)を集計します。

(2)Renameコンポーネントで名前をFrequencyに変えておきましょう。

 

Monetary

(1)Filterコンポーネントでhits.type=’PAGE’のレコードに絞りましょう。これでPageViewと判定されたレコードのみ抽出することになります。

(2)AggregateコンポーネントでfullvisitorIdごとにPV数を集計します。今はPageViewの粒度になっているので、fullvisitorIdごとのレコードのカウントがそのものズバリPV数を表します。

結果の結合:ユーザーごとに特徴量集約

最後にこれらを結合してテーブル出力して終了です。

出来上がったテーブルはこちら(monetary列でソートしています)

以上、簡単ではありましたが、「Matillion for BigQueryでGoogleAnalyticsのデータからWeb行動版RFM分析を行うための特徴量を作成する方法」でした!

 

YouTubeチャンネルについて

チャンネル登録お願いします↓↓↓↓↓(やってみたいだけ)

チャンネル登録はこちら

Taizo
脳筋系データサイエンティスト。筋肉は裏切らない。筋肉。