顧客生涯価値(CLV)の計算 with R

顧客生涯価値(CLV:Customer Lifetime Value)を計算してくれるRのコード(Calculating Customer Lifetime Value with Recency, Frequency, and Monetary (RFM))があったので、今更感がありますが取り上げたいと思います。

目次

・顧客生涯価値の数式
・データセット
・関数
・データセットの読み込みと加工
・再購買率とRFMとの関係
・再購買率の推定
・顧客生涯価値の計算
・参考情報

顧客生涯価値の数式

まず、顧客生涯価値の数式は以下の通りです。
customer_lifetime_value

t:年や月などの期間
n:顧客が解約するまでの期間合計
r:保持率(1-解約率)
P(t):t期に顧客から得られる収益
d:割引率

rは数式上では固定ですが、実際にはデモグラ属性(年齢、地理情報、職種など)や行動(RFMなど)や在職中かどうかなどの要因により変わりうるものだと考えられます。参考文献のブログでは、このrのロジスティック回帰による推定がなされています。

データセット

データ名:CDNow
概要:1997年の第一四半期をスタート時点とした顧客の購買行動データ
期間:1997年1月〜1998年6月
顧客数:23570
取引レコード数:69659
変数:顧客ID、購入日、購入金額
入手方法:DatasetsでCDNOW dataset (full dataset)をダウンロード

関数

参考文献にはgetDataFrame関数、getPercentages関数、getCLV関数の三つの関数が出てきますが、CLVの計算に必要なのはgetDataFrame関数、getCLV関数の二つです。getPercentages関数はRecencyなどに応じて細かく分析する際に用います。

getDataFrame関数・・・生のデータセットから、指定した期間に応じたRecencyのデータを作成する関数です。

getPercentages関数・・・Recencyなどの回数に応じて、購入した顧客の割合などを計算するための関数です。

getCLV関数・・・Recency、Frequency、Monetary、購入者の数(1人と置く)、コスト(0としている)、期間、割引率、推定したモデルをもとにCLVを計算する関数です。

データセットの読み込みと加工

再購買率とRFMとの関係

まず初めにデータセットを加工します。ロジットの推定における説明変数用のデータとして19970101〜19980228のデータを用い、被説明変数にあたる購入したかどうかのデータを19980301〜19980430のデータを用いて作ります。

データを確認します。

60日以内に購入した顧客(Recency=0)のうち、45%が再び購入しているようです。

100ドル購入した顧客(Monetary=10)のうち、19%が再び購入しているようです。

10回購入したことのある顧客(Frequency=10)は49%が再び購入しているようです。

再購買率の推定

RFM(Recency、Frequency、Monetary)のデータに基づいて、再購買率をロジスティック回帰によって推定し、予測確率を用いて顧客生涯価値を計算します。

rfm_analysis_est

RecencyとFrequencyによるロジスティック回帰

顧客生涯価値の計算

推定したロジットを用いて、生涯価値を計算します。

それではさっそく、1998年5月〜6月のデータを用いて、今回推定した顧客生涯価値が妥当なのかどうかを確かめたいと思います。

予測したCLVと実際の取引金額データを散布図で描き、回帰線を引く。

life_time_value_estimation

CLVが上がれば、1998年5月1日〜6月30日の間(未来)の取引金額が増すような傾向が出ています。

参考情報

RFM Customer Analysis with R Language
Calculating Customer Lifetime Value with Recency, Frequency, and Monetary (RFM)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です