今さら”Recommendations as Treatments: Debiasing Learning and Evaluation”を読みソースコードを眺めるなど

はじめに

最近、『施策デザインのための機械学習入門〜データ分析技術のビジネス活用における正しい考え方』が流行っていると思いますが、私も少しずつ読んでいます。

2019年ごろから勉強会などで知る機会のあったCountefactual Machine Learningですが、仕事で機械学習を使えば使うほどにその必要性を強く感じます。
書籍は体系的にまとまっていて非常に良いのですが、せっかく関心を持ったのでその源流と思われる論文やソースコードを漁ってみようと思いました。

今回、深ぼるのはこちらの論文です。
Recommendations as Treatments: Debiasing Learning and Evaluation
https://arxiv.org/abs/1602.05352

情報を漁る

arXivの方はAppendixついてなかったのでこちらの方がいいと思います。
https://www.cs.cornell.edu/people/tj/publications/schnabel_etal_16b.pdf

著者のスライドもありました。
https://www.cs.cornell.edu/~schnabts/downloads/slides/schnabel2016mnar.pdf

まずは読む

以下に読んだ際のメモを箇条書きします。

  • レコメンドのデータは大体偏っている。偏ってアイテムの評価がされる。
  • レコメンドに因果推論のアプローチを適用する。
  • 傾向スコア(ランダムっぽさ)を用いた学習の重み付け
  • バイアスの最小化?のアプローチ
  • 行列分解による欠損値補完に対する重み付けをした。
  • 色々なデータで試した。
  • IPS(Inverse Propensity Score)で重み付けしたら誤差の不偏推定量を手に入れれる。
  • 評価方法はMAE(Mean Absolute Error)とかDCG(Discounted Cumulative Gain)など
  • 比較は一様に評価のデータが観察されると仮定したナイーブなモデルとで行う。
  • 行列分解の次元数dとか、正則化項のラムダはハイパーパラメータとして扱う。
  • 行列分解かつIPSで重みづけしたモデルはロバストに良い性能になった。

既出の参考資料を読む

ソースコード読む

コーネル大学のサイトに論文のソースコードがあったので、そちらの解読を試みます。
https://www.cs.cornell.edu/~schnabts/mnar/

そんなにソースコードは多くなかったです。

train.sh

学習のバッチ処理

train.py

python ../bin/train.py –lambdas 0.008,25 –numdims 40 –ratings data/train.ascii –propensities data/propensities.ascii

  • コマンドライン引数たち
    • lambda:正則化パラメータ。デフォルトは’0.008,0.04,0.2,1,5,25,125′
    • numdims:行列分解の次元数。デフォルトは’5,10,20,40′
    • ratings:訓練用データの指定を行う(ASCII formatの行列)
    • propensities:傾向スコアのデータの指定を行う(ASCII formatの行列)
    • metric:デフォルトは’MSE’、MAEかMSEを選べる

MetricsのMSE/MAE関数を呼び出し、
Expt3のlearn関数を使って学習を実行する。

Metrics.py

  • MSE関数
    • ITEMWISE_METRICSを呼び出している
  • MAE関数
    • ITEMWISE_METRICSを呼び出している
  • ITEMWISE_METRICS関数
    • MSEかMAEかでnumpyのデータの形式を指定している。
    • SET_PROPENSITIES関数を呼び出している
    • 観測された評価と予測した評価の差分にIPWを掛け、観測誤差とする
    • 累積の観測誤差を出す
    • IPWの合計値で累積の観測誤差を割ったglobalNormalizerを計算して返す
    • ユーザー単位での観測誤差の推定値をユーザー数で割ったuserNormalizedMetricを計算して返す
    • アイテム単位での観測誤差の推定値をアイテム数で割ったitemNormalizedMetricを計算して返す
  • SET_PROPENSITIES関数
    • IPWがあればそれを使い、ない場合は出現割合を返している
    • 観察されたデータを考慮して補間を行う(numpy.ma.arrayのmask)

Expt3.py

Expt2のINIT_PARAMS、MF_TRAIN、FINAL_TRAINを実行する
MFのPREDICTED_SCORESを実行する

  • 処理の流れ
    • もろもろの引数で学習の際の設定を受け取り
    • 傾向スコアの逆数からIPWを計算し
    • そのスコアを学習用データで補間し
    • ランダムに並び替える
    • 4-foldsでのクロスバリデーションを行う
    • 学習を並列処理を行う
    • 予測スコアから一番いいスコアのモデルを選ぶ
    • 行列分解での機械学習を行う
    • 行列分解での予測値を計算する
    • 予測結果を返す

Expt2.py

MFのGENERATE_MATRIX、PREDICTED_SCORESを実行

  • MF_TRAIN関数
    • IPWを受け取って、上限下限などを調整
    • それをMFのGENERATE_MATRIX関数に適用
  • FINAL_TRAIN関数
    • MF_TRAIN関数と似たような処理
    • 交差検証してベストだったパラメータに適用する想定
  • INIT_PARAMS関数
    • 評価行列の欠損値を補間している
    • 行列特異値分解を行っている
    • その結果をstartTuple(初期値)として与えている

MF.py

  • PREDICTED_SCORES関数
    • バイアスがあるかどうかで分岐
    • バイアスがあれば、元のスコアにユーザーのバイアス、アイテムのバイアス、グローバルなバイアスを足し合わせる
    • バイアスがなければそのまま返す
  • GENERATE_MATRIX関数
    • 指標がMSEかMAEかで分岐
    • MetricsのSET_PROPENSITIES関数を実行
    • ユーザー単位での標準化やアイテム単位での標準化、全体での標準化のための計算をする
    • 標準化の方法で分岐、傾向スコアを標準化する
    • バイアスのモードで分岐
    • 学習のための初期値としてのデータを設定
    • 目的関数の最適化(最小化)を行う
    • その結果を返す
  • Mat2Vec関数
    • 行列をパラメータのベクトルにする
  • Vec2Mat関数
    • パラメータベクトルを入力する
    • ユーザーベクトル、アイテムベクトル、ユーザーバイアス、アイテムバイアス、グルーバルバイアスを返す

test.sh

テストのバッチ処理

test.py

python ../bin/test.py –test data/test.ascii –completed completed_ratings.ascii

  • コマンドライン引数たち
    • test:テスト用の評価データを指定する(ASCII formatの行列)
    • completed:評価を埋めたい行列のファイル名を指定

MSEやらMAEの結果を返す。

所感

