読了:Ng, Wang, Dai (2021) 係数が時変しまくるMMM by Uber

Ng, E., Wang, Z., Dai, A. (2021) Bayesian Time Varying Coefficient Model with Applications to Marketing Mix Modeling. arXiv:2106.03322v3.
 ずいぶん前に目を通してメモをとった奴。整理の都合上載せておく。
 著者らはUberの人。たぶんadKDD2021での発表だと思う。

1. イントロ
 マーケティング・ミックス・モデル(MMM)でマーケ戦術の限界効果を求めるのにはいろいろと難しい。広告技術は進化が速いからあんまり期間を長くとれないわ、粒度の細かいデータが必要だけどそうすると外れ値とかが怖いわ、誤差は時間的に相関してるわ、内生性や多重共線性は深刻だわ、モデリングに金がかかるぶん解釈可能性が求められるわ、機械学習を使おうにもなかなかホールドアウトを用意できないわ…。[これでもかと列挙してあるので、なんだか暗い気持ちになってきてしまって、このへんメモもいいかげんだ]
 UberではMMMのためにベイジアン時変係数モデル(BTVC)とカーネル回帰を使ってます。

2. 問題の定式化
 マーケティング反応\(\hat{y}_t\)、その回帰子\(x_{t,1} \ldots x_{t,P}\)について$$ \hat{y}_t = g(t) + \prod_{p=1}^P f_{t,p} (x_{t,p})$$ という乗法モデルを考える。より直観的には、トレンドと季節をわけて $$ \hat{y}_t = \exp(l_t) \exp(s_t) \prod_{p=1}^P x_{t,p}^{\beta_{t,p}} $$ とする。両側対数をとって$$ \log(\hat{y}_t) = l_t + s_t + \sum_1^P \log(x_{t,p}) \beta_{t,p}$$となる。右辺第3項を\(r_t\)と書く。
 状態空間モデルでも推定できるけど、DLMのMCMC推定は非効率だしコストが高いし。カルマンフィルタだと制約を欠けにくいし、ノイズをt分布過程とかにしにくい。そこでカーネル推定量を使おうという提案とかがなされている。[…中略…]
 そこで、MMMのために、ベイジアンな枠組みで係数を時間変動させる新しいアプローチを開発しました。

3. 方法
 ポイントは、回帰係数をローカルな潜在変数の加重和と捉えるという点です。
 時点\(t_j\)における\(p\)番目の回帰子について潜在変数\(b_{j,p}\)を考える。それぞれの回帰子について潜在変数は\(J\)個。スプライン回帰の観点からは\(b_{j,p}\)はノットだと考えても良い。で、$$ \beta_{t,p} = \sum_j w_j(t) b_{j,p}$$ $$w_j(t) = k(t,t_j) / \sum_{i=1}^J k(t,t_i)$$ と考える。\(k(\cdot,\cdot)\)はカーネル関数で、ガウシアンカーネルかなにかを使う。[ああ、なるほどね。細かいところはわからんが、気持ちとしては、\(\beta_{t,p}\)の時系列をスプライン曲線みたいになめらかにしたいから、時間軸上に\(J\)個の駅をつくっといてそこにパラメータ\(b_{j,p}\)を持たせておき、\(\beta_{t,p}\)はその加重和だってことにしよう、ってことね。いまいる場所からみて近い駅に大きな重みを与えるわけだ]
 これを行列で書き換えて$$ B=Kb $$ と書こう。\(B\)はサイズ\(T \times P\)の係数行列、\(K\)はサイズ\(T \times J\)のカーネル行列、\(b\)はサイズ\(J \times P\)のノット行列。
 これと同様に、トレンド(動的切片)を $$ B_{lev} = K_{lev} b_{lev} $$ $$ l_t = B_{t,lev}$$ とし、季節効果を$$ B_{seas} = K_{seas} b_{seas}$$ $$ s_t = X_{t,seas} B^\top_{t,seas} $$ とする。

 \(b, b_{lev}, b_{seas}\)は直接推定するんじゃなくて、ベイジアンの枠組みを考えます。事前分布を前のノットから$$ b_{j,lev} \sim Laplace(b_{j-1, lev}, \sigma_{lev}) $$ $$ b_{j,seas} \sim Laplace(b_{j-1,seas}, \sigma_{seas})$$ とする。
 回帰係数は2段のモデルを考える。$$ \mu_{reg} \sim N^+ (\mu_{pool}, \sigma^2_{pool} ) $$ $$ b_{reg} \sim N^+(\mu_{reg}, \sigma^2_{reg}) $$ \(\mu_{reg}\)が時間を通じたチャネル係数の推定になっとるわけです。
 推定は変分推論。
 
 カーネル関数は…[面倒くさいので省略するけど、回帰係数に関してはガウシアン。このへん、いったい主旨はなんなの?「何がいいのか知らないがうちらはこうしてます」という話だという理解でいいの?]

 季節性は… [面倒くさいので省略するけど、フーリエ系列を使う。まあUberなら週次とか日次とかだろうからね、季節をダミー変数で表すわけにもいかないわね]

4. 結果
[シミュレーションと実データを紹介。面倒なので適当に読み飛ばしたが、実データはUber Eatsの日次の新規獲得ユーザ数。推定されたアトリビューションをフィールド実験で得たアトリビューションと比較している。すごいねえ]

5. アーキテクチャー
 モデルはうちらが作ったソフトOrbitに積んでるぜ。うちらのMLプラットフォームMichelangelo上で動いてるぜ。[云々… はあ、さいですか]

6. 結論
 というわけで、UberのMMMのためにつくったベイジアン係数時変モデルを紹介した。予測性能は高いよ。
 云々。
—-
 はあ、そうですか…
 反応関数は超かんたん、でも係数を命がけで時変させる、そのためにはモデルがデータ生成メカニズムから離れて曲線フィッティングみたいになっちゃってももって瞑すべし、というタイプのアプローチである。正直、えっそこに凝るの…? そうまでしてなにもかも時間変動させたいの…? という印象だったが、どこに凝るかというのは結局のところ実務的要請の反映であるから、そこにはそういう要請がある、ってことなんでしょうね。
 正直、途中で気分的に辛くなってしまった。こういう話はこういう話が得意な人に任せて、私はずっと寝ていたい…