マーケティングサイエンス学習録

勉強したことをとりあえずここに集積していきます。

階層ベイズによるLTVモデリング:BTYDモデル(2)

こちらの記事の続編です。引き続き論文読んでいきます。

mks-nandemo.hatenablog.com

モデル概要

本論文で提案するモデルは、Schmittlein, Morrison, and Colombo(1987)で提案されたPrareto/NBDモデルをベースにしている。 これはBTYDモデルの1つであり、BTYDには多くの研究や亜種が存在する。本論文では、非契約型サービスを対象としている。サブスクのように会員・非会員ステータスがはっきりしているサービスでは「離反状態」を観測できるが、そうではない一般的なECサイトの場合「離反状態」なのか「単に期間が空いてるだけ」なのかわからないので推定する必要がある。

BTYDの歴史について、こちらの記事によくまとまっていました。

retina.ai

提案モデルと先行研究との違いは、下表の通り。

階層ベイズ法により、共変量の導入が簡単であったり、パラメータ同士の相関関係を自然に表現できる柔軟性が確保できる。

仮定

提案モデルにおける仮定について整理する。

個々のカスタマーに対する仮定

  1. 購買率は、強度λのポアソン過程に従う
  2. 生存時間は、離反率μの指数分布に従う
  3. 購買額は、平均ηの対数正規分布に従う

仮定2の指数分布に関しては、こちらの論文にて仮定の妥当性について言及がある。

これは、離脱が過去の生存時間に関係なくランダムに起きるという無記憶性を意味する。こ の仮定の妥当性は、離脱が企業に対する飽き、競合企業への乗り換え、転居、死去などの様々 な理由によって起きることと、一度購買が観測されるということは顧客の生存が確認されて 離脱プロセスがリセットされる、という2点から支持される。

また、仮定3については経験的にガンマ分布等よりは対数正規分布の当てはまりが良いことから仮定しているそう。ただし、先行研究ではガンマ分布や正規分布による仮定が多い。

カスタマー間の異質性に対する仮定

  1. 購買率λ、離反率μ、平均購買額ηは多変量対数正規分布に従う

仮定のおかげで、PLS間の相関関係が自然に推定できる(共分散行列を見れば良い)。

モデル詳細

各記号の意味は

  • 初回購買時刻を0とする
  • 観測終了時刻 T
  • 期間 (0, T]での購買回数 x
  • 観測期間における最終購買時刻 t_x
  •  n回目の購買額 s_n

図で表すとこんな感じ

http://merc.e.u-tokyo.ac.jp/mmrc/dp/pdf/MMRC183_2007.pdf より

共変量を入れこむには、このように多変量正規分布の平均パラメータをさらに共変量で回帰してあげる(階層ベイズでよくやる手法)

これら分布を使うことで、任意の期間 wにおける購買回数や購買額は以下のように推定できる。

購買回数

購買額

これ、生存時間τが観測されない潜在変数なので、MCMCをGibbsサンプラーで実施しているんですが式を追うのが大変なので一旦ここで。 もうこれ以上は業務に直結する、というより趣味の世界なので、もしGibbsサンプラーが構築できたらまた更新します。

階層ベイズによるLTVモデリング:BTYDモデル(1)

最近業務でLTVをモデリングしたくなったので、今日はこちらの論文を読みました。 LTVモデリングとして、BTYD(Buy Till You Die)モデルが有名らしいですが、こちらの論文では自然に共変量を入れるべく階層ベイズ版BTYDを提案したものだそうです。

Deriving Customer Lifetime Value from RFM Measures: Insights into Customer Retention and Acquisition

アブスト

RFM指標を利用して、個人レベルでのLTVモデルを開発した。このモデルによって、購買率(purchase rate)・生存時間(lifetime)・購買額(spending)(まとめてPLSとも言うらしい)の特徴が個別のカスタマーに対して得られる。論文では、「誰に・いつ・何を」アクションすることでROIを向上できるか?についてRetention Programの観点から提案してくれるらしい。*1

イントロ