まず論文の内容ですが、大体のビジネスデータはRCTな状況で生み出されたものではないので、偏って観測されるのは当然ですが、その結果としてレコメンドのアルゴリズムの性能が落ちてしまうということが論文に記されていました。性能を落とさないためにも、傾向スコアを用いた重み付けによる機械学習が大事に思いました。ただ、傾向スコアの推定自体の精度も大事に思われるので、銀の弾丸ではないですが、バイアスから抜け出るヒントをいただけたという気持ちです。
そして、思ったよりもソースコードが長いと思ったのと、普段あまり使わないNumpyの関数を知ることができたのもよかったです。
理論の理解だけでなく、それを実現するためのソースコードを眺めるのも大事ですね。今後も論文をただ読むだけでなくソースコードの海に飛び込んでみようと思います。

参考リンク

numpy.reciprocal
maskedarray.generic
numpy.ma.getmask
numpy.clip
scipy.sparse.linalg.svds
numpy.ma.filled
scipy.optimize.minimize

Bias Correction For Paid Search In Media Mix Modeling[A4一枚まで備忘録]

A4用紙1枚にまとめるイメージでメモを残そうという取り組みです。
今回は2018年のGoogleのMedia Mix Modeling(マーケティング・ミックス・モデリング)に関する論文です。Bias Correction For Paid Search In Media Mix Modeling前回と違い、因果推論の観点で考察などが書かれています。前回のものがモデリングのテクニカルな側面を描いたものとすると、今回はテクニカルな話は置いておいて、因果関係について様々なケーススタディを扱うというものとなります。

目次

Abstract
1.Introduction and problem description
2.Related work
3.Preliminary to Pearl’s causal theory
4.Methodology
5.Implementation
6.Case studies in simple scenarios
7.Case study with complex scenario
8.Discussion

Abstract

バイアスを回避するようなMedia Mix Modeling(以下、MMM)のモデルの推定について、バックドア基準に基づき、因果ダイアグラムを用いたアプローチをする。
ランダム化実験の結果との比較をすることで推定のバイアスについて考察を行なっている。
シンプルなモデルなら大丈夫だが、複雑なMMMのモデルに関しては不偏推定量は得られていないらしい。

1.Introduction and problem description

・MMMの歴史は長く、1964年のBordenの研究に始まるらしい。
・Fortune500にいるような色々な企業がMMMを試してきたが、課題が色々(データ収集、セレクションバイアス、広告の長期効果、季節性、ファネル効果など)ある。
・ターゲットとしているユーザー群の需要や関心が高まっているとき、広告支出と売上は共に伸びるので、セレクションバイアスが発生する。(実際のところ、儲かっているから広告を打つという場合がありうる。)
・この論文ではMMMにおける検索広告のセレクションバイアスについて扱う。Pearl流の因果推論のアプローチに従い、バックドア基準を満たすようなMMMの推定を行う。
・実験結果と照らし合わせて、不偏推定量がもとまることがわかった。(検索広告に関してだが。)

2.Related work

広告効果の検証などは以下の3つの研究がなされているとのこと。
・1.ユーザー単位のデータを利用して広告を触れたか触れていないかを比較する。傾向スコアなどを計算してマッチングや共変量の調整などを行う。
・2.キャンペーン単位で集計したデータを用いたアプローチで、KPIに関してキャンペーンを打たなかった場合の反事実との比較を行う。
・3.クエリ単位でオーガニック検索とペイド検索をランダムに出し分けてその増分を推定する方法。

この論文で扱うMMMは2つ目のアプローチに近い。違いとしては複数のメディアのキャンペーンを扱うこと。

なお、回帰不連続デザインを用いたケースなどの研究もあるそうな。

3.Preliminary to Pearl’s causal theory

以下のようなDAGを考える。

・Aはクエリに関するGoogle広告のオークション
・Qはユーザーの検索するクエリ
・Pはペイド広告でのインプレッション
・Oはオーガニック検索結果
・Yは売上

ようは、 Qが与えられたもとでOが決まり、QとAに影響を受けPが決まり、OとPによってYが決まると言う構図となります。
MMMにおいて広告効果を測るために因果ダイアグラムを理解することは大事と書かれています。
ここではPearl流の因果推論のフレームワークが紹介されています。
$$ X_i = f_i(pa_{i} , \epsilon_i) $$
\( X_i \)は子を表し、\( pa_{i} \)は親を表します。なお、\( f_i \)は関数、\( \epsilon_i \)は任意に決まるランダムな項で他の変数と独立するものとしています。

「因果効果の定義」
二つの変数XとYについて、XのYにおける因果効果は\( Pr(y | \check{x} ) \)で表現できる。Xがxとして与えられたもとで、\( X_i = f_i(pa_{i} , \epsilon_i) \)を解くことで\( Y=y \)の確率を計算できる。ここでの\( \check{x} \)はXをxに設定するという介入を意味している。

「識別性」
ダイアグラムで互換性のある、観測された変数の正の確率から、\( Pr(y | \check{x} ) \)を一意に計算することができるのであれば、XのYにおける因果効果は識別可能となる。

「d-分離」
因果ダイアグラムの二つのノードの間のパスについて、以下の二つの条件のいずれかが満たされる場合についてZノードによって分離されている、あるいはブロックされていると表現する。
・1.\( m \in Z \)として、そのパスが「\( i \to m \to j \)」あるいは、「\( i \gets m \to j \)」を含んでいる。
・2.\( m \notin Z \)として、mがZに依存しないものとして、そのパスが「\( i \to m \gets j \)」を含んでいる。

「バックドア基準」
ダイアグラムにおいて以下の二つを満たす場合、変数Zはバックドア基準を満たす。
・1.変数ZのノードがXの子孫でない。(Xの共変量を除外することに関する基準)
・2.変数ZがXとY(Xへの矢印を含んだもの)の間の全てのパスをブロックしている。(交絡因子の適切な集合をZが含んでいるための基準)

もし、変数Zのバックドア基準が満たされるのであれば、XのYにおける因果効果は以下のように表現することができる。つまりZでXのYにおける因果効果を計算できる。
$$ Pr(Y | \check{x}) = \sum_{z} Pr(Y | x, z) Pr(z) $$

図を再掲しますが、ここでペイド広告の売上への因果効果を知りたいとします。

その場合、QはPの子孫のYを持たないため、バックドア基準の1つ目を満たし、「\( P \gets Q \to O \to Y \)」であることからd分離の条件の1つ目を満たすことからバックドア基準の2つ目を満たす。
つまり、バックドア基準を満たすことから、検索クエリを使うことでペイド広告の売上への因果効果を測れることになります。

