見出し画像

【MMM活用術 vol.3】 モデリングの勘所1 - データ変換


はじめに

先日、博報堂電通が揃ってガイドブックをリリースするなど、ルネサンス的に話題となっているMarketing Mix Modeling(MMM)。本シリーズでは、分析者がMMMをマーケティングに広く活用するためのナレッジを整理してお伝えできればと思います。
第3回目の今回から、モデリングについての話に入ります。今回は、MMM実装において重要な役割を占めているデータ変換について解説してみたいと思います。

MMMにおけるデータ変換とは

MMMでは、前処理(正規化等も含む)の後にデータの変換を行います。この変換によって、広告反応に対する仮説がデータに反映されることになります。

取り扱われる広告反応は、以下の2つです。

Saturation効果

1つ目は広告のSaturation効果です。広告出稿に対する反応は、投下予算の増加によって増加し続けるというよりは、一定の投資額で飽和すると考えるのが自然です。これを広告の飽和効果(Saturation効果)と言い、MMMのモデリング前にこの効果を反映するためのデータ変換が必要となります。この変換は、一般に以下のHill関数によって行われ、下図1のような曲線がインプットデータに想定されるようになります。

$${Hill(x_{media}, \gamma_{media}, \alpha_{media}) = \frac{1}{(1+(\frac{x_{media}}{\gamma_{media}})^{-\alpha_{media}})}}$$

上の式は、以下のパラメータで構成されています。

$$
\begin{array}{}
パラメータ & 概要 \\ \hline
x_{media} & 各メディアの出稿データ(投下予算、インプレッションなど)  \\ \hline
\gamma_{media} & 各メディアの飽和度合いを定義するパラメータ \\ \hline
\alpha_{media} & 各メディアの飽和の勾配を定義するパラメータ \\ \hline
\end{array}
$$

Hill関数によるレスポンスカーブのイメージ

アドストック効果

続いては広告のアドストックに関する変換です。一般に、広告の出稿に対する効果は一定程度持続すると考えることができ、アドストックの変換を行うことでMMMで取り扱うデータに広告効果の推移を反映させることができます。より具体的には、出稿直後に効果のピークタイムを迎え、その後徐々に減衰していくような推移が考えられる場合や、一定程度のラグを伴って広告効果のピークを迎え、その徐々に減衰していくような推移が考えられる場合があり、アドストック関数のパラメータを調整することでメディアごとに妥当なパフォーマンスを表現することができます。
アドストックの変換には以下の2つのパターンがあります。

  • 幾何的アドストック(Geometric Adstock)

最もシンプルなアドストック表現で、毎回一定の割合で広告効果が減衰していくことを想定しています。

$${adstock_{t,media} = x_{t,media} + \theta_{media} * adstock_{t-1, media}}$$

上の式は、各メディア($${media}$$)の時点$${t}$$における以下のパラメータで構成されます。

$$
\begin{array}{}
パラメータ & 概要 \\ \hline
x_{media} & 各メディアの出稿データ(投下予算、インプレッションなど)  \\ \hline
\theta_{media} & 固定の減衰率パラメータ \\ \hline
\end{array}
$$

幾何的アドストックにおいては、減衰率パラメータ$${\theta_{media}}$$について最適な値が探索されます。

  • ワイブル分布アドストック

ワイブル確率密度関数(Weibull PDF)をもとにした変換になります。幾何的アドストックよりも柔軟で多様な推移(効果のピークタイムにラグがある場合など)を表現することができます。

$${adstock_{t,media} = \sum_{l=0}^L exp(-\frac{scale}{shape})^{\theta} * x_{t-l,media}}$$

上の式は、各メディア($${media}$$)の時点$${t}$$における以下のパラメータで構成されます。

$$
\begin{array}{}
パラメータ & 概要 \\ \hline
x_{media} & 各メディアの出稿データ(投下予算、インプレッションなど)  \\ \hline
shape & 関数の形(shape)を調整するパラメータ \\ \hline
scale & 減衰期間を調整するパラメータ \\ \hline
\theta & 減衰パラメータ \\ \hline
\end{array}
$$

このように、ワイブルアドストックはより柔軟な表現を可能とするため、$${shape}$$・$${scale}$$・$${\theta}$$の3つのパラメータの最適化が必要になります。

※Metaの開発するオープンソースパッケージRobynにおいては、ワイブル確率関数(Weibull CDF)をもとにした変換(ピークタイムが一定期間持続する形が表現できる)を選択することができます。
※Googleの開発するパッケージLightweightMMMにおいては、carryoverモデルという変換を選択することもできます。詳細は公式ドキュメントをご覧ください。

