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

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

うとしん
November 30, 2022

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

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

参考リンク(自身のブログ)

- PythonによるT-Learnerの実装
https://zenn.dev/s1ok69oo/articles/4a36fee0297234
- Pythonライブラリ"DoWhy"を用いた因果推論
https://speakerdeck.com/s1ok69oo/pythonraiburari-dowhy-woyong-itayin-guo-tui-lun
- 機械学習で因果推論
https://zenn.dev/s1ok69oo/articles/1eeebe75842a50

うとしん

November 30, 2022
Tweet

More Decks by うとしん

Other Decks in Science

Transcript

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

    View Slide

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

    View Slide

  3. 因果推論・効果検証の概要

    View Slide

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

    View Slide

  5. 因果関係の難しいところ
    これって本当の効果?
    広告の例:広告を見たグループと広告を見てないグループの売上を比較
    売上
    広告を見た 広告を見てない
    現代の広告の多くは、売上に繋がりやすい人を
    ターゲティングして配信されている
    ➢ 広告を見ていなくても売上が高い
    「すべてが広告の効果」
    というわけではない

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  11. DoWhyの紹介

    View Slide

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

    View Slide

  13. DoWhyでできること
    因果推論に必要な一連のプロセス(4段階)
    1. Model causal mechanisms(グラフを描く)
    2. Identify the target estimand(推定に必要な条件を出力)
    3. Estimate causal effect(効果を推定する)
    4. Refute estimate(モデルを精査する)

    View Slide

  14. Model causal mechanisms
    モデルを作成し、グラフ(DAG: 因果ダイアグラム)を描画
    DAG: 変数同士を矢印で結び、変数間の因果関係を可視化したもの
    DAG(イメージ)
    購入意欲
    売上
    広告の閲覧
    購入意欲が高い人は
    広告を閲覧しやすい
    購入意欲が高い人は
    売上が高い
    広告の効果

    View Slide

  15. 因果グラフから因果効果を推定するための識別条件を出力
    Identify the target estimand
    サポートしている4つの識別条件
    1. Back-door criterion: バックドア基準
    2. Front-door criterion: フロントドア基準
    3. Instrumental Variables: 操作変数
    4. Mediation: 媒介(直接効果と間接効果の識別)
    ※各条件についてはAppendixを参照

    View Slide

  16. 識別条件に基づき適当な手法を用いて因果効果を推定
    サポートしている推定手法
    Estimate causal effect
    - 傾向スコア層別分析
    - 傾向スコアマッチング
    - 逆確率重み付け法(IPW)
    - 線形回帰
    - 一般化線形モデル(GLM)
    - 操作変数法(IV法)
    - 2段階最小二乗法(TSLS)
    - 回帰不連続デザイン(RDD)
    - 2段階線形回帰
    ※ほぼ全ての推定手法について 私のzennで解説しているので、ぜひご参照ください(宣伝)

    View Slide

  17. Refute estimate
    推定の際に仮定した条件が正しいとは限らないため、推定結果の頑
    健性(robustness)を確認するための作業
    サポートしている手法例
    Add Random Common Cause
    ランダムに独立な共通因子をモデルに追加
    →効果の推定値に差がなければOK!
    Placebo Treatment
    処置をランダムな変数に置換
    →効果の推定値が0に近づけばOK!
    X
    T Y
    独立な共通因子
    →推定に関係ない
    X
    T Y
    X
    D Y
    置換したら効果は
    なくなるはず

    View Slide

  18. DoWhyによる因果推論の実装(準備)
    Google Colabを利用し、必要なライブラリをinstall & import
    Colabでグラフ(DAG)を描く際は
    pygraphvizのinstallが必要です!

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  23. Model causal mechanisms(実装)
    グラフ(DAG)の描画
    出力結果

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  27. DoWhyの紹介(まとめ)
    - 因果推論のためのPythonライブラリ
    - DoWhyでできること
    1. Model causal mechanisms(グラフを描く)
    2. Identify the target estimand(推定に必要な条件を出力)
    3. Estimate causal effect(効果を推定する)
    4. Refute estimate(モデルを精査する)

    View Slide

  28. EconMLの紹介

    View Slide

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

    View Slide

  30. 大きく3つ
    1. Estimation Methods under Unconfoundedness
    2. (Estimation Methods with Instruments)
    3. (Estimation Methods for Dynamic Treatment Regimes)
    EconMLでできること
    ※本日、紹介するのは(1)の推定手法です。(2)と(3)の概要はAppendixを参照してください。

    View Slide

  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がすべて観測できている場合には効果的

    View Slide

  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) ×

    View Slide

  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)

    View Slide

  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)

    View Slide

  35. EconMLによる因果推論の実装(設定)
    とある健康食品会社にて、ダイエット商品を販促するために広告を
    打った。その広告の効果を推定したい。
    ダイエットへの意識の高さ
    (motivation)
    広告を見たかどうか
    (ad_impression)
    売上
    (revenue)
    手元にあるデータ
    広告の効果
    購入意欲が高そうな
    人にターゲティング
    配信されている
    ダイエットへの意識
    が高い人ほど商品を
    購入する

    View Slide

  36. EconMLによる因果推論の実装(準備)
    Google Colabを利用し、必要なライブラリをinstall & import

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  41. DoWhy × EconML

    View Slide

  42. DoWhyによる因果推論のプロセス
    プロセスは4段階(再掲)
    1. Model causal mechanisms(グラフを描く)
    2. Identify the target estimand(推定に必要な条件を出力)
    3. Estimate causal effect(効果を推定する)
    4. Refute estimate(モデルを精査する)

    View Slide

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

    View Slide

  44. DoWhy×EconMLによる因果推論の実装(準備)
    Google Colabを利用し、必要なライブラリをinstall & import

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  48. Model causal mechanisms
    グラフを描画
    出力結果

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  53. DoWhy × EconML(まとめ)
    - ベースのプロセスはDoWhyと同じ
    1. Model causal mechanisms(グラフを描く)
    2. Identify the target estimand(推定に必要な条件を出力)
    3. Estimate causal effect(効果を推定する)
    4. Refute estimate(モデルを精査する)
    - プロセス(3)をEconMLが担当

    View Slide

  54. Appendix

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  59. 媒介(概要)
    直接効果と間接効果を考える
    直接効果
    ある変数XがアウトカムYに直接与え
    る影響
    M
    T Y
    間接効果
    ある変数Xが、媒介変数Mを通じてア
    ウトカムYに与える影響
    M
    T Y

    View Slide

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

    View Slide

  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)」をご参照ください。

    View Slide

  62. Estimation Methods for Dynamic Treatment Regimes
    adaptiveな動的ポリシーに基づいて、処置が時間の経過とともに割
    り当てられる際に、処置効果を推定する手法
    →すべての動的な交絡・コントロール変数が観測できているときに利用可能
    ここが凄い
    古典的な統計学的アプローチでは
    - 高次元すぎて適応できない
    - 処置効果やアウトカムを十分にモデル
    化できない
    というシーンでも有効となり得る
    サポートしている推定手法
    Dynamic Double Machine Learning

    View Slide

  63. 参考文献(テキスト)
    - 岩崎(2015)「統計的因果推論」朝倉書店
    - 小川(2021)「Pythonによる因果分析」マイナビ出版
    - Judea Pearl他(2019)「入門統計的因果推論」朝倉書店
    - 末石(2015)「計量経済学」日本評論社
    - 星野(2009)「調査観察データの統計科学」岩波書店
    - 安井(2020)「効果検証入門」ホクソエム社

    View Slide

  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日時点

    View Slide

  65. ご清聴ありがとうございました

    View Slide