Pearl流の因果推論のフレームワークの3つの課題
・1.因果ダイアグラムをどう構築するのか?
・2.全ての必要な変数を正確に観測、計測することができるのか?
・3.識別が可能だとして、有限であるサンプルサイズにおいて、\( Pr(Y | X, Z) \)の関数系はどうなるか?

広告まわりのデータは潤沢にデータがあるわけではないし計測できないものもあるため、どの課題も無視できない。

4.Methodology

「シンプルなシナリオ」
売上への他のメディアの貢献は無視できるものとして、広告のみをチャネルとして想定する。

$$Y_{t}=\beta_0 + \beta_1 X_t + \epsilon_t$$

\( X_t \)はあるプロダクトの検索広告の支出、\( Y_t \)はあるプロダクトの売上。\( \beta_1 \)は広告の売り上げにもたらす効果でROASと呼ばれる、\( \epsilon_t \)は\( X_t \)では説明づけることができなかった売上への影響を指す。計量経済学などで問題として扱われる内生性はこの\( \epsilon_t \)と\( X_t \)の相関によって起きる。

実際に、\( \epsilon \)がXと相関するとして式を変形すれば、不偏推定ができないことがわかります。

ここで、潜在的にプロダクトの売上に影響を与える検索クエリを集約した\(V\)という統計量を考えます。
誤差項\( \epsilon \)が以下のように、オーガニックサーチによる影響(\( \epsilon_1 \))と経済要因(\( \epsilon_0 \))によるものからなるとします。

$$ \epsilon = \epsilon_0 + \epsilon_1 $$

ここで、
$$ \epsilon_1 \perp X | V $$

$$ \epsilon_0 \perp X | V $$
を満たすようなVを見つけることができれば、因果効果を測れることになります。


※想定1:検索広告の予算はないとする。
※想定2:検索クエリで条件付けした際に、広告主の入札や競合の行動の影響は無視できる。

理論1
ペイド広告ついて上の図を想定した際に、XとY(sales)が完全に相関していないならば、正則化条件のもとで、検索広告のROAS(\( \beta_1 \))を推定することができる。

$$Y = \beta_0 + \beta_1 X + f(V) + \eta$$

ここで\( f(\cdot) \)は未知の関数、\( \eta\)はXや\(f(V)\)と相関しない残差とします。

上の図において、変数ZのノードがXの子孫でないというバックドア基準の一つ目はクリアしていることは明らかで、d分離の観点に関しても一つ目を満たしているためブロックしているため、バックドア基準の二つ目もクリアしている。

$$ E(Y | X, V) = \beta_0 + \beta_1 X + E(\epsilon | X, V)$$

Vで条件付けるとXは誤差項と直交することから、
$$E(\epsilon|X,V)=E(\epsilon|V)$$
となり、
$$ E(Y | X, V) = \beta_0 + \beta_1 X + f(V) $$
と表すことができる。
この式で回帰分析をすることでROASである\(\beta_1\)を推定することができる。

「複雑なシナリオ」
ここでは検索広告以外(\( X_2 \))も売上に影響を与えるというケースを扱っています。

まず、予算に関して検索広告と検索広告以外の広告(\( X_2 \))の両方に制約がある場合を考えます。以下の図が、今回のダイアグラムですが、先程の図に予算が追加されていることがわかります。

なお、ここでは広告のヒストリカルな影響などの複雑さは考慮していません。

一方で、予算が検索広告に関しては制約となっていないケースだと以下のダイアグラムになります。

理論2
1.広告予算が検索広告に制約を設けているケースで、広告のラグ効果が無視できるとして、もし\(X_1\)が\(V\)や\(X_2\)と完全に相関しておらず、正則化条件を満たすなら検索広告のROAS(\( \beta_1 \))は以下の回帰モデルで推定することができる。

$$ Y = \beta_0 + \beta_1 X_1 + f(V, X_2) + \eta$$
ここで

$$f(v, x_2) = E(\epsilon_0 | V = v, X_2 = x_2) + E(\epsilon_1 | V = v) + E(\epsilon_2 | X_2 = x_2)$$

となり、\( \eta\)は残差で\(X_1\)と\(f(V,X_2)\)と相関しない。

ダイアグラムを再掲します。

2.広告予算が検索広告に制約を設けていないケースで、正則化条件を満たすなら検索広告のROAS(\( \beta_1 \))は以下の回帰モデルで推定することができる。

$$Y = \beta_0 + \beta_1 X_1 + f(V) + \eta$$
ここでfは未知の関数とする。

ダイアグラムを再掲します。

以上、因果ダイアグラムを描き、バックドア基準を満たしバイアスのないパラメータ推定をするということが書かれていました。

ここではシンプルに特定の広告の効果を見ていましたが、MMMにおいては複数のメディアの効果を求めなければならないです。

考えられるアプローチとしては、最初にバイアス補正を行い\( X_1 \)の影響を推定し、それを使って\( X_2 \)を推定するというもの。

5.Implementation

・検索クエリのデータの集計の仕方
・STEP1:広告主と競合のサイトを識別する。
・STEP2:特定のエリアで自然検索でURLが見つかる回数をカウントする。
・STEP3:クエリを3つのグループに分類。おのおの閾値を設ける。
・STEP4:クエリをグループごとに分けたものを推定の際に誤差項と直交するものとして扱う。(閾値は50%がいいらしい。)
・TBA

6.Case studies in simple scenarios

・ナイーブな推定手法では過大に効果を推定していることがわかった。
・需要による調整だけではバイアスを十分にとりきれないことがわかった。
・SBC(search bias correction)の手法によりROASがランダム化実験の結果に近くなった。
・TBA

7.Case study with complex scenario

・TBA
・TBA
・TBA

8.Discussion

・TBA
・TBA
・TBA

DAG描くのに使ったコード

DAG_draw.ipynb

2019年に読んだデータ分析系の本の振り返り(21+1冊)

はじめに

2020年、あけましておめでとうございます。年末に自分自身を振り返ろうと思ったのですが、結局データ分析と勉強しかしていないわけで、書籍を振り返ろうと思うに至りました。私の知り合いのデータサイエンティストはだいたい全冊持っているであろうと思われますが、良い本だと思うので思い出していただければ幸いです。

1.『ベイズモデリングの世界』(岩波書店)

基本的に階層ベイズモデルを使って、個体ごとの異質性を考慮した分析手法が提案されています。前半はオムニバス形式で様々な先生がモデルの適用について執筆されており、後半では伊庭先生による階層ベイズモデルの講義になっています。途中でスタイン統計量による縮小推定の話があげられ、柔軟なモデリングのためには「階層化した方が少なくとも望ましい推定量が得られる」という数学的証明を捨てることもやむを得ないと書かれています。

