※『異常検知のための未来予測:オウム返し的手法からHolt-Winters Methodまで』のリミックスです。
Facebook, Twitter, Instagram, ...企業のマーケティング部門は様々なチャネルでキャンペーンを打つ。そして僕ら顧客はモバイルアプリやWeb上の様々な接点(タッチポイント)で似たような広告を目にすることになる。
さて、めでたく顧客がコンバージョン(購買、クリック、問い合わせフォームの送信、など)に至ったとして、一体どのマーケティング施策が効いたのだろうか?
「各チャネルでの接点が最終的なコンバージョンにどれだけ寄与しているか」これを数値化できれば、マーケティング担当者はそれを施策の最適化に役立てることができる。与えられた宣伝予算をFacebook, Twitter, Instagramのそれぞれにどのように配分するのがベストか、といった議論が可能になるのだ。
このように、コンバージョン履歴に基づいて各マーケティングチャネルの価値(=KPIに対する貢献度合い)を定量的に評価するための手法がアトリビューション。
では具体的にどのような手法が世の中にあるのか見ていこう。
定番ヒューリスティクス5選
まずは、ヒューリスティクスに基づく基本的な5つの手法。
以後、次のようなコンバージョンパス path
とその観測回数 value
のペアが与えられるものとする:
path |
value |
---|---|
Twitter > Instagram | 2 |
5 | |
Instagram > Facebook > Twitter | 1 |
... | ... |
Pythonではこんなリストをイメージしよう:
conversions = [
(('Twitter', 'Instagram',), 2),
(('Facebook',), 5),
(('Instagram', 'Facebook', 'Twitter', ), 1),
...
]
アウトプット(アトリビューション分析結果)として、チャネルごとに貢献度を示す何らかの値が得られるものとする:
attribution = {
'Twitter': 0,
'Instagram': 0,
'Facebook': 0
}
※参考:『アトリビューションとは:5分でわかる意味と5つの基本モデル』
ラストタッチ (Last-Touch)
最も単純なアトリビューションモデルのひとつ、コンバージョン直前のタッチポイント全振りパターン。購買直前に見たのがTwitter広告なら、そのコンバージョンは「Twitter広告のおかげ」ということになる。それまでにどんなタイミングでどんな接点を持っていようが関係ない。
# Last-Touch
for path, value in conversions:
attribution[path[-1]] += value
ファーストタッチ (First-Touch)
ラストタッチの逆で、最初のタッチポイントに全振り。つまり第一印象ですべてが決まるという考え方。コンバージョンした人とのファーストコンタクトがInstagram上だったのなら、その後コンバージョンに至るまでにどんな広告を何回見ていようが関係なく「Instagramのおかげ」ということになる。
# First-Touch
for path, value in conversions:
attribution[path[0]] += value
線形 (Linear)
先の2つはさすがに過剰では・・・という見方もある。これまでの対話の積み重ねで僕らは最終的にコンバージョンに至るのだ、と。では、過去の全接点を等しく評価してあげればよいではないか。
# Linear
for path, value in conversions:
n = len(path)
for c in path:
attribution[c] += value / n
U字型 (U-Shape)
とはいえ、ファーストタッチ・ラストタッチの「第一印象とコンバージョン直前の接点が特に重要だ」という仮定のほうが現実に即している感じがする。そこで、両端には特別に高い重み付けを行ってみる。
# U-Shape
for path, value in conversions:
# 接点が2回以下ならLinearと同じ
edge_weight = 0.4 if len(path) > 2 else 0.5
attribution[path[0]] += value * edge_weight
attribution[path[-1]] += value * edge_weight
n_intermediate = len(path) - 2
for i in range(1, len(path) - 1):
# 残り20%を中間接点に等しく配分
attribution[path[i]] += value * 0.2 / n_intermediate
時間減衰 (Time Decay)
いやいや、第一印象なんて時間の経過とともに忘れ去られてしまうもので、重み付けを行うなら直近の印象のほうが大切に違いない!
# Time Decay
for path, value in conversions:
ordered_unique_exposure = dict.fromkeys(path)
base = 1 / sum(range(1, len(ordered_unique_exposure) + 1))
for i, c in enumerate(ordered_unique_exposure, 1):
attribution[c] += i * base * value
タッチポイントが5回あったのなら $\sum_{i=1}^{5} i = 15$ でその重み付けは過去から順に $\frac{1}{15}, \frac{2}{15}, \frac{3}{15}, \frac{4}{15}, \frac{5}{15}$ となる。
データに基づくアトリビューションとShapley Value
以上が最も単純なルールベースのアトリビューションモデルたち。しかし全て何らかの“極端な仮定”に依存しており、実際のコンバージョンに至るまでの振る舞いはそんなに簡単には抽象化できない、という意見もある。
そこで、現場の興味はデータ分析や機械学習、より複雑な数式を用いたモデリングに向く。
たとえばGoogle Analyticsのドキュメント "Multi-Channel Funnels Data-Driven Attribution" で紹介されているのは、ゲーム理論における Shapley Value(シャープレイ値)を応用したアトリビューションモデル。噛み砕いた分かりやすい解説は『Google 広告のデータドリブン アトリビューション(DDA)について理解してみる』に譲るとして、その数式からモデルの気持ちを感じ取ってみよう。
総数 $n$ のマーケティングチャネルの集合 $N$ とその部分集合からなる取りうるチャネルの組み合わせ $S$ があるとき、あるチャネル $i$ のShapley value $\varphi_{i}$ は、与えられたチャネルの組み合わせに応じてその“価値”を数値化する関数 $v$ を用いて次のように定式化される:
試しにこれまで見てきた例に沿って $N = \{ \mathrm{Facebook, Twitter, Instagram} \}$ ($n=3$) を考えると、$N \setminus \{i\}$ の下で $S$ は次のようなチャネル集合となる:
- $i = \mathrm{Facebook}$ のとき $\{\mathrm{Twitter}\}, \{\mathrm{Instagram}\}, \{\mathrm{Twitter, Instagram}\}$
- $i = \mathrm{Twitter}$ のとき $\{\mathrm{Facebook}\}, \{\mathrm{Instagram}\}, \{\mathrm{Facebook, Instagram}\}$
- $i = \mathrm{Instagram}$ のとき $\{\mathrm{Facebook}\}, \{\mathrm{Twitter}\}, \{\mathrm{Facebook, Twitter}\}$
ここで、例として $v(S)$ を「チャネル集合 $S$ に対してそのコンバージョン回数の総数を返す関数」とすると、$i = \mathrm{Facebook}$ でコンバージョン履歴に (('Twitter', 'Instagram',), 2)
, (('Instagram', 'Twitter',), 3)
, (('Instagram',), 1)
を含む場合:
- $v\left(\{\mathrm{Twitter, Instagram}\}\right) = 2 + 3 = 5$
- $v\left(\{\mathrm{Twitter}\}\right) = 0$
- $v\left(\{\mathrm{Instagram}\}\right) = 1$
となる。このとき $S$ は「チャネルの集合」を表すため、単一コンバージョンパス内での接点は順不同であることに注意。すなわち、Twitter > Instagram と Instagram > Twitter は同一視され、$v\left(\{\mathrm{Twitter, Instagram}\}\right)$ では両パスの“価値”が合算される。
以上を踏まえると、式の中の $v\left(S \cup \{i\}\right)-v\left(S\right)$ (=チャネル $i$ を含むときと含まないときの $v$ の差分)は「コンバージョンパスの“価値”(先の例では“コンバージョン総数”)に対するチャネル $i$ の寄与度」を意味しているものと読むことができる。したがって、これをすべての $S$ について足し合わせれば $\sum_{S \subseteq N \setminus \{i\}} \left(v\left(S \cup \{i\}\right)-v\left(S\right)\right)$、チャネル $i$ の“価値”を数値化できそうだ。
では元の式に含まれる $\frac{|S|! \ \left(n-|S|-1\right)!}{n!}$ は何かというと、これは平均化のための重み。コンバージョンパス内のチャネル数 $|S|$ ごとに寄与度の平均をとっている。具体的には $|S|=1$ なら、考えるのは:
- $i = \mathrm{Facebook}$ のとき $\{\mathrm{Twitter}\}, \{\mathrm{Instagram}\}$
- $i = \mathrm{Twitter}$ のとき $\{\mathrm{Facebook}\}, \{\mathrm{Instagram}\}$
- $i = \mathrm{Instagram}$ のとき $\{\mathrm{Facebook}\}, \{\mathrm{Twitter}\}$
以上の全3チャネル×各チャネル2通りずつで計6通りだから、先の例で $i = \mathrm{Facebook}$ の場合をみると:
一般化すると $S \subseteq N \setminus \{i\}$ だから、$n-1$ チャネルから $|S|$ チャネルを取ったときの組み合わせ ${}_{(n-1)} \mathrm{C}_{|S|} = \frac{(n-1)!}{|S|!(n-1-|S|)!}$ を全 $n$ チャネルについて考えればよくて、
これで冒頭のShapley Valueの計算式に帰ってきた。ここまでの直感的な理解をまとめると、Shapley Valueによるアトリビューションモデリングは「各マーケティングチャネルについて、コンバージョンパス中で他のチャネルとどの程度共起していたか」を数値化しているもの、といったイメージだろうか。
例
それでは実際に、5つのルールベースモデルとShapley Valueモデルがどのようなアトリビューション結果を返すのか、サンプルデータを使って見てみよう。
データはRのアトリビューションモデル実装 ChannelAttribution の中で提供されているもので、全12種類のダミーチャネルからなるコンバージョンパス path
と観測回数 total_conversions
を含む:
path,total_conversions,total_conversion_value,total_null
eta > iota > alpha > eta,1,0.244,3
iota > iota > iota > iota,2,3.195,6
alpha > iota > alpha > alpha > alpha > iota > alpha > alpha > alpha > alpha > alpha,2,6.754,6
beta > eta,1,2.4019999999999997,3
iota > eta > theta > lambda > lambda > theta > lambda,0,0.0,2
...
各チャネルの全コンバージョンパス中の出現頻度は次の通り。
実験結果は attribution.ipynb @ Google Colaboratory より。ここまでに紹介したアトリビューションモデルの実装は takuti/mtapy にまとめた。
1ノルムで正規化したすべてのアトリビューション結果を並べたものがこちら:
「なんかあんまり変わらんな・・・」というのが正直な感想なのだけど、どうだろうか。とはいえ実際のマーケティング予算最適化に適用した場合、0.01の差異でも金額としては大きな違いになるはずであり、こんなものなのだろうか。
ここから「ヒューリスティクスでも案外使い物になる」と結論づけることもできるだろうが、そのためにはより大規模なデータでの実験は不可欠だろう。
まとめ
単一タッチポイント全振りパターンから出発して、データに基づくShapley Valueモデルまで、シンプルなアトリビューションモデルの気持ちを感じた。
データに基づく手法は沼であり、容易に複雑な方向へと拡張していくことができる。たとえば論文 "Causally Driven Incremental Multi Touch Attribution Using a Recurrent Neural Network " ではLSTMと改良版Shapley Valueモデルの組み合わせによって時間的要素を考慮したより効果的なモデリングを試みている1。
一方で『異常検知のための未来予測:オウム返し的手法からHolt-Winters Methodまで』でも書いたとおり、「このユースケースでそれって本当に必要ですか?」という議論がやっぱり大切なんだと思います。アトリビューションも、案外ここに書いてあることだけで十分かもね。
1. 手前味噌ですが、最近お仕事の一環で社内リサーチチームの協力の下この論文のモデルを実装・公開するなどしました。 ↩
シェアする
カテゴリ
あわせて読みたい
- 2021-07-20
- 『AIアルゴリズムマーケティング』は期待ハズレだったけど手元に置いておきたい一冊
- 2021-01-04
- 顧客起点マーケティングによって「データ」が「ストーリー」に昇華される
- 2017-08-26
- 異常検知のための未来予測:オウム返し的手法からHolt-Winters Methodまで
最終更新日: 2022-06-26
書いた人: たくち
Takuya Kitazawa(たくち)です。長野県出身、カナダ・バンクーバー在住のソフトウェアエンジニア。これまでB2B/B2Cの各領域で、Web技術・データサイエンス・機械学習のプロダクト化および顧客への導入支援・コンサルティング、そして関連分野の啓蒙活動に携わってきました。現在は主に北米(カナダ)、アジア(日本)、アフリカ(マラウイ)の個人および企業を対象にフリーランスとして活動中。詳しい経歴はレジュメ を参照ください。いろいろなまちを走って、時に自然と戯れながら、その時間その場所の「日常」を生きています。ご意見・ご感想およびお仕事のご相談は [email protected] まで。
近況 一杯のコーヒーを贈る免責事項
- Amazonのアソシエイトとして、当サイトは amazon.co.jp 上の適格販売により収入を得ています。
- 当サイトおよび関連するメディア上での発言はすべて私個人の見解であり、所属する(あるいは過去に所属した)組織のいかなる見解を代表するものでもありません。
- 当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、個人ブログという性質上、誤情報や客観性を欠いた意見が入り込んでいることもございます。いかなる場合でも、当サイトおよびリンク先に掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。
- その他、記事の内容や掲載画像などに問題がございましたら、直接メールでご連絡ください。確認の後、対応させていただきます。