Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Synthetic Controlを利用した因果推論
Search
akki-
May 30, 2023
Education
0
1.3k
Synthetic Controlを利用した因果推論
社内の勉強会で紹介したSynthetic Controlを利用した因果推論についての資料
akki-
May 30, 2023
Tweet
Share
More Decks by akki-
See All by akki-
傾向スコアの重み付け手法
akidukin
0
1.3k
Other Decks in Education
See All in Education
Repaso electricidade e electrónica
irocho
0
190
HCL Domino 14.0 AutoUpdate を試してみた
harunakano
0
1.7k
H5P-työkalut
matleenalaakso
4
36k
情報処理工学問題集 /infoeng_practices
kfujita
0
120
Canva
matleenalaakso
0
430
Web 2.0 Patterns and Technologies - Lecture 8 - Web Technologies (1019888BNR)
signer
PRO
0
2.4k
子どものためのプログラミング道場『CoderDojo』〜法人提携例〜 / Partnership with CoderDojo Japan
coderdojojapan
4
14k
Tableau トレーニング【株式会社ニジボックス】
nbkouhou
0
19k
Qualtricsで相互作用実験する「SMARTRIQS」入門編
kscscr
0
320
week15@tcue2024
nonxxxizm
0
570
ACT FAST 20240830
japanstrokeassociation
0
320
20240810_ワンオペ社内勉強会のノウハウ
ponponmikankan
2
880
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
42
9.2k
Making Projects Easy
brettharned
115
5.9k
Building Adaptive Systems
keathley
38
2.3k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.8k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
The Invisible Side of Design
smashingmag
298
50k
Transcript
© GO Inc. Synthetic Controlによる 因果推論 2023.05.30 AI技術開発部 分析グループ /
秋月 達樹 GO株式会社
© GO Inc. 2 自己紹介 プロフィール写真 GO株式会社 AI技術開発部 分析グループ /
秋月 達樹 工場勤務から海外駐在を経験したのち、データ分析の受託企業や広告事業に おいてデータ分析や機械学習エンジニアリングを担当。 2021年4月にGO(旧:Mobility Technologies)に中途入社し、タクシーアプ リ『GO』のユーザー、乗務員に関する分析や施策効果の検証、経営上の意 思決定に関与する分析業務を担当。 ------------------------------------------------ 週に1回サッカーしています。 ELLEGARDENが新アルバム出したのが嬉しくて泣いています。 この時期は末端冷え症なのでキーボードが上手く打てなくて困っています。 (解消法をご存知方は教えてください。) @Akidukin
Index © GO Inc. Synthetic Control による因果推論 1 – 因果推論のモチベーション
2 – パネルデータに対する因果推論 3 – Synthetic Control による因果推論 4 – Synthetic Control 実践 5 – まとめ
© GO Inc. 因果推論のモチベーション 01
© GO Inc. • ビジネス上の意思決定において、特定の変数(𝑊)が及ぼすアウトカム(𝑌)への影響を定量的に把握したい 場面は多く存在する ◦ 例えば、売上(𝑌) に対して広告出稿(𝑊)を行う事がどれだけ影響(τ)を与えているのか、仮に広告出稿をしなかっ た場合、売上はどれだけ毀損するのかしないのか
• 無作為実験(ABテスト)下においては単純比較をするだけで影響を計測することは出来るが現実的に実施 自体が不可能な場合が存在する 因果推論が必要な場面 Y : 売上 𝑊 [0,1] : 広告出稿 𝑌 𝑊 無作為実験下においては 𝑌! 0 , 𝑌! 1 ⫫𝑊! が成立するため 単純比較をする事で効果を推定する事ができる 介入効果 全ての施策において無作為実験(ABテスト)を実施することは 現実的に不可能な場合が存在する τ = Ε 𝑌! 𝑊! = 1 − Ε 𝑌! 𝑊! = 0
© GO Inc. • 無作為実験が行えない場合、介入の有無や増減に関しては何かしらの交絡が発生する • 交絡が発生している状況下において単純比較を実施すると、推定される効果にバイアスが生じてしまい、 正しい推定が出来なくなってしまう 単純比較によるバイアス 𝑌
𝑊 𝑋 交絡が発生している 𝑌 𝑋 𝑊 0 𝑊(1) 𝑋の値により𝑊が決まっている場合 𝑋と𝑊のどちらの影響か切り分けができず 単純比較によりバイアスが生じる 𝐸[𝑌" |𝑊 = 1] 𝐸[𝑌" |𝑊 = 0]
© GO Inc. • 交絡が発生している場合、共変量をすべて調整することが出来れば真値を推定できる • しかし、すべてを調整する事は現実的に不可能なため、観測できる範囲内で調整を行い交絡によるバイ アスの影響を少なくする必要がある 共変量の調整によりバイアスの影響を小さくする 発生している交絡を𝑋で調整(条件付け)
することでバイアスを少なくすることが出来る 𝑃 𝑌 𝑇 = 1, 𝑋 = 𝑃(𝑌|𝑋) 𝑌 𝑋 𝑊 0 𝑊(1) 𝑌 𝑊 𝑋
© GO Inc. • 因果効果を機械学習の変数重要度で代用した場合、得られる結果は説明変数間の関係を考慮していない • 交絡が発生している状況下において、説明変数間の関係を考慮しない場合、間違った推定をしてしまう 場合が多く注意が必要 機械学習による代用は難しい T
X1 X2 X3 Y 機械学習のイメージ 説明変数間の関係を考慮しない T X1 X2 X3 Y 因果推論のイメージ 説明変数間の関係を考慮する
© GO Inc. パネルデータに対する因果 推論 02
© GO Inc. • 前章で紹介した介入効果の定量把握を行いたい場面は、パネルデータに関しても同様に存在する ◦ 例えば、テレビCM(𝑊)が与える新規登録ユーザー数(𝑌)への影響(τ) • パネルデータに対する因果推論は、トレンドによる影響なのか介入による影響なのか切り分けが難しい パネルデータに対する因果推論
𝑌 新規登録 ユーザー数 𝑇 時刻 介入点 介入後に𝑌は上昇しているように見えるが上昇の要因が トレンドなのか、介入なのか影響の切り分けが難しい 𝐸[𝑌" |𝑊 = 1] 𝐸[𝑌" |𝑊 = 0]
© GO Inc. • 単純に前後比較を行なった場合、介入効果を正しく推定する事ができず間違った推定をしてしまう事が 多い • トレンドによる影響を考慮せずに推定するため、過小に(または過大に)評価してしまう為である 前後比較によるバイアスの例 𝑌
新規登録 ユーザー数 𝑇 時刻 介入点 𝑌# (𝑤 = 0) 𝑌# 𝑤 = 0 介入なし 介入あり 𝑌# (𝑤 = 1) τ = 𝑌# 𝑤 = 1 − 𝑌# (𝑤 = 0) 単純比較により、過大に介入効果を見積もってしまう 𝑌" 𝑤 = 1 − 𝑌" 𝑤 = 0 < 𝑌" 𝑤 = 1 − 𝑌" 𝑤 = 1 τ = 𝑌# 𝑤 = 1 − 𝑌# (𝑤 = 1) 本来推定したい 前後比較
© GO Inc. • こうした場合に広く一般的に利用される手法としてDifference-In-Differences(DID)という手法が存在 する • DIDは介入グループと非介入グループの前後の比較を行うことでトレンドによる影響を少なくする事がで きる Difference-In-Differencesによる因果効果の推定
𝑌 新規登録 ユーザー数 𝑇 時刻 介入点 𝑊 0 𝑊(1) τ454 𝑌# (𝑤 = 0) 𝑌$ (𝑤 = 0) 𝑌$ (𝑤 = 1) 𝑌# (𝑤 = 1) τ454 = 𝐸 𝑌6 1 𝐷 = 1 − 𝐸 𝑌6 0 𝐷 = 1 − 𝐸 𝑌7 1 𝐷 = 0 − 𝐸 𝑌6 0 𝐷 = 0 介入グループの介入前後の比較 非介入グループの介入前後の比較 非介入グループのトレンドを介入グループのトレンドと見なし 比較を行うことで介入効果を推定することが出来る
© GO Inc. • DIDを利用する場合、介入グループと非介入グループのトレンドは大きく変わらないという非常に強い仮 定を置く必要がある(並行トレンド仮定) • 介入グループと非介入グループでトレンドが大きく変わっている場合、得られた推定結果を支持するこ とは難しい DIDを利用する上での仮定
𝑌 新規登録 ユーザー数 𝑇 時刻 介入点 𝑊 0 𝑊(1) 𝑌# (𝑤 = 0) 𝑌$ (𝑤 = 0) 𝑌$ (𝑤 = 1) 𝑌# (𝑤 = 1) τ454 並行トレンド仮定が支持できない場合 介入グループのトレンドとして代用できないため 得られた推定量はバイアスが発生している
© GO Inc. Synthetic Controlによる 因果推論 03
© GO Inc. • 介入グループに対して、非介入グループに重みづけを行い比較を行う手法である • 非介入グループに重みづけを行うことで「もし介入を受けていなかったら、介入群に何が起こっていた か」を表現する Synthetic Controlとは
𝑇 時刻 介入点 𝑊 0 𝑊(1) 𝑌 新規登録 ユーザー数 Unit(1) Unit(2) Unit(3) Unit(4) 𝑇 時刻 介入点 𝑌 新規登録 ユーザー数 Synthetic Control
© GO Inc. • 介入グループに一致するように重み付けを行うため、並行トレンドを仮定できない場合でもバイアスの 影響を受けづらい • また、時間と共に変化する交絡因子の影響を説明する事ができる Synthetic Controlを利用する事の利点
𝑇 時刻 介入点 𝑌 新規登録 ユーザー数 unit 𝑇 時刻 𝑊 = Synthetic Control 並行トレンドを仮定できない場合でもバイアスを受けづらい 時間と共に変化する交絡因子の影響を説明できる 𝑊 0 𝑊(1)
© GO Inc. • Synthetic Controlの介入効果の推定量は固定効果モデルの最適化問題を解くことで推定できる ◦ ユニットの重み𝑊! #$と時間固定効果β% を考慮した推定モデルである事がわかる
• 重みに加重平均を利用することで、ロバストな推定結果を得る事が出来る ◦ 重みに制約を付けなかった場合、存在し得ない数値が観察されてしまう恐れがある Synthetic Controlの内部をもう少し理解する ユニット毎に設定する重み 時間固定効果 + τ89 = 𝑎𝑟𝑔𝑚𝑖𝑛:,; {Σ<=6 > Σ?=6 @ (𝑌<? − β? − τ𝐷<? )A 7 𝑊< 89} unit1 unit2 unit3 介入グループ 重みを外挿してしまうと ロバストな結果が得られない unit1 unit2 unit3 介入グループ Unit内部で補完するよう 制限を付ける必要がある Synthetic Control の 固定効果モデル
© GO Inc. • 非介入グループとSynthetic Controlの間に距離がゼロになる重みが存在する事が大前提となる • また、観測不可能な変数同士の距離もゼロになっている事が必要 ◦ 要するに介入グループと似たような傾向を持つ非介入ユニットが存在しないとダメ
Synthetic Controlを利用する上での注意点 𝑇 時刻 介入点 𝑊 0 𝑊(1) 𝑌 新規登録 ユーザー数 トレンドの傾向が一致する必要はないが 非介入グループの内部で加重平均を利用しているため ある程度似たような集団を採用する必要がある ※…比較対象とできるユニット数が少ない時
© GO Inc. Synthetic Control実践 04
© GO Inc. • Synthetic Controlを実践するために1988年11月に実施された「カリフォルニア州へのタバコ税及び健 康保護法」が導入された後のタバコの販売数についてのデータを用意 • たばこ税が1箱あたり25セント引き上げられ、他のタバコ製品にも同額が課税された ◦
この政策は一般的にProposition 99として知られている 検証用にダミーデータを生成 1970 1971 1972 1973 1974 89.8 95.4 101.1 102.9 108.2 100.3 104.1 103.9 108.0 109.7 123.0 121.0 123.5 124.4 126.7 124.8 125.5 134.3 137.9 132.8 Year Alabama Arkansas California Colorado … … … … … … … … … … … データセット 参考 - https://github.com/jehangiramjad/tslib/blob/master/tests/testdata/prop99.csv
© GO Inc. • 非介入グループのデータを利用し、介入グループに近似する重みを学習する • 学習した重みを利用し、介入グループに近似するデータ(合成コントロール)を生成する Synthetic Controlによる因果効果の推定 from
scipy.optimize import fmin_slsqp import numpy as np from toolz import reduce, partial ## 損失関数の定義 def loss_w(W, X, y) -> float: return np.sqrt(np.mean((y - X.dot(W))**2)) ## weightの推定 def get_w(X, y): w_start = [1/X.shape[1]]*X.shape[1] weights = fmin_slsqp(partial(loss_w, X=X, y=y), np.array(w_start), f_eqcons=lambda x: np.sum(x) - 1, bounds=[(0.0, 1.0)]*len(w_start), disp=False) return weights ## 学習や合成コントロールの作成 tar_ind = df_sc.variable.astype('int') < 1988 y = df_sc.loc[tar_ind,'California'].values X = df_sc.loc[tar_ind,tar_cols].values calif_weights = get_w(X, y).reshape(-1,1) synthetic_calif = df_sc[tar_cols].values.dot(calif_weights) 介入前の期間で 重み付けする
© GO Inc. • 生成したデータとの差分を介入効果として推定する事ができる • Proposition99 によりタバコの売上が25パック減少した事が分かり、税の導入により個人のタバコの消 費が抑えられる事が分かった 推定結果と解釈
τ!" = 𝑌 #" $ − 𝑌 #" % plt.figure(figsize=(12,8)) plt.plot(df_sc.variable , df_sc['California'].values - synthetic_calif.ravel() , color = 'blue’ , label = 'Treatment Effect') plt.vlines(x=18 ,ymin=-30 ,ymax=5 ,color='gray’ ,label='treated') plt.hlines(y=0, xmin=1, xmax=31, lw=2) plt.legend() plt.title('prop 99 cigaretto sales') plt.grid('--',color = 'gray', alpha = 0.5) plt.xticks(rotation=90) plt.show()
© GO Inc. まとめ 05
© GO Inc. • 介入効果を推定する際に単純比較するとバイアスが含まれるケースについて紹介しました • パネルデータに対して介入効果を推定する際の注意点とDIDについての概要を紹介しました • Synthetic Controlの概要と利点及び注意点について紹介しました。
• Synthetic Controlの利用例をpythonのコードとともに紹介しました。 まとめ
文章・画像等の内容の無断転載及び複製等の行為はご遠慮ください。 © GO Inc.