2.『トピックモデルによる統計的潜在意味解析 (自然言語処理シリーズ) 』(コロナ社)

この本はトピックモデルの教科書というよりも、ベイズ推定の教科書という側面が強い印象があります。途中で出てくる数式は流し読みするのは難しく、最低2冊以上のノートが別途必要になると思います。一度でもLDAのパラメータを導出してみたいという方には良い教科書だと思います。疑似コードが提供されているので、それをもとにRやPythonでコーディングしていけば、一番シンプルなLDAが非常に短い行で実行できてしまうことに驚かれるかもしれません。人間が手を動かして推定アルゴリズムを導出しているからこそ、短いコードで済むということを実感できるはずです。

3.『構造的因果モデルの基礎』(共立出版)

グラフィカルなアプローチで因果推論を扱っている書籍です。Judea Pearl流の因果推論アプローチについて記すことを目的に書かれています。基礎と書かれていますが決して簡単ではありません。ただ、扱われる数学のレベルとしては確率と線形代数がわかれば大丈夫だと思われます。余談ではありますが、1章の相関関係と因果関係の事例紹介で「おむつとビールの話」が都市伝説ではなくきちんと記事としてWall Street Journalという雑誌に掲載されていたことが明らかにされています。

4.『現場で使える!PyTorch開発入門 深層学習モデルの作成とアプリケーションへの実装 (AI & TECHNOLOGY)』(翔泳社)

PyTorchを触ったことがないが、深層学習の手法について知っている層を対象とした本です。6章まではGoogleのColabで動かせるのでGoogleに課金することなく深層学習による回帰、CNN、GAN、RNN、Encoder-Decoderモデル、ニューラル行列因子分解をPyTorchで試すことができます。写経したものはこちら。転移学習や高解像度化や画像生成、文章のクラス分類、文書生成、機械翻訳などもできるので、PyTorchでこれくらいの量をコーディングしたらこれくらいのことができるのかという学びや、他の人の書いたPyTorchコードを読みやすくなるなどの便益は十分にあると思いました。

5.『作ってわかる! アンサンブル学習アルゴリズム入門』(シーアンドアール研究所)

会社で行っているPythonもくもく会用に買った本で、scikit-learnを使わずに機械学習のアルゴリズム(アンサンブル系)をコーディングするための本です。pythonのコードについて逐次、細かい解説が行われているわけではないので、1行1行自分でコメントを加えながら写経をしていけば力が付くという本かなと思われます。sklearnはそれはそれで素晴らしいですが、こういう本でフルスクラッチで修行できるのはいいですね。

6.『数理統計学―基礎から学ぶデータ解析』(内田老鶴圃)

統計検定1級を合格された方のブログで紹介されていた教科書です。理系の大学生レベルの数学知識があれば、数理統計学の基礎を学べると思います。中心極限定理の証明や、様々な分布の期待値や分散、様々な分布の性質について数式を用いてしっかり理解することができます。数式もほどよく端折られているので、無論ですがノートが数冊必要になります。各章毎にある練習問題も解くことで力が付くと思います。日本の大学の授業の教科書がこれだったらジェノサイド(再履修者の大量発生)が起きるんだろうなと思ってしまった。

7.『44の例題で学ぶ統計的検定と推定の解き方』(オーム社)

統計の検定に関してだけ扱った珍しい本です。第3部までは統計学の普通の教科書ですが、それ以降であらゆる検定の例題が44件も載せられています。パラメトリックな検定から、ノンパラメトリックな検定まで幅広く扱われています。一番気にいっているのは仮説検定法の分類の表です。これさえあれば、どのデータに対してどの検定を行えばいいかが一目瞭然です。

8.『わけがわかる機械学習 ── 現実の問題を解くために、しくみを理解する』(技術評論社)

機械学習の原理を手早く数式を交えて学べる本です。かゆいところに手が届いていると言うか、既出の教科書では捨象されがちな、条件付き確率における2変数以上の条件づけでの表現に紙面を割いていたりしてくれるのが嬉しいです。ある程度数学の話はわかるが、だいぶ忘れているビジネスパーソンには大変にありがたいコンテンツと言えると思います。ベイズ線形回帰に関しても行列を用いた、わかりやすい導出方法が紹介されています。またコラムで紹介されている、測度論にどう向き合えばいいかの著者の見解は参考になります。

9.『Statistical Rethinking: A Bayesian Course with Examples in R and Stan (Chapman & Hall/CRC Texts in Statistical Science)

R言語とstanを用いてベイズ統計学を入門レベルから学べる本です。各トピックごとにそれなりの紙面が割かれています。例題も豊富にあるので、線形回帰・MCMC・情報量基準・階層ベイズモデルまで、ベイズ統計学を基礎から応用までしっかりと学べると思います。youtubeで著者の講義も配信されているので、留学気分を味わえます。

10.『scikit-learnとTensorFlowによる実践機械学習』(オライリージャパン)

2019年に日本で開かれたML SummitでTFの開発者がおすすめしていた教科書です。前半部分で機械学習の入門から応用までをわかりやすい説明で学ぶことができます。数式は少ないですが、図とソースコード(Python)がちりばめられており、手を動かして理解を進めることができます。後半部分はTensorFlowを用いた深層学習の基礎を同様に手を動かして学ぶことができます。ただ、TFのバージョンも変わってきているので前半の説明をアテにして読むのも良いと思います。

11.『AIアルゴリズムマーケティング 自動化のための機械学習/経済モデル、ベストプラクティス、アーキテクチャ (impress top gear)

マーケティングへのデータサイエンスの適用に関する珍しい書籍です。ソースコードはついていないですが、業務で使う際のアイデアが手に入ることもあります。一般的な回帰、生存時間分析、オークション、アトリビューション分析、アップリフトモデリング以外にも、情報検索やレコメンデーションやトピックモデルなどマーケティングながら学際的なトピックも扱われています。レコメンドなどで使われる、ランク学習に関して詳しく書かれた書籍をあまり知らないので、この本はその点においてもありがたい本でもあります。

12.『入門 統計的因果推論』(朝倉書店)

ほぼ全ての章でグラフィカルなアプローチで因果推論を扱っています。例題も豊富なので、一つ一つ丁寧にやれば理解が捗ります。おそらく、例題の多さを含め一番丁寧にd分離性、do演算子、バックドア基準、フロントドア基準に関する説明をしてくれている本なのかなと思いました。グラフでの因果推論に関して初めての人でも、確率さえ知っていれば読み進めることができるはずです。また、途中で操作変数法の紹介もされ、経済学出身者としては読みやすい。ただ、傾向スコアのくだりや、DIDなどのくだりはあまり出てきません。あと、やってないですが章末の練習問題に対するSolution Manualが提供されているようです。

