Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DoWhyとEconMLによる因果推論の実装

Shingo Uto
November 30, 2022

 DoWhyとEconMLによる因果推論の実装

2022年11月30日にLabBase様主催のイベントにて登壇させていただいた際の発表資料です。Pythonライブラリ"DoWhy"や"EconML"を用いた因果推論についてまとめてありますので、ご一読いただけますと幸いです。

Shingo Uto

November 30, 2022
Tweet

More Decks by Shingo Uto

Other Decks in Science

Transcript

  1. DoWhyとEconMLによる 因果推論の実装

  2. 本日のアジェンダ - 因果推論・効果検証の概要 - DoWhyの紹介 - EconMLの紹介 - DoWhy ×

    EconMLによる因果推論の実装
  3. 因果推論・効果検証の概要

  4. 相関関係と因果関係 相関関係は必ずしも因果関係を表しているわけではない 因果関係 一方が原因・もう一方が結果という関係 (例)学習時間と試験の成績 相関関係 2つの変数の傾向を表した関係 (例)アイスの売上とビールの売上 ビジネスシーンでは因果関係を知りたいことが多い ➢

    因果関係が分からないと、意思決定を評価することができない
  5. 因果関係の難しいところ これって本当の効果? 広告の例:広告を見たグループと広告を見てないグループの売上を比較 売上 広告を見た 広告を見てない 現代の広告の多くは、売上に繋がりやすい人を ターゲティングして配信されている ➢ 広告を見ていなくても売上が高い

    「すべてが広告の効果」 というわけではない
  6. バイアス(セレクション・バイアス) バイアスを取り除いたものが本当の効果 広告の例:バイアス=広告を見ていなくても生じていたであろう売上の差 売上 広告を見た 広告を見てない 広告の効果(本当の効果) 広告を見ていなくても 生じていたであろう売上の差 (セレクション・バイアス)

  7. 効果検証 バイアスを除いた効果を推定するアプローチ - 実験: 処置を「ランダム」に割り当てる - 非実験: 観察データから因果関係を考える(いわゆる”因果推論”) ➢ 効果を推定するという目的においては

    実験ができるのであれば、実験するに越したことはない ※「実験の方が簡単」ということではない
  8. 効果検証の実態 現実的には、必ずしも実験ができるわけではない コストが高い ビジネス利益 との相反 ➢ 非実験的なアプローチ(”因果推論”)によって、実験ができな い環境下でも因果関係を推定できる(かもしれない) 倫理的な問題

  9. 因果推論×機械学習 近年では、因果推論と機械学習の理論を掛け合わせて効果や効果の 異質性を捉えようとするアプローチも研究されている 効果の異質性(補足) 個体間によって異なる処置効果を表し、HTE(Heterogeneous Treatment Effects)と呼ばれる 同じ広告を見ても、その広告が売 上に与える影響は異なる 20代・女性

    50代・男性
  10. 因果推論・効果検証の概要(まとめ) - 意思決定を評価するためには因果関係を知る必要がある - 効果検証はバイアスを取り除いて効果を推定するアプローチ - 効果を推定する際は実験が理想形であるが、非実験的なアプ ローチ(”因果推論”)によって”良い”推定ができる場合もある - 近年では「因果推論×機械学習」の理論で、効果や効果の異質

    性(HTE)を捉えようとするアプローチも研究されている
  11. DoWhyの紹介

  12. DoWhyとは Microsoft社がリリースした因果推論用のPythonライブラリ 反事実モデルに基づいて因果関係を考える 反事実のイメージ 広告を見たAさんが「もしそのとき広告を見ていなかったら」という状態を考える 売上に違いがあるか 広告を見た(事実) 広告を見ていない(反事実)

  13. DoWhyでできること 因果推論に必要な一連のプロセス(4段階) 1. Model causal mechanisms(グラフを描く) 2. Identify the target

    estimand(推定に必要な条件を出力) 3. Estimate causal effect(効果を推定する) 4. Refute estimate(モデルを精査する)
  14. Model causal mechanisms モデルを作成し、グラフ(DAG: 因果ダイアグラム)を描画 DAG: 変数同士を矢印で結び、変数間の因果関係を可視化したもの DAG(イメージ) 購入意欲 売上

    広告の閲覧 購入意欲が高い人は 広告を閲覧しやすい 購入意欲が高い人は 売上が高い 広告の効果
  15. 因果グラフから因果効果を推定するための識別条件を出力 Identify the target estimand サポートしている4つの識別条件 1. Back-door criterion: バックドア基準

    2. Front-door criterion: フロントドア基準 3. Instrumental Variables: 操作変数 4. Mediation: 媒介(直接効果と間接効果の識別) ※各条件についてはAppendixを参照
  16. 識別条件に基づき適当な手法を用いて因果効果を推定 サポートしている推定手法 Estimate causal effect - 傾向スコア層別分析 - 傾向スコアマッチング -

    逆確率重み付け法(IPW) - 線形回帰 - 一般化線形モデル(GLM) - 操作変数法(IV法) - 2段階最小二乗法(TSLS) - 回帰不連続デザイン(RDD) - 2段階線形回帰 ※ほぼ全ての推定手法について 私のzennで解説しているので、ぜひご参照ください(宣伝)
  17. Refute estimate 推定の際に仮定した条件が正しいとは限らないため、推定結果の頑 健性(robustness)を確認するための作業 サポートしている手法例 Add Random Common Cause ランダムに独立な共通因子をモデルに追加

    →効果の推定値に差がなければOK! Placebo Treatment 処置をランダムな変数に置換 →効果の推定値が0に近づけばOK! X T Y 独立な共通因子 →推定に関係ない X T Y X D Y 置換したら効果は なくなるはず
  18. DoWhyによる因果推論の実装(準備) Google Colabを利用し、必要なライブラリをinstall & import Colabでグラフ(DAG)を描く際は pygraphvizのinstallが必要です!

  19. データの生成 公式ドキュメントに従ってデータを生成 推定したい処置効果 交絡因子(W) 操作変数(Z) アウトカム予測子(X) 処置変数(v)

  20. データの生成(出力結果) 何やらいろんな変数が出力される

  21. データの生成(記号の補足) 因果推論のテキストでは見慣れない記号の使われ方、、、 アウトカム予測子 操作変数 交絡因子 処置変数 アウトカム 赤: アウトカムに直接影響あり 、青:

    アウトカムに直接影響なし 、橙: アウトカム
  22. DoWhyの記号を整理 各記号の関係をグラフ(DAG)で表現するとこんな感じ W: 交絡変数 処置とアウトカムの両方に 影響を与える Z: 操作変数 処置だけに影響を与える X:

    アウトカム予測子 アウトカムだけに影響を与 える v: 処置変数 y: アウトカム
  23. Model causal mechanisms(実装) グラフ(DAG)の描画 出力結果

  24. Identify the target estimand(実装) 因果効果の推定式と、推定に必要な仮定を出力 因果効果の推定式 推定に必要な仮定

  25. Estimate causal effect(実装) 因果効果を推定(今回は傾向スコアマッチングを実行) 因果効果の推定値(因果効果の設定値は10)

  26. Refute estimate(実装) ランダムな共通原因変数を追加すると推定値に差があるかを検定 差はなさそう → 推定結果は頑健であると判断 ※DoWhyがカバーしているRefute estimate機能には、いくつか問題点もあるみたいです (参考: https://www.krsk-phs.com/entry/2018/08/22/060844

  27. DoWhyの紹介(まとめ) - 因果推論のためのPythonライブラリ - DoWhyでできること 1. Model causal mechanisms(グラフを描く) 2.

    Identify the target estimand(推定に必要な条件を出力) 3. Estimate causal effect(効果を推定する) 4. Refute estimate(モデルを精査する)
  28. EconMLの紹介

  29. EconMLとは Microsoft社がリリースした「計量経済学×機械学習」のアプロー チで処置効果を推定するためのPythonライブラリ。 「計量経済学×機械学習」アプローチの利点 効果の異質性(HTE)を捉えることが可能→よりよいネクストアクションに繋がる 「20代・女性」のセグメントに 広告を配信すると効果的 大 ← 広告効果

    → 小 20代・女性 50代・男性
  30. 大きく3つ 1. Estimation Methods under Unconfoundedness 2. (Estimation Methods with

    Instruments) 3. (Estimation Methods for Dynamic Treatment Regimes) EconMLでできること ※本日、紹介するのは(1)の推定手法です。(2)と(3)の概要はAppendixを参照してください。
  31. Estimation Methods under Unconfoundedness Uncoufoundedness(無交絡性)という条件下における推定手法 Uncoufoundednessとは 共変量Xで条件つけたとき、潜在的な アウトカム(Y 1 ,

    Y 0 )と処置の割り当てT は独立であるという仮定 (Y 1 , Y 0 ) ⊥ T | X サポートしている4つの推定手法 1. Double Machine Learning 2. Doubly Robust Learning 3. (Forest Based Estimators) 4. Meta-Learners ※処置を表す記号がDoWhy(v)とEconML(T)で異なるので要注意です ※Uncoufoundedness(無交絡性)は、conditional exchangeability(条件付き交換可能性)とも呼ばれます →条件付けに必要な共変量Xがすべて観測できている場合には効果的
  32. Double Machine Learningの紹介 2段階に分けて効果を推定 Double Machine Learningのイメージ Y (アウトカム) X,

    W (共変量) T (処置) 1段階目(予測) 2段階目(OLS) XにおけるCATE(θ(X))を考える X, W T Y X, W T θ(X) Yの残差 Tの残差 = θ(X) ×
  33. Doubly Robust Learningの紹介 「回帰モデル×傾向スコア」でRobustに推定 Doubly Robust Learningのイメージ Y (アウトカム) X,

    W (共変量) T (処置) XにおけるCATE(θ(X))を考える θ(X) 予測モデルY(T=t) θ t (X)= Y(T=t) - Y(T=0) X, W T Y X, W T 回帰モデルg t (X,W) 傾向スコアp t (X,W) ※どちらかのモデルを正しく設定できればバイアスな く推定できる→二重(Double)で頑健(Robust)
  34. Meta-Learnerのイメージ(処置が1つのケース) Y (アウトカム) X, W (共変量) T = 0 or

    1 (処置) XにおけるCATE(θ(X))を考える θ(X) Meta-Learnerの紹介 離散的な処置(処置A,B,C,...)に対するCATEを推定する手法 Yの予測モデル f(T=t, X, W) Yの予測値 (T=0) Yの予測値 (T=1) θ(X)
  35. EconMLによる因果推論の実装(設定) とある健康食品会社にて、ダイエット商品を販促するために広告を 打った。その広告の効果を推定したい。 ダイエットへの意識の高さ (motivation) 広告を見たかどうか (ad_impression) 売上 (revenue) 手元にあるデータ

    広告の効果 購入意欲が高そうな 人にターゲティング 配信されている ダイエットへの意識 が高い人ほど商品を 購入する
  36. EconMLによる因果推論の実装(準備) Google Colabを利用し、必要なライブラリをinstall & import

  37. データを生成 「分析者は生成ロジックを知らない」という設定で話を進めます

  38. 推定したい効果 ダイエットへの意識の高さの度合いによって広告効果が異なる ダイエットへの 意識の高さ 広告効果 0未満 1,000円 0以上0.5未満 2,000円 0.5以上

    3,000円
  39. T-Learnerによる推定 機械学習モデルにはRandom Forest(回帰)を利用 出力結果

  40. EconMLの紹介(まとめ) - CATEを推定するためのPythonライブラリ - 大きく3つの推定手法をサポート 1. Estimation Methods under Unconfoundedness

    2. Estimation Methods with Instruments 3. Estimation Methods for Dynamic Treatment Regimes
  41. DoWhy × EconML

  42. DoWhyによる因果推論のプロセス プロセスは4段階(再掲) 1. Model causal mechanisms(グラフを描く) 2. Identify the target

    estimand(推定に必要な条件を出力) 3. Estimate causal effect(効果を推定する) 4. Refute estimate(モデルを精査する)
  43. DoWhy×EconMLによる因果推論のプロセス ベースはDoWhy単体と変わらず、プロセス(3)をEconMLが担当 1. Model causal mechanisms(グラフを描く) 2. Identify the target

    estimand(推定に必要な条件を出力) 3. Estimate causal effect(効果を推定する) 4. Refute estimate(モデルを精査する) ここをEconMLが担当
  44. DoWhy×EconMLによる因果推論の実装(準備) Google Colabを利用し、必要なライブラリをinstall & import

  45. DoWhy×EconMLによる因果推論の実装(設定) とある健康食品会社にて、ダイエット商品を販促するために広告を 打った。その広告の効果を推定したい(先ほどと同じ) ダイエットへの意識の高さ (motivation) 広告を見たかどうか (ad_impression) 売上 (revenue) 手元にあるデータ

    広告の効果 購入意欲が高そうな 人にターゲティング 配信されている ダイエットへの意識 が高い人ほど商品を 購入する
  46. データを生成(再掲) 「分析者は生成ロジックを知らない」という設定で話を進めます

  47. 推定したい効果(再掲) ダイエットへの意識の高さの度合いによって広告効果が異なる ダイエットへの 意識の高さ 広告効果 0未満 1,000円 0以上0.5未満 2,000円 0.5以上

    3,000円
  48. Model causal mechanisms グラフを描画 出力結果

  49. Identify the target estimand 因果グラフから因果効果を推定するための識別条件を出力

  50. Estimate causal effect(1/2) EconMLの出番。T-Learnerで効果を推定。 推定に利用する機械学習モデルは Random Forest(回帰)

  51. Estimate causal effect(2/2) 推定結果を可視化。 出力結果

  52. Refute estimate ランダムな共通原因変数を追加すると推定値に差があるかを検定 差はなさそう → 推定結果は頑健であると判断

  53. DoWhy × EconML(まとめ) - ベースのプロセスはDoWhyと同じ 1. Model causal mechanisms(グラフを描く) 2.

    Identify the target estimand(推定に必要な条件を出力) 3. Estimate causal effect(効果を推定する) 4. Refute estimate(モデルを精査する) - プロセス(3)をEconMLが担当
  54. Appendix

  55. バックドアパス 上流側にある処置XとアウトカムYの両方に影響を与える流れ Z1 X Y Z2 Z1 X Y Z2

    Z1 X Y Z2 (X→Yの)バックドアパス (X→Yの)バックドアパスではない
  56. バックドアパスをブロックする 上流側にある処置XとアウトカムYの両方に影響を与える道を固定 Z1 X Y Z2 Z1 X Y Z2

    Z1 X Y Z2 (X→Yの)バックドアパスをブロックするには, Z1かZ2(あるいは両方)を固定すればOK
  57. バックドア基準 集合Zが(X,Y)に対して、次の2つの条件を満たせば良い 1. Zに含まれる全てのノードがXの子孫ではない 2. XとYの間でXに向かう有向道すべてをZがブロックする X Y Z X

    Y Z X Y Z バックドア基準を満たす バックドア基準を満たさない
  58. フロントドア基準 集合Zが(X,Y)について次の3つの条件を満たせば良い 1. ZはX→Yの有向道をすべてブロックする 2. XからZへのバックドアパスは存在しない 3. ZからYへのすべてのバックドアはXによるブロックされている 観測されない交絡因子 X

    Y 観測されない交絡因子 X Z Y バックドア基準は満たさない 集合Zが観測できればフロントドア基準を満たす
  59. 媒介(概要) 直接効果と間接効果を考える 直接効果 ある変数XがアウトカムYに直接与え る影響 M T Y 間接効果 ある変数Xが、媒介変数Mを通じてア

    ウトカムYに与える影響 M T Y
  60. 媒介(識別条件) 共変量の集合Wが以下の4つの条件を満たす 1. Wの要素にはTの子孫が1つもない 2. WはMからYへのバックドアパスをすべてブロックする 3. TからMへの特定のWにおける効果は識別可能 4. {T,M}からYへの特定のWにおける同時効果は識別可能

  61. Estimation Methods with Instruments 操作変数(IV: Instrument Variable)を用いた推定手法 操作変数とは 処置Tとは相関があり、 誤差項uとは無相関な変数Z

    Y=a+bT+u(Cov(T, u)≠0)において Cov(Z, T)≠0, Cov(Z, u)=0 サポートしている3つの推定手法 1. Deep Instrumental Variables 2. Sieve 2SLS Instrumental Variable Estimation 3. Orthogonal instrumental variables →観測できない交絡因子が存在している場合に利用 ※上記の操作変数の説明はあくまでも内生変数と操作変数がひとつずつの場合です。一般的な条件については「計 量経済学(末石、2015)」をご参照ください。
  62. Estimation Methods for Dynamic Treatment Regimes adaptiveな動的ポリシーに基づいて、処置が時間の経過とともに割 り当てられる際に、処置効果を推定する手法 →すべての動的な交絡・コントロール変数が観測できているときに利用可能 ここが凄い

    古典的な統計学的アプローチでは - 高次元すぎて適応できない - 処置効果やアウトカムを十分にモデル 化できない というシーンでも有効となり得る サポートしている推定手法 Dynamic Double Machine Learning
  63. 参考文献(テキスト) - 岩崎(2015)「統計的因果推論」朝倉書店 - 小川(2021)「Pythonによる因果分析」マイナビ出版 - Judea Pearl他(2019)「入門統計的因果推論」朝倉書店 - 末石(2015)「計量経済学」日本評論社

    - 星野(2009)「調査観察データの統計科学」岩波書店 - 安井(2020)「効果検証入門」ホクソエム社
  64. 参考文献(Web) - 「DoWhy公式ドキュメント」https://www.pywhy.org/dowhy/v0.8/ - 「EconML公式ドキュメント」https://econml.azurewebsites.net/ - Hayashi takehiko「”因果推論駅”の奥の方を探訪しながら考える」 https://speakerdeck.com/takehikoihayashi/wai-de-nidofalseyounaxi-gariwochi-tute irufalseka

    - krsk「観察データを用いた因果推論で生じるバイアスの程度を考える」 https://www.krsk-phs.com/entry/sensitivity_analysis - krsk「統計的因果推論のためのPythonライブラリDoWhyについて解説」 https://www.krsk-phs.com/entry/2018/08/22/060844 - S¨oren R. K¨unzel他「Meta-learners for Estimating Heterogeneous Treatment Effects using Machine Learning」https://arxiv.org/abs/1706.03461 - Victor Chernozhukov他「Double/Debiased Machine Learning for Treatment and Structural Parameters」https://arxiv.org/abs/1608.00060 ※2022年11月27日時点
  65. ご清聴ありがとうございました