この記事は、Google Cloud で AI Platform を使用して顧客の生涯価値(CLV)を予測する方法を説明する 4 部構成のパート 1 です。
このシリーズの記事は次のとおりです。
- パート 1: はじめに(この記事)。顧客の生涯価値(CLV)の概要と、CLV を予測するための 2 つのモデリング手法について説明します。
- パート 2: モデルのトレーニング。データを準備し、モデルをトレーニングする方法について説明します。
- パート 3: 本番環境へのデプロイ。パート 2 で説明したモデルを本番環境システムにデプロイする方法について説明します。
- パート 4: AutoML Tables の使用。AutoML Tables を使用してモデルをビルドおよびデプロイする方法を説明します。
概要
多くの広告主は、類似しているユーザーである個人やグループに応じて広告を供給しようとしますが、常に最も価値のある顧客に向けて提供できているとは限りません。売上について語る際に、顧客の 20% が売上の 80% を占めると予測する Pareto の原則がよく引き合いに出されます。過去だけではなく将来においても 20% を構成する顧客を特定するにはどうしたらよいのでしょうか。その方法は、顧客の生涯価値(CLV)を予測することです。
このシリーズの目標は次のとおりです。
- CLV モデリングのコンセプトを説明する。
- CLV モデリングの 2 つのアプローチを比較する。
- Google Cloud に CLV モデルを実装する方法を説明する。
このソリューションでは、確率モデルと機械学習(ML)モデルという、異なる 2 つの CLV モデリングへのアプローチを比較します。各アプローチの実装を提供し、各モデルを一般公開データセットに適用した結果を示します。このシリーズの記事では、Google Cloud でのモデリング システムの実装に焦点を当てています。
このアプローチを使用する場面
CLV モデルを使用すると、顧客に関する次のような質問に答えることができます。
- 購入数: 顧客が将来の特定の期間にどのくらい購入するか
- 生涯: 顧客がまったく購入しなくなるまでにどのくらいの時間が経過するか
- 金銭的価値: 顧客が将来の特定の期間にどのくらいの金額を生み出すか
将来の生涯価値を予測する場合、さまざまなデータとモデリング戦略を必要とする次の 2 つの明確な問題があります。
- 既知のトランザクション履歴がある既存の顧客の将来価値を予測する。
- 初回の購入を行ったばかりの新規顧客の将来価値を予測する。
このシリーズでは最初の問題に焦点を当てています。
多くの企業は、コンテキストを理解することなく、合計販売金額のみから CLV を予測しています。たとえば、1 回に大量の注文を行う顧客は、少額分を複数回にわたって購入する他の顧客よりも価値が低くなる可能性があります。CLV モデリングは、顧客の購買プロフィールをより深く理解し、ビジネスを正確に評価するのに役立ちます。
このシリーズで説明するアプローチを使用して顧客の価値を予測することで、以下に示す次の行動に優先順位を付けることができます。
- 広告に投資する金額を決定する。
- 広告のターゲットにする顧客を決定する。
- あるセグメントから別のセグメントに顧客を移動する方法を計画する。
このシリーズで使用しているモデルは、顧客のチャーンを直接観察して測定できるビジネスには適していません。たとえば、取り消すことができるサブスクリプション、顧客アカウント、契約に基づくビジネスには、こうしたモデルを使用すべきではありません。このシリーズのモデルでは、ユーザーがいつでも購入できる e コマース店舗のように、ユーザーが自由にビジネスに関わることを想定しています。さらに、このシリーズで説明されているモデルは、少なくとも中程度のトランザクション履歴を持つ既存の顧客の将来価値を予測するのに最適です。
CLV のコンセプト: RFM
CLV モデルへの 3 つの重要な入力は、時期、頻度、金銭的価値です。
- 時期: 顧客の最後の注文時期
- 頻度: 購入頻度
- 金額: 購入金額
次の図は、4 人の顧客の過去の売上げを示しています。
この図は、各顧客の RFM 値を示しています。
- 時期: 最後の購入から今日までの時間。右端の円と [Now] とラベル付けされた縦の点線の間の距離で表されます。
- 頻度: 購入間の時間。1 つの線上の円の間の距離で表されます。
- 金額: 各購入時の金額。円のサイズで表されます。この金額は、顧客が注文した商品の平均注文額または平均数量である可能性があります。
このシリーズで使用しているモデルでは、過去の売上データのみが CLV の計算に使用されます。RFM 値の入力は、各顧客のトランザクション履歴から計算されます。
CLV の 2 つのモデリング方法
前述のように、このシリーズの記事では、CLV を計算する 2 つのアプローチを比較しています。
- 確率モデル。このモデルは、顧客に対してモニタリングされた RFM 値に確率分布を当てはめることによって機能します。このモデルは、各顧客のトランザクション履歴によって定義される購入行動に基づいています。そのデータは RFM 値を抽出するのに十分です。
- ML モデル。このモデルは、確率的勾配降下法でトレーニングすることによってパラメータをデータに当てはめた、広範囲に及んで広く使用されているクラスの統計モデルです。ML モデルでは、確率モデルよりも多くの特徴を利用できます。このシリーズでは、一般的なクラスの ML モデルであるディープ ニューラル ネットワーク(DNN)モデルを使用します。また、AutoML Tables を使用して自動的に ML モデルを作成する方法も示します。
確率モデルの場合、このソリューションでは、Pandas の DataFrames に依存する既存の Lifetimes ライブラリを使用します。TensorFlow で同等のライブラリを構築して、Lifetimes ライブラリと同じタスクを実行することもできます。
確率モデル
確率モデルでは、注文トランザクションのリストから計算される RFM 値を使用します。各トランザクションは、顧客 ID、注文日、注文額で構成されます。さまざまな顧客関係をモデル化するために、さまざまなモデルが適しています。このシリーズのパート 2 では、Lifetimes ライブラリで利用できる次のモデルを使用する方法を示しています。
- Pareto / 負の二項分布(NBD)
- ベータ幾何学(BG / NBD)
Pareto / NBD
Pareto / NBD モデルは Schmittlein などによって開発されました。このモデルは、契約によらない状況で使用されるので、顧客はいつでも購入できます。4 つのパラメータを使用して、顧客が購入するレートと、顧客がビジネスの顧客であることを止めるレートを記述します。RFM データセットに合わせてパラメータを改善してモデルを使用します。
BG / NBD
Pareto / NBD モデルは広く使用されていますが、パラメータの推定のための計算が非常に膨大であるため、実装が困難です。こうした問題に対処するために、Fader と Hardie は BG / NBD モデルを開発しました。Pareto / NBD モデルに似ている BG / NBD モデルは、契約のない状況で使用されるので、顧客はいつでも購入できます。また、BG / NBD モデルでは、顧客が購入するレートと、ドロップアウトするレートを表す 4 つのパラメータも使用されます。ただし、BG / NBD モデルは、Pareto / NBD モデルよりも実装が容易で、動作が高速です。この 2 つのモデルは同様の結果を生じる傾向があります。
確率モデルによる CLV の計算
確率モデルの使用は、複数ステップからなるプロセスです。このモデルのコードでは、次のタスクを実行します。
- トランザクション データを前処理して RFM 値を計算します。
- Lifetimes モジュールを使用して、適切なモデル(Pareto / NBD または BG / NBD)のパラメータを RFM データに合わせて改善します。
- 各顧客の予測金額を計算します。
時間の経過とともに変化する商品価格などの多くのパラメータはトランザクション データだけでは表現されないため、金銭的価値のモデルを作成することは複雑です。確率的方法では、金銭的価値がガンマ - ガンマ分布に従うことを前提としています。Lifetimes ライブラリのコードには、適合した確率モデルを使用して CLV を計算するために使用できるガンマ - ガンマ分布メソッドが含まれています。Lifetimes ライブラリを使用して CLV 予測を生成する方法については、パート 2 で詳しく説明します。
機械学習モデル
ML モデルは、確率モデルへの適切な代替手段です。このシリーズの記事では、Estimator
インターフェースを使用して TensorFlow で実装する DNN の使用について説明します。
このソリューションでは、DNN のパフォーマンスを向上させるために 2 つの手法を使用します。
バッチ正規化には、次の利点があります。
- 特徴内の数値を正規化して非相関化します。このステップはバッチ正規化で行われるため、自分で行う必要はありません。
- 各特徴の重要性に影響する、時間の経過とともに変化する重みの影響を最小限に抑えます。
時間の経過に伴う指数関数的な学習率の低下。学習率が最小に近づくときの損失の揺れを防ぐのに有用です。
このシリーズの記事では、TensorFlow での DNN の 2 つの実装を示しています。
- Canned Estimator DNN。TensorFlow には、
Estimator
インターフェースを遵守する、事前に実装された DNN モデルが含まれています。このシリーズのサンプルコードには、事前に実装されたDNNRegressor
に基づくモデルが含まれています。 - Custom Estimator DNN。Custom
Estimator
を使用することで、高度なテクニックをモデルに組み込む柔軟性が向上します。サンプルコードの CustomEstimator
の実装では、学習率の低下とバッチ正規化を組み込むことで、この柔軟性を示しています。
DNN の利点の 1 つは、多くの特徴を組み込むことが可能な点です。結果として、品質が特徴エンジニアリングに依存することがあります。このシリーズのパート 2 「データの準備」セクションでは、潜在的に大規模なデータセットに利用できる入力から特徴を作成する方法について説明します。
次のステップ
このシリーズの次のパートでは、CLV 予測の実装方法について説明します。
- パート 2: モデルのトレーニング。
- パート 3: 本番環境へのデプロイ。
- パート 4: モデルに対する AutoML Tables を使用する。
- 他の予測ソリューションについて学習する。
- Google Cloud に関するリファレンス アーキテクチャ、図、ベスト プラクティスを確認する。Cloud アーキテクチャ センター をご覧ください。