13.『実践 ベイズモデリング -解析技法と認知モデル-』(朝倉書店)

ベイズモデリングを様々な事例に適用する方法がオムニバス形式で記された本です。ワイブル分布や異質性を考慮した二項分布、無制限複数選択形式のアンケートデータに対する手法、トピックモデル、項目反応理論などが扱われています。マーケティングの実務で使える事例が多いように感じました。こちらはサポートサイトでRコードとstanコードが提供されています。あと、appendixにあるプレート表現の見方も参考になります。

14.『機械学習スタートアップシリーズ ベイズ推論による機械学習入門 (KS情報科学専門書)

機械学習などで用いるベイズ推論を扱った教科書です。入門とありますが、入門者は書かれた数式をそのまま見ていても頭に入らないのではないでしょうか。手を動かしてなんぼの本だと思います。ノート2冊は絶対に必要です。たぶん、数式の展開を丁寧に記すと倍以上の厚みの本になると思います。各々のモデルに関してグラフィカルモデルが記されているのや、サンプルコードとしてGitHubにJuliaで書かれたソースコードが提供されているのも良いです。

15.『その問題、数理モデルが解決します』(ベレ出版)

物語形式で、様々な問題に対して数理モデリングのアプローチが紹介されています。途中でマッチング理論やゲーム理論やオークションなども登場することから、経済学出身者も喜ぶ内容かもしれません。社会人になってからナッシュ均衡という言葉が書かれた本は中々出会って来なかった。

16.『ヤバい予測学 ― 「何を買うか」から「いつ死ぬか」まであなたの行動はすべて読まれている』(CCCメディアハウス)

2013年と結構古い本ですが、データ分析を様々な事象に対して適用した事例紹介本です。アップリフトモデリングへの言及もあり、こういったものに関して日本は何年も遅れてブームが来るんだなという実感を与えてくれた本でもありました。appendixに分析事例が147個ほどあげられているのも参考になります。

17.『たのしいベイズモデリング2: 事例で拓く研究のフロンティア』(北大路書房)

主にstanを用いたベイズモデリングによる分析事例が1と2で38本もオムニバス形式で載っています。ほとんどの事例で階層ベイズモデルが扱われています。2では若干マーケティングに近い内容の題材も扱われ、データサイエンティストの人にも嬉しい内容かもしれません。もちろんデータとstanとRのコードがサポートサイトで提供されています。

18.『カルマンフィルタ ―Rを使った時系列予測と状態空間モデル― (統計学One Point 2)』(共立出版)

状態空間モデルで時系列予測を行うための手法が記されている本です。RのKFASパッケージが全面に渡って扱われています。トレンドを考慮したり、カレンダー効果を追加したり、共変量を追加したりなど様々なアプローチが紹介されコードも伴っているわけですから、業務でも抜群に役に立ちました。

19.『機械学習のエッセンス -実装しながら学ぶPython,数学,アルゴリズム- (Machine Learning)』(SBクリエイティブ)

自分のいる会社で最低限の数学がわかると思われる若いメンバーに買ってもらうように言っている本です。微積分・線形代数だけでなく、カルシュ・キューン・タッカー条件(最適化数学)に関しても扱ってくれているので、ここで出てくる数学がわかれば大体の論文に立ち向かえると思います。さらに、Pythonの基礎もこれで学ぶことができるので一石二鳥な素敵な本ですね。また、最後の方でスクラッチでアルゴリズムを書くパートがあり、こちらも勉強になります。

20.『機械学習のための特徴量エンジニアリング ―その原理とPythonによる実践 (オライリー・ジャパン)』(オライリー・ジャパン)

機械学習における前処理の指針を与えてくれる本です。Pythonのコードが提供されています。例えばですが、「テストデータにだけある、新しい単語は取り除いてしまえばいい」などの細かいアドバイスが何気に嬉しいです。「Effectコーディング」「特徴量ハッシング」「ビンカウンティング」「バックオフ」「leakage-proof統計量」などは読むまで知らないところだったので勉強になりました。

21.『データサイエンスのための統計学入門 ―予測、分類、統計モデリング、統計的機械学習とRプログラミング』(オライリージャパン)

データ分析の仕事をする上で最低限必要な知識を幅広く抑えることができる本です。数式は少なく、ところどころ出てくるコードはR言語です。参考文献などがブログだったりするため厳密さがめちゃあるわけではないですが、業務で使う分には問題ないと思います。分類問題において、AUCなどの評価指標だけでなく、予測値自体の探索的分析のすすめなどが書かれており、参考になりました。また、特徴量エンジンとしてのk-NN法の話も面白いと思いました。

[+α]『プログラマのためのGoogle Cloud Platform入門 サービスの全体像からクラウドネイティブアプリケーション構築まで』(翔泳社)

Google Cloud Platformを初めて触るデータ分析者にはちょうど良い本です。説明もわかりやすいので、いきなりアカウントを作ってドキュメントを解読するよりかは戸惑いは減るはずです。この本を土台に、GCS・GCEを駆使してML系のAPIを呼び出して使うなどの最低限の操作は私でもできるようになりました。GCPの画面や機能もどんどん変わっていくので書籍を買ってもアレなんですが、歴史的な背景も若干記述されているので、それはそれで勉強になります。ただ、エンジニアにこの本を買うべきか聞いた際にネガティブな意見があったのですが、たぶん現役プログラマからすると簡単過ぎるからなんだろうなと思います。

終わりに

2019年もぼちぼち勉強できましたが、2020年もこれまで同様にノートとペンを大事にする勉強を続けていき、コーディングも分析ももっともっと数をこなして会社や社会に求められるようなデータ分析官を目指していこうと思います。あぁ、英会話などの勉強をする時間を作るのが難しい。

Causal Inference in Economics and Marketingを(今更)読んだ感想と備忘録

2016年にバリアンがPNAS(Proceedings of the National Academy of Sciences of the United States of America)に投稿した”Causal Inference in Economics and Marketing”というペーパーを見つけました。内容的に非常にわかりやすかったし学びがあったので、要約して自分のためにメモを残しておきたいと思います。要約なんぞいらないという方はこちらのPDFを見ていただけると良いです。