アドストック分布の選択におけるオペレーションの勘所

さて、導入が長くなりましたが、これらの変換をどのように使い分けるかについては分析者のオペレーションによるところが大きいでしょう。

Saturationに関してはHill関数を通して表現することで統一されている一方で、アドストックは上述した通りその表現方法にいくつかのパターンがあり、LightweightMMMやRobynのようなSemi-Automatedなパッケージにおいてもその選択は分析者の手に委ねられています。モデル主導で調整していく場合は、モデルの評価指標(($${R^2}$$)やMAPEなど)をもとにモデル改善の手段として考えることができるでしょう。一方で、MMMのモデリング対象とする商品・サービスの性質及び、取り扱うメディアの性質にもとづいたビジネス的側面からの広告効果の仮説をもとに、妥当な分布を選択していくことも考えられます。商品・サービスの性質については、「日雑品は広告出稿直後から反応しやすい」・「保険は広告接触後、一定の検討期間を経て契約に動き出す可能性が高い」といったように、事業部の肌感や過去の分析によって蓄積されたインサイト、ドメイン一般の知識が役に立つでしょう。メディアの性質についても同様です。例えば、RobynのAnalystガイドには「デジタル広告においては一般的に、幾何的アドストックの変換は適切でない可能性が高い」という記載があります。このようなナレッジに基づいてデジタル広告の取り扱いが多い状況に対してはワイブルアドストックから試してみるといった対応をすることが考えられるでしょう。

ちなみにRobynとLightweightMMMそれぞれにおける変換方法選択のプロセスは以下の通りです。
・Robyn:robyn_inputs関数の引数"adstock"において指定する 

・LightweightMMM:lightweightMMMクラスの引数model_nameにて指定する

mmm = lightweight_mmm.LightweightMMM(model_name="carryover")

Tips1: パラメータの調整について

上述したSaturation・アドストックを表現するための各関数において、いくつかの調整可能なパラメータが存在しました。これらは、MMMのモデリングの過程において最適な値に調整されていきます。

LightweightMMMにおいては初期値の指定をせずともMCMCが実行されHill関数・アドストック関数のパラメータを最適化してくれる一方、RobynでMMMを実行する際、それぞれのパラメータに対して初期値(とりうる値の範囲)を設定する必要があります。

RobynのAnalystガイドでは、メディアごとに以下のような初期値目安が掲載されています。

1. 幾何的アドストックのパラメータ(固定減衰率θ)初期値目安
・TV = c(0.3, 0.8)
・OOH/Print/Radio = c(0.1, 0.4)
・Digital = c(0, 0.3)
2. ワイブルアドストックのパラメータ(shape・scale・θ)初期値目安
・c(0.0001, 10)
※長いラグが考えられる場合、c(2.0001, 10)を推奨

出典:An Analyst's Guide to MMMをもとに作成

上記を参考に設定しつつ、モデルパフォーマンスをもとに変動範囲をコントロールする形で調整していくことになるでしょう。

Tips2: 変換の組み合わせにおける制約

ここまで、Saturation及びアドストックそれぞれの変換について述べてきました。ここではそれらをどのように組み合わせて変換するのかについて整理していきます。

Googleの論文において、広告出稿の状況によって上述したSaturationとアドストックの変換をどのような順番で入力データに施すのが適切かが示唆されています。具体的には、

  • Saturation変換(Hill関数を用いた変換)→アドストック変換:広告出稿が特定の時期に集中している(特定の時期に大規模の出稿が行われていて、それがモデル対象期間全体の出稿規模の多くを占める)場合に好ましい

  • アドストック変換→Saturation変換:広告出稿が全体的に同規模で行われている場合に好ましい

とはいえ、LightweightMMMやRobynにおいては、両者とも後者の「アドストック→Saturation」の変換にしか対応しておらず、前者への切り替えは基本的に難しくなっています。従って、これらのパッケージを使う際はそのような前提を念頭に置いておくとよいでしょう。

終わりに

今回は、MMMに特徴的な広告に想定される2種類の傾向(Saturation・アドストック)仮説に基づいたデータ変換について解説していきました。後半ではパラメータなど細かい調整についても触れていましたが、このステップにおいてはモデルが出力する結果の解釈性を上げるために、Saturation・アドストックの傾向をビジネスサイドにもわかる(+可能であれば納得感を持たせられる)ように可視化できていることに重きを置くべきでしょう。


いいなと思ったら応援しよう!