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

LiNGAM Pythonパッケージでできること

Shohei SHIMIZU
November 04, 2021

LiNGAM Pythonパッケージでできること

第1回 因果探索ユーザー会 (仮)

Shohei SHIMIZU

November 04, 2021
Tweet

More Decks by Shohei SHIMIZU

Other Decks in Science

Transcript

  1. LiNGAM Pythonパッケージでできること 清水昌平 滋賀大学データサイエンス学系 理化学研究所革新知能統合研究センター 2021年11月13日

  2. LiNGAM Python package • https://github.com/cdt15/lingam 2 ぜひstarを! 池内さん SCREEN AS

  3. Documentation • https://lingam.readthedocs.io/en/latest/# 3

  4. LiNGAMモデル (Shimizu, Hyvarinen, Hoyer & Kerminen, 2006) • Linear Non-Gaussian

    Acyclic Model (線形非ガウス非巡回モデル): – 𝑘 𝑖 : 𝑥! の因果的(半)順序 (topological order) – 誤差変数 𝑒! は • 非ガウス連続 • 互いに独立 • データ𝑋から係数𝑏!" と順序𝑘 𝑖 が識別可能(一意に推定可能) • https://lingam.readthedocs.io/en/latest/tutorial/lingam.html 4 or 𝑥# 𝑥$ 𝑥% 因果グラフ 𝑥' = # ( ) *((') 𝑏') 𝑥) + 𝑒) 𝒙 = 𝐵𝒙 + 𝒆 𝑒% 𝑒# 𝑒$ 𝑏$# 𝑏$% 𝑏#%
  5. 統計的信頼性評価 • 有向道や有向辺のブートストラップ確率 • 例えば、閾値0.05を越えるものを解釈 5 x3 x1 … …

    x3 x1 x0 x3 x1 x2 x3 x1 99% 96% 総合効果: 20.9 10% https://lingam.readthedocs.io/en/latest/tutorial/bootstrap.html
  6. モデル仮定の評価 • 分析前 – Gaussianity test – ヒストグラム • 連続変数?

    – 多重共線性 – 領域知識 • 分析後 – 誤差(残差)の独立性評価 • 例えば、HSIC (Gretton et al., 2005) – マルコフバウンダリーによる予測の良さで評価 (Biza et al., 2020) (未実装) – 複数のデータセットでの結果を比較 – 領域知識による評価 6 Wikipediaより
  7. DirectLiNGAMアルゴリズム https://lingam.readthedocs.io/en/latest/tutorial/lingam.html (Shimizu et al., 2011) • 因果的順序𝑘(𝑖)の上から下へ順に推定 – 1番上を見つけて、残差を計算

    – 残差もLiNGAMモデル: 因果関係は変わらない • p>nの場合への拡張 (Wang & Drton, 2020) – https://github.com/ysamwang/highDNG 7 ú ú ú û ù ê ê ê ë é + ú ú ú û ù ê ê ê ë é ú ú ú û ù ê ê ê ë é - = ú ú ú û ù ê ê ê ë é 2 1 3 2 1 3 2 1 3 0 3 . 1 0 0 0 5 . 1 0 0 0 e e e x x x x x x 0 0 0 0 0 0 0 0 ú û ù ê ë é + ú û ù ê ë é ú û ù ê ë é - = ú û ù ê ë é 2 1 ) 3 ( 2 ) 3 ( 1 ) 3 ( 2 ) 3 ( 1 0 3 . 1 0 0 e e r r r r 0 0 ) 3 ( 2 r ) 3 ( 1 r x3 x1 x2 0
  8. • 𝑥! は最初(𝑘 𝑥! = 1): どの変数の子にもならない • どの回帰残差とも独立な変数が最初の変数 因果的順序が最初の変数の同定

    8 定理1: 「 は その残差 のどれとも独立 (𝑖は𝑗以外全部)」⟺ 「𝑥) は最初」 ( ) j j j i i j i x x x x x r ) var( ) cov( , - = j x x3 x1 x2 x3 x1 x2
  9. 背景知識の利用 https://lingam.readthedocs.io/en/latest/tutorial/pk_direct.html • 因果的(半)順序の推定における利用 – 例: 背景知識が 𝑘 𝑥' <

    𝑘 𝑥) なら𝑥' が選ばれるまで𝑥) は選ばない • 枝刈りにおける利用 – 𝑘 𝑥' < 𝑘 𝑥) なら 𝑥) を𝑥' の親候補にしない 9 å å + - の親候補 の親候補 i i x j ij ij x j j ij i ols b b x b x : 2 : ) ( ˆ l ) 3 ( 2 r ) 3 ( 1 r x3 x1 x2
  10. 複数データセット1 (Ramsey et al. 2011, Shimizu, 2012) • c個の集団に対するモデル: –

    共通の生成順序:分布とパス係数は違ってもよい • 類似性を利用して精度向上 • https://lingam.readthedocs.io/en/latest/tutorial/multiple_dataset.html ( ) c g e x b x g i i k j k g j g ij g i ,..., 1 ) ( ) ( ) ( ) ( ) ( ) ( = + = å < x3 x1 x2 e1 e2 e3 4 -3 2 x3 x1 x2 e1 e2 e3 -0.5 5 集団1 集団2 10
  11. 複数データセット2: 経時データ • 同じ人から継続してデータを取っている複数データセット (対応のあるデータ) (Kadowaki et al., 2013) •

    https://lingam.readthedocs.io/en/latest/tutorial/longitudinal.html 11
  12. 機械学習モデルの予測メカニズムの解析 (Blobaum & Shimizu, 2017) • 介入して説明変数X1の値を変えると機械学習モデルの予測' 𝑌はどう変わる? – X1を変えればX2,

    X3, X4も変わる – X1だけ違う値を入力してもダメ 12 𝑥! 𝑥" ' 𝑌 𝑥# 𝑥$ 𝑥! 𝑥" 𝑥# 𝑥$ 𝑦 予測モデル * 𝑦 予測メカニズムのモデル 𝑥! 𝑥" 𝑥# 𝑥$ 因果モデル 𝑥! = 𝑓!(𝑥! の親, 𝑒!) 0 𝑦 = 𝑓 (𝑥", 𝑥#, 𝑥$, 𝑥%) 𝐸(0 𝑦|𝑑𝑜 𝑥! = 𝑐 ) https://lingam.readthedocs.io/en/latest/tutorial/causal_effect.html#identification-of-feature-with-greatest-causal- influence-on-prediction
  13. Illustrative example • Auto-MPG (miles per gallon) dataset • MPGの予測値への介入効果が最も大きい変数はど

    れ? • 特定のMPGの予測値を得るにはどの変数に介入す べきか?(制御) 13 Cylinders Displacement Weight Horsepower Acceleration MPG ! 𝑀𝑃𝐺 Desired MPG prediction Suggested intervention on cylinders 15 8 21 6 30 4
  14. 時系列 • サブサンプリング: 「低解像度」データ – SVAR: 構造型自己回帰モデル (Swanson & Granger,

    1997) – 非ガウス独立なら識別可能 (Hyvarinen et al., 2010) – https://lingam.readthedocs.io/en/latest/tutorial/var.html – VARMAもできる: 過去の誤差からの影響を追加 (Kawahara et al., 2011) • https://lingam.readthedocs.io/en/latest/tutorial/varma.html • 非定常 – 差分が定常と仮定 (Moneta et al., 2013) 14 ) ( ) ( ) ( 0 t t t k e x B x + - = å = t t t x1(t) x1(t-1) x2(t-1) x2(t) e1(t-1) e2(t-1) e1(t) e2(t)
  15. 未観測共通原因1 15 • 終点変数: (モデル内に)子を持たない変数の同定 「 𝑥" は終点変数かつ潜在交絡変数を親に持たない」 定理 3:

    「 𝑥" をその他の変数全てに線形回帰した時の残差と 𝑥" が独立」 x2 x3 x1 x2 x3 x1 生成順序を 下から推定 真 f1 Û https://lingam.readthedocs.io/en/latest/tutorial/bottom_up_parce.html
  16. 未観測共通原因の存在を許すLiNGAM (Maeda & Shimizu, AISTATS2020) • 未観測共通原因のありそうな変数ペア • 未観測共通原因がない変数ペアの因果の向き 16

    𝑥$ 𝑥# 𝑓# 𝑥% 真 出力 𝑥+ 𝑥$ 𝑥# 𝑥% 𝑥+ 𝑓$ https://lingam.readthedocs.io/en/latest/tutorial/rcd.html
  17. 時系列 • 未観測共通原因ありのSVAR – Malinsky and Spirtes (2018) – Gerhardus

    and Runge (2020) – ノンパラ – 条件付き独立性 – Python: https://github.com/jakobrunge/tigramite 17
  18. 非線形モデル 18 x1 x2 e1 e2 正しいモデル 結果𝑥$ を原因𝑥# に非線形回帰

    原因𝑥# を結果𝑥$ に非線形回帰 説明変数𝑥7 (= 𝑒7 )と残差は独立 ガウスだと 無相関=独立 𝑥7 = 𝑒7 𝑥8 = 𝑓(𝑥7 ) + 𝑒8 𝑏#" ≠ 0 説明変数𝑥8 と残差は従属 非線形回帰して説明変数と残差が独立か調べる
  19. 因果的順序を下から推定: 終点変数の同定 • 終点変数: (モデル内に)子を持たない変数 • 終点変数を目的変数にしたときのみ、説明変数と残差が独立になる 19 x2 x3

    x1 x2 x3 因果的順序を 下から推定 真 x3 因果的順序を 下から推定 𝑥$ = 𝑒$ 𝑥# = 𝑓#(𝑥$ )+ 𝑒# 𝑥" = 𝑓"(𝑥#, 𝑥$ )+ 𝑒" 見つけた終点変数 𝑥! は分析から除く 見つけた終点変数 𝑥" は分析から除く 一つだけ残ったので終了 𝑥$ = 𝑒$ 𝑥# = 𝑓#(𝑥$ )+ 𝑒# 𝑥$ = 𝑒$ 𝑟# = 𝑥# − 𝑔# (𝑥$ , 𝑥% )と𝑥$ , 𝑥% は独立だが、 𝑟$ = 𝑥$ − 𝑔$ (𝑥# , 𝑥% )と𝑥# , 𝑥% は独立でない… 𝑘 𝑥! < 𝑘 𝑥" < 𝑘 𝑥#
  20. R code • http://web.math.ku.dk/~peters/code.html 20

  21. 条件付き独立性に基づく方法 • GUI: Tetrad – https://github.com/cmu-phil/tetrad • Python: causal-learn (including

    LiNGAM variants) – https://github.com/cmu-phil/causal-learn • R: pcalg – https://cran.r-project.org/web/packages/pcalg/index.html 21
  22. 今後の予定 • RCDの非線形版CAM-UV • 潜在因子 • 離散変数との混在 • Overcomplete ICAベースはもう少し先

    (開発中) 22
  23. 潜在因子のLiNGAM (Shimizu et al., 2009) • モデル: – 測定モデルの識別のために各潜在因子に 2つは“ピュア”な観測変数が必要

    (Silva et al., 2006; Xie et al., 2020) – このような潜在因子モデルをCausal representationと呼ぶ人もいる • “因子得点”を推定して因果グラフを推測 23 𝒇 = 𝐵𝒇+𝝐 𝒙 = 𝐺𝒇+𝒆 𝑥# 𝑥" ( 𝑓# ( 𝑓" 𝑥! 𝑥$ ? 𝑥# 𝑥" ( 𝑓# ( 𝑓" 𝑥! 𝑥$ 𝑦 + 𝒇 = 𝒈(𝒙) それっぽい??
  24. 潜在因子のLiNGAM (Shimizu et al., 2009) • モデル: – 測定モデルの識別のために各潜在因子に 2つは“ピュア”な観測変数が必要

    (Silva et al., 2006; Xie et al., 2020) – このような潜在因子モデルをCausal representationと呼ぶ人もいる • “因子得点”を推定して因果グラフを推測 24 𝒇 = 𝐵𝒇+𝝐 𝒙 = 𝐺𝒇+𝒆 𝑥# 𝑥" ( 𝑓# ( 𝑓" 𝑥! 𝑥$ ? 𝑥# 𝑥" ( 𝑓# ( 𝑓" 𝑥! 𝑥$ 𝑦 + 𝒇 = 𝒈(𝒙) それっぽい??