修士が終わってからWebマーケティングの仕事をずっとしていますが、ABテストができるケースが多かったので因果推論が必要になる場面はあまりありませんでした。ただ、事業会社でしばしば行われるオフライン広告や社内の研修の効果に関してはABテストのような実験はできませんので、因果推論のニーズは「実は」高いと思います。ただ、広告を打つ主体・研修を進める主体がその分析のニーズがあるかというと全然そんなことはないと思います。今回のバリアンの素晴らしい記事をもとに因果推論の民主化をできると、説明の手間が省けるぶん世のデータサイエンティストは少しだけ楽になるかもしれません。

目次

・欠落変数の問題
・因果推論の重要なコンセプト
・因果効果を推定できる方法
 ・自然実験
 ・操作変数法
 ・回帰分断デザイン
 ・Difference in differences(DID)
・おわりに
・参考文献

欠落変数の問題

まずは以下のようなシンプルな線形モデルについて振り返ってみます。y_cはある都市でのサーフィン映画の一人あたりの売上、x_cはある都市でのサーフィン映画に関する広告支出を、bは係数、e_cは誤差項を表します。

この式を推定できれば広告主は何が嬉しいのかと言うと、1単位あたり広告支出を増やせば、どれくらいサーフィン映画の売上が増えるのかがわかるということです。
しかしながら、様々な都市を混ぜこぜしたデータからこの式を推定したものを使って、求まったbが10だとします。その際に、100円突っ込めば1000円儲かる、濡れ手で粟とはこのことや!状態が訪れるのでしょうか。
回帰分析には欠落変数の問題があり、欠落変数が説明変数と相関していると、濡れ手で粟とは言えない状況が起きうります。

まず、本来モデルに加えるべき変数がモデルに含まれていない場合、その変数はすべて誤差項に含まれることになります。
係数bの数式を確認してみると、

から、yを代入すると、

となります。右辺のbは真のbの係数とします。もし、誤差項eと説明変数が相関していれば、右辺二項目の影響により偏った推定量を得ることになります。つまり、本来モデルに加えるべき変数が漏れており、それが説明変数と相関している場合は、濡れ手で粟状態になるとは言えず、100円広告に突っ込んでも1000円儲かると期待することはできなくなります。せっかく推定したのに大損するという、非常に気の毒な結末があるでしょう。

釈迦に説法ですが、被説明変数と説明変数の両方に対して相関してしまう変数を交絡変数と呼びます。今回のサーフィン映画の場合、モデルに含まれていない変数として「サーフィンへの関心度」というものが考えられます。例えば、ハワイ州のホノルルのようなエリアではサーフィンが盛んですしサーフィン映画も人気になりえます。他方、ノースダコタ州のファーゴのような、群馬・栃木・埼玉・岐阜のような海なし県のようなエリアの場合、サーフィンもサーフィン映画も人気ではないでしょう。

ここでのサーフィンへの関心度は「サーフィン映画に対する広告支出」にも影響を与える可能性もありますし、そもそもの「サーフィン映画の興行収入」にも影響を与える可能性があります。

また、広告費自体は、映画の広告担当者が様々なドメイン知識を利用して意思決定しているのが普通で、都市に対してランダムに広告予算を割り振っているという、無能な運用者を想定することは難しいです。そのため、都市間でランダムに広告費が割り振られると考えるような分析者はあまり賢明ではないでしょう。現実世界において、人間が意思決定した結果のデータのほとんどが交絡変数を持つと考えられます。

因果推論の重要なコンセプト

因果推論における重要なコンセプトは、反実仮想と実際の結果との比較をすることです。この場合の反実仮想は処置されなかった場合の処置群の結果となります。

ランダム化実験が可能な場合、セレクションバイアスはゼロになります。そのため、ABテストなどでランダム出し分けができるWebマーケティングは因果推論が行いやすいのです。しかしながら、実務においてのランダム化実験や、ランダムでなくともそもそもの実験自体がハードルが高いケースが多いです。以降ではそのような現状を踏まえた上で、因果効果を推定するための方法を紹介します。

因果効果を推定するための方法

自然実験

自然実験は、手元のデータからランダムに近そうな事象があるのではないかを見出すというアプローチです。バリアンの例では、スーパーボウル(アメリカンフットボール)の試合での映画広告出稿に関して、ホームシティのチームの試合がそのスタジアムで開催される場合に、10~15%ほど観客が多いという前提があるとして、映画広告の出稿の意思決定をする際にどのチームがそのスタジアムで試合が行われるかわからないという点に着目していました。つまり、どのチームがどのスタジアムで試合するかがランダムに決まると考え、広告を打たなかった場合の売上という反実仮想を推定することで、セレクションバイアスなく広告による映画の売上げ増の効果を推定することができます。

操作変数法(二段階最小二乗法)


一般的に広告費をどれだけ支払うかの意思決定をしている人は売上に影響を与えるような変数を考慮して、広告費を決めていると考えられます。しかしながら、それが分析者のモデルの中で考慮されず、誤差項として扱われてしまうことがあります。そのような状況下で適切な広告効果を推定する方法として操作変数法があります。再び釈迦に説法ですが、操作変数は広告費を通してのみ売上に影響を与える変数のことを指します。ここで、スーパーボウルの話に戻すと、プレイオフなどでのホームチームの勝利はそのスタジアムでの広告費の増加につながると考えられます。しかしながら、プレイオフに行けるかどうかは映画の売上に影響を与える可能性は低いと考えられます。つまり、プレイオフに進んだかどうかは操作変数として扱うことができそうです。

操作変数法によるbの推定量は以下のようになります。

操作変数zと誤差項eが直交することで最後の項は消え、真のパラメータ、つまり真の広告効果を求めることができます。あるいは、以下のような2つの方程式を用いることもできます。

第1段階ではプレーオフで勝ったかどうかを表すz_cを用いて、2つ目の式のパラメータを推定します。第2段階では第1段階で推定したaを使って予測したx_cを説明変数としてbを推定します。このようなアプローチを字面の通り、二段階最小二乗法と呼びます。この推定結果は操作変数法と等しくなります。

回帰分断デザイン(Regression discontinuity)

閾値を超えることによる因果効果に関心があるケースです。閾値よりも低いもの、高いものの両サイドに近いものを比較する。例えば、学校のクラスで40名のクラスと41名のクラスがいたとして、教育パフォーマンスのクラスの大きさによる因果効果を検証したい場合や、住宅周辺のブロードバンドのスピードが閾値を超えたと閾値を下回るエリアから、ブロードバンドの速度が住宅価格に与える因果効果を検証したい場合などに用いられるます。学校のクラスで40名クラスや41名クラスに配属されるというのはランダムに近いと考えます。


