今回は広告業界における長年の議論事項である、アトリビューションに関する話題を取り上げます。主にこのPurchase Conversions and Attribution Modeling in Online Advertising: An EmpiricalInvestigation というペーパーを参考にしました。

アトリビューションとは

広告やマーケティングで用いられる時、「広告の効果の貢献度」として用いられることが多いです。例えば広告Aと広告B両方を同じタイミングで出稿したとき、期待するアクションが100件行われたとする、A/Bどちらの広告がどれだけアクションに貢献したのか等を計る時に有効です。

詳しくは

アトリビューション 広告効果の考え方を根底から覆す新手法 単行本(ソフトカバー) – 2012/3/26

をご参考ください。

MMM(Marketing Mix Modeling)との違い

アトリビューションと似たような文脈で使われる概念でMMMと呼ばれるものがあります。広告の貢献度を求めるという意味では同じですが、以下の点で異なります。

アトリビューション MMM
分析対象 数キャンペーン間の広告評価

主にオンライン

4マス/デジタル等のチャネル間の広告評価

主にオフライン/オンライン

目的 キャンペーン設計のための参考 広告予算全体の最適化
期間 短期間 長期間
手法 ボトムアップアプローチ

ミクロ的手法

トップダウンアプローチ

マクロ的手法

経済モデル的手法

データ ユーザ一人ひとりのトラッキングログ ある日時の広告投下量とある日時のCVデータ

(トラッキング不要)

アトリビューションの方が短期キャンペーン向けと言えます。またMMMと比較してボリュームの意味でたくさんのデータが必要です。(MMMはテレビ視聴率や発行部数のようにデータのバラエティが重要になります)

アトリビューション分析の歴史と問題点

各々の広告のアトリビューションを算出するために様々な方法が生み出されました。また同時に問題点もありました。

課題意識 生み出されたもの
2007年ごろ 検索エンジンのみならず動画/SNS広告の台頭とともにラストクリック神話への疑問が起こる Attribution Managemant という言葉の初出
~2010年ごろ 貢献度の分配の必要性 (1) 分配方法類型化

1型 ラストのみ評価

2型 最初のみ評価

3型 均等評価

(2) 分配スコアの評価

貢献度/投下費用=アトリビューションCPA

2014年~ 分配を適切にするにはどうしたらよいか 協力ゲーム理論を用いた最適分配方法の採用

(2013 GAP 2014 AdWords に 採用)

参考)

http://www.marketingprofs.com/articles/2016/30472/marketing-mix-modeling-vs-attribution-which-one-is-right-for-your-business

アトリビューション 広告効果の考え方を根底から覆す新手法 単行本(ソフトカバー) – 2012/3/26田中 弦 (著),‎ 佐藤 康夫  (著),‎ 杉原 剛  (著),‎ 有園 雄一  (著)

https://www.pathinteractive.com/blog/digital-marketing/the-science-behind-data-driven-attribution/

より筆者作成

当初インターネット広告の世界ではラストクリック、すなわちクリック直前に見た広告のみがそのクリックに貢献したというような評価をしていました。一方でこれは間接的な他のアシストを無視しています。この課題から次に広告の貢献度を各々に割振ることを考えようという機運が高まってきました。そこで全ての広告に同じ貢献度を割振る均等モデルが考えられましたが、これはラストクリック評価と同様「すべて同じ貢献度」であるという前提に無理があります。またこの計算式であると、imp効率がよいものすなわち出現率が高い広告が高く評価されるという問題があります。

このように人間が主観で貢献度を割振るには限界があり、アトリビューションは暗黒時代にありました。

2014年ごろ協力ゲーム理論を用いてこの貢献度を算出する試みが出現しました。これにより人間が主観で割振るKKD(勘と経験と度胸)の時代は終わり、データドリブンなアトリビューションが可能な時代が到来しました。

協力ゲーム理論

一般的にゲーム理論といえば、非協力ゲームで紹介されることが多いです(囚人のジレンマ等)が本手法で紹介しているのは協力ゲーム理論です。この理論を用いるとプレイヤーが協力してあるアクションを行ったときにそのプレイヤーごとの貢献度指標を算出できます(シャープレイ値)

以下、応用上重要な言葉を説明します。

プレイヤー集合と特性関数

まずプレイヤーの集合Nを定義します。N={P1,P2,P3}みたいなものを想像していただければ良いかと思います。次にNの冪集合を考え、特性関数vを「v:power(N)→R」と定義します。Rは実数です。vはプレイヤーの組み合わせごとに実数を対応させる関数と考えられます。

特性関数の性質

特性関数は以下の性質を満たすことが前提となります。

  1. 優加法性: v(A∨B)>=v(A)+(B) for any A,B ∈power(N)
  2. 単調性: A⊆B ならば v(A)<=v(B)

1.は単独で行うより協力したほうが良い、2.はある提携に誰かが加わることで単調に特性関数が大きくなるということを表しています。

シャープレイ値

上で定義した特性関数をもとに以下の式でシャープレイ値を求めます。

\phi _{i}(v)=\sum _{{S\subseteq N\setminus \{i\}}}{\frac {|S|!\;(n-|S|-1)!}{n!}}(v(S\cup \{i\})-v(S))

(出典 https://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%A3%E3%83%BC%E3%83%97%E3%83%AC%E3%82%A4%E5%80%A4)

左辺は定義した特性関数vとプレイヤーiの関数であり、定義したvのもとプレイヤーiの貢献度の配分を表している。(nはプレイヤーの総数)

ここまでが一般論です。次に広告のアトリビューションの文脈に応用します。

広告への応用

プレイヤー集合Nを広告集合におきかえます。次に特性関数を定義するのですが、本稿が紹介しているペーパーには具体的な定義がないため筆者が適当に以下のように定義しました(議論の余地がある部分)

AはNの部分集合で{Ad1,Ad2}とするとv(A)=Ad1とAd2双方を閲覧したユーザのアクション率(クリック率/コンバージョン率)

右辺は実績から求めるため、ここで初めてログデータを活用することになります。定義からわかるようにpower(N)の要素の個数だけ定義する必要があります。すなわちAdがn個あれば(2のn乗)-1回計算する必要があります。

ここまで準備するとシャープレイ値の公式を用いて貢献度を求めることができます。

課題

上記で定義した特性関数は、優加法性や単調性を満たしていない場合もある。そのために特性関数の定義を工夫する必要があります。また順番を考慮していないため、例えば順番を考慮するためにAd集合を加工する必要があります。例えばつまらない私の例ですと{Ad1(1),Ad1(2),Ad1(3),,,}のように加工すると良さそうです。すなわち同じ広告でも出る順番が異なれば違うものとみなすということです。(Ad1(n) n番目に出現したAd1という意味。順序つきNは元の要素数の2乗の要素数になるため特性関数は(2の(nの2乗)-1)となる。計算のオーダーがとんでもないことになるので動的計画法のようなアイデアがいる)

最後に

色々課題があり、発展途上であるが人間の主観のヘンテコな割振りに比すれば随分まともな計算方法であるかと思います。今後主流になることを祈ります。