RFMはCRMにて非常に良く使われる指標だが、あくまで結果変数であることに注意が必要。個別のカスタマーにはそれぞれ特徴があるが、RFMはある1点で彼らのトランザクション状況を切り取った統計量に過ぎない。例えば、同じRFMであっても、より購買間隔の短い(衝動買い・まとめ買いの類)カスタマーの方が離反しやすく、LTVが異なるなどが考えられる。

Frequencyは購買率とは異なる概念であることも注意が必要。Frequencyは単に集計期間における購買回数であるが、LTVモデルで推定する購買率はP(# of 購買 | Alive)のように生存が前提となっている。

PLSに関する研究は多くされてきたが、各要素の相関関係には色々な説があるらしい。*2

各要素の相関関係がなぜ重要かというと、例えば頻繁に購買するカスタマーは単価が低い(負の相関)のような関係があった場合にCRMの観点から頻繁購買層を積極的に集客すべきか否か?という問いが発生するからであり、重要な意思決定となる。

この論文での貢献は3つ。

  1. RFMを活用した個人レベルのLTVモデルを提案した点
  2. LTVモデルを活用して、LTVを最大化するマーケティングプログラムのフレームを提案した点
  3. モグラなどの特徴量を入れ込むことで、見込み客のようなデータが存在しない*3場合でもLTV予測を可能とした点

提案モデルの概要図はこんな感じです。

つぎからモデルの詳細に入っていきます。疲れたので記事分けますmm

*1:これはマーケターの究極の問いですよね。

*2:文脈が違えば別におかしくないのでは?

*3:当然RFM特徴量も得られない

線形回帰の心構え Tips 10個

(一般化)線形回帰モデルを実務で使うことも多く、頭の中にケーススタディを大量にインプットするためこちらの本を読んでいます。

https://www.amazon.co.jp/Regression-Stories-Analytical-Methods-Research/dp/110702398X

少し高いですが、無料でPDFも公開されているので安心です(私はペーパーバック購入しました。)回帰モデルを実務で使う際の注意点など、実務家観点で多くのケーススタディが載っています。実際のデータでは、回帰モデルの仮定を満たすような綺麗なデータの方が珍しく、現場で培われてきたノウハウを知りたい!という人には適した1冊だと思います。

この本の最後の方に「10 quick tips to improve your regression modeling」という章があります。モデルそのものの改善方法というよりは、回帰モデリングをする際の心構え的なTipsです。 今回はこちらを私の備忘も兼ねてブログに残します。ただし筆者なりの解釈なので、原文に全て沿っているわけではありません。詳しくは原本をご参照ください。

データセットに対する推定結果の変動と再現性を確認しましょう

同じ回帰モデルを異なるデータセットにフィッティングすることで、推定結果の変動・再現性*1を確認しましょう。異なるデータセットとは言っても、完全に無関係なものではなく、同じ実験を複数回実施してデータセットを複数個用意するということだと思います。同じ実験をローコストで繰り返し実施できる分野では良いですが、社会科学のように観察データしか手に入らない分野では、異なる地域ごとにフィッティングするなどして、見落としている異質性がないか確認することも推奨しています。

有意か否かに固執しすぎるのは辞めましょう

p値や、信頼区間が0を含むか否かに固執しすぎるのは辞めましょう。p値はノイズを含んでいますし、効果量がぴったり0となる処置はありません。回帰係数が有意ではないからと言って即座にその変数を無価値だと捨てるのは辞めましょう。

とにかくグラフをたくさん描きましょう

EDAとしてデータを可視化することはもちろん大切ですが、同時にFitted modelのグラフをたくさん描きましょう。単にデフォルトで表示される推定結果テーブルではなく、推定結果のプロットを異なる視点からたくさん描きましょう*2。また、Q-Qプロットや残差プロットのようなDiagnosticsでデフォルト表示されるものを思考停止で眺めるのを辞めましょう。プロットするからには、そこに仮説などの説明責任があります。

回帰係数は比較で理解しましょう

回帰係数をそのまま「効果量」として解釈するのはミスリーディングです。より正確には、他の共変量が全て同じ場合に、当該共変量の変化が目的変数に与える効果量です。何と何を比較したときの効果量なのか?明確に理解しましょう。

人工データを作成してみましょう

人工データを作成するのは、あらゆる点で非常に有用です。例えば、

  • 人工データを生成するときにはデータの構造を想像する必要があります。変数間の依存関係や、検証したい効果量の大きさ・向きなどを明確にしないと人工データは作成できません。人工データ作成のステップを踏むことで、今何を検証したいのか?何を仮定としているのか?を明確にすることができます。

  • 検証したいことが、今のモデルで検証できるのか?がわかります。人工データは真の値を把握できるので、今のモデルでそれを正しく推定できるか否かが検証できます。

  • プログラムが正しいか否かがわかります。実務データにおいて想定と異なる結果が出てきた場合、それがデータ起因なのかモデル起因なのか、はたまたプログラムのバグなのか判断が難しいです。人工データであれば、それらの切り分けが可能です。

  • 仮定を外したときに、どのようなバイアスがかかるかシミュレーションできます。例えば、特定の変数が入手困難している場合や、効果量が想定よりも小さかった場合にどのような推定結果になるかがわかります。

たくさんのモデルを試しましょう

とにかくシンプルなモデルからスタートして、徐々に複雑にしていきましょう。その過程でたくさんのモデルを試しましょう。もちろん実際のケースでは、最終的に複雑なモデルの方がパフォーマンスが高くなることが多いです。しかし最初から複雑なモデルからスタートして、一晩中コンピューターに計算させて1日1モデルを試すようなプロセスは避けるべきです。少しずつピースを足していくことで、「今自分は何をしているのか?」を常に説明できるようにしましょう。たった1回しかモデリングをしていないのに、そこから壮大なストーリーを語るのは避けましょう。

モデリングのワークフローを整備しましょう

前述の「たくさんモデルを試す」に通じますが、モデリングをたくさん試せるようにフローを整備しましょう。これは統計学とは関係ないと思われますが、実は非常に重要です。毎回スクラッチモデリングするのではなく、型化してモデリングに時間を割けるようにしましょう。*3 また、試したモデルは記録できるようにしましょう。どのような思考プロセスを経て最終モデルに至ったのかトラッキングできるようにしましょう。

変数変換を考えましょう

対数変換や標準化を考えましょう。これらはRaw dataや残差の可視化が参考になります。また、相互作用項が有用と思えば積極的に考慮しましょう。使える情報は全て使いましょう。

因果効果の推定には慎重になりましょう

回帰係数を因果効果を主張するには、きちんと因果推論の仮定を満たすかいなか慎重に検討しましょう。そうでない限り因果効果と主張するのは辞めましょう。例えば、treatment/controlの割り当てや、A/Aテストによる同質性の確認など、因果推論には多くの仮定が必要です。因果効果の推定には慎重になりましょう。

実際のケーススタディで学びましょう

ケーススタディを学んだり、実務においてたくさんの経験をしましょう。その際には、モデルを正しく理解して、データの性質を理解して、人工データの作成や可視化を通して自分が何をしているのか?を理解するようにしましょう。回帰係数の結果も、ただ符号を見るだけではなく、きちんと解釈するようにしましょう。

*1:同じような結果が出るのか?データセットごとに激しく変動するならその原因はなにか?などを確認する

*2:プロットの例はこの本にたくさん紹介されています。

*3:尊敬するデータサイエンティストの方は、たくさん実験を回すためにBIツールを使っていました。pythonやRに固執しがちですが、本質はいかにデータを深く理解するか?なのでドラッグ&ドロップで数多く実験できるならば使わない手はないとのことです。

マーケティングサイエンスの全体感

マーケティングサイエンスの全体像や、研究テーマがよくわかる資料を見つけました。

消費者行動の異質性とダイナミクス

山口さんという方が博士論文の内容を整理したものらしいです。2023年現在では、名古屋大学マーケティングサイエンスの准教授としてお勤めのようです。

私の備忘録ということで、各章かいつまんで私なりの言葉で表現してみます。もちろん元資料を参照してください。頭の中がどんどん整理されていくと思います。

マーケティング実務でよくある問題意識

マーケティング戦略は、粒度によって3段階に分けられる。

  1. マスマーケティング
  2. セグメントマーケティング
  3. One-to-Oneマーケティング

マスマーケティングは、TVCMなど文字通りマス対して訴求する戦略。セグメントは、もう少し属性情報やサイコグラフィック的に顧客を分類して、セグメントごとに異なる戦略を練ること。例えば、ロイヤルユーザーと新規顧客ではマーケ施策も異なるよね、という話。最後にOne-to-Oneマーケティングは、いわば個々人ごとに最適なアプローチを考える戦略。そう考えると難しく感じるが、例えばECの広告やYoutubeのレコメンドって既にOne-to-Oneなので夢物語ではない。ただしそれらは機械学習などで複雑に構成しているため、おそらく解釈性は高くない。マーケティングサイエンスは、それらとは少しスタンスが異なると理解していて、マーケターへの知見還元が重要となってくる。そうすると、線形モデルや階層ベイズなどでのアプローチが主となってくるのかなーと。

One-to-Oneの世界では、「個」に焦点を当てるので、消費者間の違い、いわゆる「異質性」が重要となる。この資料ではそれに加えて、個人内での変化にも注目する。個人内とは、つまり時間的変化のこと。山口さんは、個人の異質性と時間的異質性の両方(資料では、消費者の異質性とダイナミクスと呼んでいる)を考慮したマーケティング戦略の高度化を目指した、ということらしい。

先行研究

まず、消費者間の異質性について先行研究を整理。

変量効果モデルと階層ベイズの棲み分けが上手く整理できていなかったけど、これで腑に落ちた。変量効果モデルは、あくまでもバラツキ(分散)の評価であり、階層ベイズは個々のパラメータ推定までスコープに入ってくるということか。

具体的な先行研究として、以下を紹介している。

山口,中島,岡 (2006),“支払い方法選択行動分析による"高価値"顧客の発掘”,オペレーションズ・リサーチ : 経営の科学,51(2), 81-88

One-to-Oneにクレジットカード支払いの利子に対する感応度を推定しており、「支払い金額次第で利子を許容」するユーザーを特定している。プロモーションのターゲットは彼らにするべきであり、一方で絶対に利子を許容しない層や思考停止で利子を許容する層はターゲティングしてはいけない。このように異質性が分かるとマーケティング施策の高度化につながる。

Webサイトへの訪問間隔

以下論文にて、Webサイトへの訪問間隔を分析している。

山口 (2014),“頻度の時間変化を考慮した階層ベイズモデルによるウェブサイト訪問行動の分析”,マーケティング・サイエンス,22(1),13-29

訪問間隔が指数分布に従うとしてモデリングをしている。説明変数を、一時効果と経時効果に分けて、それぞれが訪問間隔に与える影響を検証している。

推定結果を見てみると、前回購入数は次回の訪問までの期間を延ばすらしい。これは「購入」というモチベーションが満たされた後は、しばらく訪問しなくなるということだろう。

消費者心理状態と購買量の関係

以下論文にて、心理状態と購買量の関係分析をしている。

山口 (forthcoming),“消費者の心理状態の変化を考慮した動的モデルによる購買量分析”,マーケティング・サイエンス,forthcoming

モデルは少し複雑だけど、やりたいことは明確。要するに、消費者の気分によって購買量って変わるよね?という話。例えば給料日や、晴れている日などに気分が上がって購買量が上がる人は多いはず(もちろん、そうではない人もいるので異質性が大切になってくる)

この論文では、クーポン購入サイト*1のデータで数値実験している。目的変数は購入クーポン種類数。 ちなみに、消費者の心理状態は隠れマルコフにてモデル化している。

結果はこの通り。

心理状態で、購入意欲が高い状態と低い状態を表現できているとのこと。また、どうすれば購入意欲の高い状態へ遷移するかも読み取れる。

消費者行動と認知的不協和

これまた聞きなれないワード、認知的不協和。とても平たく言うと、買いものに対する後悔みたいな感じかな。資料中ではこんな風に説明されてる。

  • 商品の購入やブランド選択など,数多くの意思決定が発生
  • 意思決定をするということは,選ばない選択肢を決めることであり,消 費者は選ばない選択肢の持つ魅力を諦めるという事態に耐える必要 が出てくる

なるほどなるほど。どういう購入行動を取ると、その後の後悔につながりやすいか?を詳らかにするのがモチベーションってことか。ECサイトのデータを使って数値実験をしている。

認知的不協和を目的変数に据えたいわけだが、定義はこうしているらしい。

ある商品のオーダー後,同一セッション内にて再びこの商品のページ閲覧があった場 合,この商品を「認知的不協和の起こった可能性のある商品」と見なす

あれ?なんか思ってたのと違う…って思ったら確かにもう一回購入ページ行って写真とか詳細説明確認するもんな。納得。

いろいろとすっ飛ばして、階層モデルの結果はこちら

なるほど。赤い変数は不協和を起こしづらいが、青い変数は不協和につながりやすい特徴ってことか。確かにカラバリが多かったり、セールで勢い余って買った場合って後悔しやすいかも。一方で、普段からよく訪問するユーザーや古参ユーザーは後悔しづらい、いわばECでの買い物が上手とわかる。

まとめ

以上、消費者の異質性とダイナミクスを考慮しつつ、3つの問題を扱ってきた。

  1. 訪問間隔
  2. 心理状態と購入量
  3. 購入に対する後悔、ネガティブフィードバック

マーケティングサイエンスの研究って、こうやって進めるのかーととても勉強になりました。

*1:クーポン購入サイトってなんだ??

論文:一つの説明変数に対する複数の異質性係数をもつ階層ベイズ回帰モデル

今日はこの論文を読みました。

www.jstage.jst.go.jp

タイトルの通りで、同じ説明変数に対して複数の異質性係数を持つようなモデルの提案です。

例えば、製品に対する異質性(i)と時点に対する異質性(j)を組み合わせる、などが考えられます。これをひと目見たとき、パラメータの識別性は大丈夫なのか?と思いましたが、さすがに以下の記載がありました。

提案モデルの γi と βj のサンプリングで は異なるデータと事前情報を使うことになるため,提案の枠組みを用いればパラメータの 識別性の問題は生じない.

論文を見るとわかるのですが、マーケティングサイエンスの論文って*1共役生をフル活用したGibbs Samplerを構築しがちですよね。モデルのアイディアはあっても、ここが難しい。噂によると、マーケティングサイエンス系の界隈ではStan等ではなく、RでスクラッチMCMCを書くことが推奨されているようです。た、、、たのしそう。

この論文は30ページに渡って丁寧に書かれているので、マーケサイエンスの良い勉強材料になると思いました。

*1:というか佐藤先生始めGSSMの教授陣?

回帰を分類問題として解くテクニック

今日はこれを読みました。

zenn.dev

回帰問題を解いていると、正解分布と予測分布がずれていることありますよね。特に、ゼロ過剰であったりlong tailな場合は、予測値がマジョリティに引っ張られてほとんど原点でのデルタ関数みたいになりませんか?

この記事では、その正解分布と予測分布のズレについて丁寧に考察したものでした。 記事の切り抜きは意味がわからないので、気になる方は上の記事を見てみてください。

ちなみに、対処方法として

個人的な経験ベースですが、連続値目的変数を細かめのビニングで離散化し、そのラベルに対する順序付き分類問題として損失関数を設計すると、割とマシになる印象です。

というのが紹介されていましたが、これは偶然にも私も現場でやってました。他の方も同じ対応に帰着するって、なんか安心しますよね。

ちなみに私がやっていたのは、目的変数を10パーセンタイルごとに分割して、10クラス分類として解いてました。モデルは順序ロジットや順序プロビットを使ってましたね。 あくまでも解釈性が大切なので、いきなり非線形モデルを使うのではなく、最初は順序ロジットで分析してました。ここでのポイントは、あくまでも順序分類として解くことだと思います。これを単なる分類問題として解くのではなく、クラス間に明確な順序性があるからです。パラメータ(偏回帰係数)も、「偏回帰係数がプラスなので、この変数を増やすよう作用すれば次のランクに上がる」など解釈がしやすいはずです。

現場でのこういうテクニックって沢山ありそうですよね。

グレンジャー因果によるブランドスイッチの分析

今回はこの論文を読みました。細かい数式は追えていないけど、お気持ちは理解できたはず。

宮崎 慧, 星野 崇宏, 階層ベイズ動的モデルによるブランドスイッチングの分析:グレンジャー因果性検定の利用, マーケティング・サイエンス, 2013

モデルの全体像

複数ブランドの消費者行動間の因果関係について分析したもので、消費者セグメントレベルでの異質性も入れている。また、因果関係とは言ってもグレンジャー因果なので少し注意。

これがモデルの全体像なのだが、階層部分に消費者のクラス分類モデルが入っているのが面白い。

実務でone-to-oneの異質性考えると到底MCMCが回らないから、こういうセグメントレベルでの異質性はアイディアとしてすぐに活用できそう。しかも、これセグメントをGivenなものとして分析者が決めるのではなく、モデル側に任せているのも個人的には嬉しいポイント。セグメントごとに反応パラメータ(ki)が推定されるという感じか。もちろんクラス数はハイパラなので、次の数値実験で対数周辺尤度でチューニングしてる。

数値実験

フェイスティッシュ市場データで数値実験をしている。

2002年から2003年における購買回数上位 3 ブランド(Kimberly,Irving,P & G)およびその他のブランド群を1 ブランドにまとめた合計 4 ブランドのうちいずれかを,単一でも複数でも異なる購買機会で5 回以上買った1191世帯を抽出した。

さっき出てきたクラスター数と、あと自己回帰モデルなのでラグ数を対数周辺尤度の大きさで決定していた。今回はクラスター4つに落ち着いたらしい。

クラスター別に推定パラメータを見てみると色々とわかってくる。

例えば、クラス1はKimberlyへのブランド嗜好性が強く、チラシ広告や店頭陳列(ディスプレイ)に反応しやすいセグメントとわかる。クラス2は、とにかく価格反応度がセンシティブだなーとかわかってくる。

クラス別に、購買行動のグレンジャー因果を描画してみると、ブランドスイッチについて示唆が得られてくる。

クラス1に関して筆者らの考察は

クラス 1 では Irving と P & G の間でスイッチングが起きているが,P & G の購買後もしくは Irving の非購買の後に Kimberly へ移行する,つまり Kimberly がより好まれる傾向にあることが 見て取られる。

ということらしい。非購買のグレンジャー因果の解釈がちょっとむずかしい気がする。 他にも色々な数値を考察はしていたんだけども、結局どういうマーケティングメッセージなるか?というと、Kimberlyに関してこんな風にまとめられている。

本研究のフェイスティッシュ市場データの解析では,Kimberly はクラス 1 ではロイヤ ルティが形成され,クラス 4 では習慣的に購買している傾向がみられる。クラス 2 とクラ ス3に所属する消費者のロイヤルティを形成するためには,クラス 2 に対しては価格プロ モーション,クラス 3 に対しては店頭陳列が有効であると推察される。

なるほどなー。そもそも購買習慣があるクラスタと、少しプロモーションすればスイッチングしてくれそうなクラスタなどを振り分けることができそうだ。

感想

競合のトランザクションデータが入手可能なら、こういうVARを使ったモデリング楽しそうだなぁ。ただし、グレンジャー因果は我々が考える因果関係とはギャップがある点に注意したいが、メッセージだけ社内で一人歩きしたら、みんな正確な因果効果だと思っちゃうんだろうな。

自分の分析の幅が広がる、なかなか読み応えのある論文でした!星野先生の名前よく見るなぁ。