(ペーパーの図を引用しております。この図では21歳前後かどうかという歳のわずかな違いにおいてランダムに近い、処置群とコントロール群が生成されていると考えます。)

Webマーケティングの現場での活用においては、特定のページの閲覧数がある閾値を超えた場合に、そのユーザーに対して特別に処置(例えばクーポンを配る)を行うケースにおいて、閾値を超えたか超えなかったかの比較から処置の因果効果を推定することになります。つまりWebページの閲覧数が閾値を超える超えないはランダムに近いとしています。その際、閾値を超えたものの処置をしそこねた(クーポンを配り損ねた)というのがWeb広告における反実仮想となります。

バリアンのペーパーによると、Google、Microsoft、Facebookのエンジニアはこれらの実装を行い、閾値による比較を行っているようです。

Difference in differences(DID)

Difference in differences(DID)は時系列データでの因果推論において役に立つ手法です。
ここでは介入が仮になかったとしたら、処置群とコントロール群の前後の差は等しいという、以下のような仮定を置きます。

y_TFは処置群が、介入を受けなかった場合の後の結果(つまり反実仮想)、y_TBは処置群が介入を受ける前の結果、y_CAはコントロール群の後の結果、y_CBはコントロール群の前の結果を表しています。
これを処置群の後の結果y_TAから差し引くと以下のようになります。

つまり、処置群の前後の差は、処置群とコントロール群の前後の差が等しいのであれば、処置群の前後の差からコントロール群の前後の差を差し引いたもので表現することができます。これがDifference in differencesです。変動を見たい場合はブートストラップ法を適用することで変動幅を求めることができます。

水準のみならず、前後の比に関しても同様に扱うことができ、その場合は以下のように対数の差となります。

また、DIDにおいては反実仮想を推定する方法として回帰モデルが用いられることがあります。例えば、線形回帰やランダムフォレスト回帰などです。アプローチとしては機械学習に近く、共変量(その日の天気、ニュースなどのイベント、その他の外生変数)を用いてコントロール群の一部のデータで訓練します。続いて、残りのコントロール群のデータを用いてテストをし、モデルとしての汎化性能を高めます。そのモデルを用いて、介入期間における反実仮想を予測し、その反実仮想と実績を比較することで因果効果をもとめます。


(ペーパーの図を引用しております。こちらでは訓練データを用いて推定したモデルでテスト期間を予測し、介入期間での反実仮想を予測により求め、介入後の実績値と比較しています。)

おわりに

因果推論に関して既に様々な文献がありますが、バリアンの説明が一番頭に入ってきやすかった気がします。もちろん、因果推論のすべてのアプローチが網羅されているわけではないですが、これから因果推論の勉強を頑張ろうというモチベーションを上げるための教材としては良いなと思いました。

参考文献

[1] Varian(2016), “Causal Inference in Economics and Marketing”, PNAS
[2] “回帰不連続デザインRegression discontinuity design(および分割時系列デザイン)”
[3] 岩波データサイエンス刊行委員会(2016), 『岩波データサイエンス Vol.3』

Japan.R 2016のスライドまとめ

まだ手に入れていないスライドもあるので随時更新しますが、Japan.R 2016(connpass)のスライドをまとめています。後日、登場したパッケージなどのサンプルコードも載せていく予定です。

目次

・石田基広さんのキーノート
・ホクソエムとは何だったのか(ホクソエムさん)
・Rと探索的データ分析で、国連での日本の立ち位置を可視化する(安田洋介さん)
・マウス操作でかんたん予測分析(鈴木了太さん)
・高速・省メモリにlibsvm形式でダンプする方法を研究してみた(@hskksk)
・Rでてんしょくかつどう(@Med_KU)
・RStudio vs Emacs(@y__mattu)
・randomforestで高次元の変数重要度見る(@siero5335)
・Rで本を作りたい(前田和寛さん)
・28歳でプログラミングを始めた話(市川太祐さん)
・LDA-Visパッケージのご紹介(@doradora09)
・【e2d3R】E2D3からDot-Bar-Chartのご紹介(楠本一哲さん)
・このIRのグラフがすごい!上場企業2016(@ito_yan)
・Rでカルマンフィルタをしたい(@tetsuroito)
・PPAP(仮)(@yutannihilation)
・スライド未公開、ユーザーの状態遷移に関する分析のお話(@sanoche16)
・私とR(高栁慎一さん)
・めくってもめくってもサンプル画像(服部恵美さん)
・木と電話と選挙(causalTree)(安井翔太さん)
・スライド未公開、dplyrの話(@tomomoto)
・てかLINEやってる?(仮)(@wonder_zone)
・心理学における「再現性」の問題とBayes Factor(@NSushi)

・石田基広さんのキーノート

スライド未公開です。

・Linux使い
・ヘブライ語の意味構造を代数学でやっていた
・S/R言語の生みの親はJohn Chambers
 以下の二つは最近書かれた本だそうです。
 Software for Data Analysis: Programming with R (Statistics and Computing)
 Extending R (Chapman & Hall/CRC The R Series)
・S→S-plus→Rの順番で発展
・purrrを最近使い始めたそうです。
・XLConnectパッケージを使って、大学教員の採点活動を効率化しているそうです。

・ホクソエムとは何だったのか(ホクソエムさん)

匿名技術者集団ホクソエムの2016年の成果
・densratio( densratio: Density Ratio Estimation
・githubinstall
githubinstall: A Helpful Way to Install R Packages Hosted on GitHub
・healthplanet( Wrapper package for healthplanet api
・RODBCDBI
RODBCDBI: Provides Access to Databases Through the ODBC Interface
・jpmesh( jpmesh: Utilities for Japanese Mesh Code

起業されたとのことです。懸命に頑張って下さい!
株式会社ホクソエム

awesomeな人材が必要とのことで、awesomeな方はアプライしてみてはいかがでしょうか。

・Rと探索的データ分析で、国連での日本の立ち位置を可視化する(安田洋介さん)

スライド未公開です。
国連のデータを使って、Exploratoryを用いた探索的データ分析の実演をされていました。

・マウス操作でかんたん予測分析(鈴木了太さん)

R AnalyticFlow
Rで実践!データサイエンス~初めの一歩から高度な応用まで~

・高速・省メモリにlibsvm形式でダンプする方法を研究してみた(@hskksk)

・Rでてんしょくかつどう(@Med_KU)

Rmd でreveal.js のhtml スライドプレゼンテーション

・RStudio vs Emacs(@y__mattu)

RStudio vs Emacs Japan.R 2016

・randomforestで高次元の変数重要度見る(@siero5335)

・Rで本を作りたい(前田和寛さん)

Rで本を作りたい

・28歳でプログラミングを始めた話(市川太祐さん)

・医療関連のアプリ開発でデータサイエンスを駆使しようとしているそうです。

スライド未公開です。
スライドがシェアされ次第載せます。

・LDA-Visパッケージのご紹介(@doradora09)

・【e2d3R】E2D3からDot-Bar-Chartのご紹介(楠本一哲さん)

スライドは未公開です。
E2D3をRで表示する試みのようです。
Experiments with e2d3 in R

・このIRのグラフがすごい!上場企業2016(@ito_yan)

スライド未公開です。後日シェアしていただけるようです。

・Rでカルマンフィルタをしたい(@tetsuroito)

・PPAP(仮)(@yutannihilation)

・スライド未公開、ユーザーの状態遷移に関する分析のお話(@sanoche16)

スライドがシェアされ次第載せます。

・私とR(高栁慎一さん)

RjpWiki
統計・データ解析
統計解析フリーソフト R の備忘録頁 ver.3.1
seekR(R限定の検索エンジン)
からだにいいもの
アブラタニブログってなんでしょう。油谷さんのブログ?

・めくってもめくってもサンプル画像(服部恵美さん)

Rのサンプルコードはあるけれども、どんな図ができるのかはわからない。そこで、サンプルコードとグラフを大量にまとめているサイトを作ったそうです。検索性は未知数ですが、暇なときに眺めておきたいですね。
R Graphical Manual

・木と電話と選挙(causalTree)(安井翔太さん)

・スライド未公開、dplyrの話(@tomomoto)

スライドがシェアされ次第載せます。

・てかLINEやってる?(仮)(@wonder_zone)

・心理学における「再現性」の問題とBayes Factor(@NSushi)

スライドは後日公開とのことです。

統計的因果推論に関するスライドとRのサンプルコード

導入・入門から実践までのスライドと実践するためのコードを載せています。因果推論を実務でカジュアルに使えるまで上達させたいものです。

以下、
・統計的因果推論に関するスライド
・資料
・用語整理
・統計的因果推論に関するRの実行例
・書籍情報
からなります。

統計的因果推論に関するスライド

統計的因果推論の学習を進める上でのヒントが記されていると思われるスライドです。カジュアルに回帰分析を行うことに関する注意も書かれています。

因果推論の歴史や利用することのモチベーションが非常にわかりやすく書かれています。
多重共線性を引き合いに出していたりしているのも理解が捗ります。

以下の2つは星野先生の『調査観察データの統計科学』通称赤本の1~3章に関するスライドです。

Rによる実践に関してのスライドです。コードが書かれているので実行してみると良いでしょう。

傾向スコアの計算をRで実践しているスライドです。

資料

こちらの資料は定義が書かれていて助かります。
2016/01/23 (Sat) 第 3 回因果推論を学ぶ会

こちらは論文や教科書の紹介もしています。
プロペンシティスコア(Propensity score; PS)(1)-PSの正しい使い方

カーネギーメロン大学の機械学習における因果推論に関しての講義資料です。
Lecture Notes 17 Causal Inference

Googleのハル・バリアンがまとめたペーパーも良いです。
Causal Inference in Economics and Marketing

用語整理

    ATE(Average Treatment Effect:平均処置効果(因果効果))
    例で述べるとするならば、母集団全てのユーザーにバナーを見せた場合のブランド名検索による訪問数の平均と、全てのユーザーにバナーを見せなかった場合のブランド名検索による訪問数の平均の差として表されます。バナーを見てしまったユーザーにとって、バナーを見なかったら、という反実仮想なデータは当然存在しないので、そのままでは計算できません。ただし、RCT(Randomized Control Trial)、無作為化比較対照実験、の状況ではバイアスなく推定できるとされています。RCTなケースは限られていると思いますが。
    ATT(Average Treatment Effect on the Treated:処置群における平均処置効果)
    バナーを見せたユーザーにおける、バナーを見せた場合と見せなかった場合の差の期待値。マーケティングにおける施策のROIを計算する際に使うことが望ましいとされています。ATEと同じくRCTにおいてバイアスなく推定できるとされています。
    ATU(Average Treatment Effect on the Untreated:対照群における平均処置効果)
    バナーを見せていないユーザーにおける、バナーを見せた場合と見せなかった場合の差の期待値。マーケティング施策を拡大させるか否かを判断する際に使うことができます。ATEと同じくRCTにおいてバイアスなく推定できるとされています。
    強い意味での無視可能性
    共変量に対し求める強い仮定のことで、「バナーを見たか見てないかのバイナリーな変数」や「ブランド名検索での訪問数」などに影響を与えるような共変量に対し、共変量自体で条件をつけて期待値をとると、「バナーを見たか見てないかのバイナリーな変数」と「潜在的なブランド名検索での訪問数」が独立するような特徴が求められています。「バナーを見たか見てないかのバイナリーな変数」が「過去のサイト訪問数(共変量)」や「特定ページへの接触(共変量)」で、配信対象を割り振られている場合は、そのバイナリーな変数は「潜在的なブランド名検索での訪問数」に影響を与えないとされています。
    マッチング
    バナーを見せられたユーザーの持つ、共変量(サイトへの訪問数や、見たページのカテゴリなど)の値と同じ(完全マッチング)、あるいは近い(距離を使ったマッチング)共変量を持っているが、バナーを見せられていない他のユーザーを「同じ人」と見なして、「バナーを見た・見てない」の与える「ブランド名検索での訪問数」への因果効果を推定します。
    傾向スコア(Propensity score)
    処置への割り当ての確率。つまり、上述の例でいうところの、バナーを見せられる確率。確率なので、当然0〜1の間の値をとります。推定には2項ロジットモデルが使われているようです。真の傾向スコアを推定できれば、ATE・ATT・ATUを計算することが可能になるそうです。この理屈はベイズの定理より導くことができるようです。詳しくは資料の”第 3 回因果推論を学ぶ会”を見てみてください。

統計的因果推論に関するRの実行例

“Rで学ぶ 傾向スコア解析入門 – 無作為割り当てが出来ない時の因果効果推定”で紹介されていたコードを以下に掲載します。

書籍情報

データ分析の力 因果関係に迫る思考法 (光文社新書)
「原因と結果」の経済学―――データから真実を見抜く思考法
岩波データサイエンス Vol.3
調査観察データの統計科学―因果推論・選択バイアス・データ融合 (シリーズ確率と情報の科学)