Slide 1

Slide 1 text

PCアルゴリズムによる ベイジアンネットワーク ~Pythonによる因果分析7.5~

Slide 2

Slide 2 text

前提 - 本スライドは「小川(2021)『Pythonによる因果分析』マイナ ビ出版」の7.5章の輪読会の資料であり、7.4章以前の内容を前 提として説明している場合があります - 輪読テキストの概要(著者のQiita記事) https://qiita.com/sugulu_Ogawa_ISID/items/2cffb239b44853b07f70 - 参照コード(著者のGithub) https://github.com/YutaroOgawa/causal_book

Slide 3

Slide 3 text

アジェンダ - 前回の復習 - PCアルゴリズムによる因果探索

Slide 4

Slide 4 text

前回の復習(7.1~7.4章)

Slide 5

Slide 5 text

ベイジアンネットワークとは 因果ダイアグラムのノード間の関係性を条件付き確率を用いて表現 テキストで登場する3種類のグラフ表現 PDAG 繋がりのあるノードのうち 一部だけ向きのあるグラフ DAG ノード間の関係を表す向き のある(非循環な)グラフ スケルトン ノード間の繋がりはあるが 向きはないグラフ 変数x 1 変数x 2 変数x 3 変数x 1 変数x 2 変数x 3 変数x 1 変数x 2 変数x 3 ※基本的には因果の向きが分かっているものがベイジアンネットワークによる分析の対象です

Slide 6

Slide 6 text

ネットワークの評価指標 データに対するネットワークの当てはまりの良さを示す - AIC: Akaike Information Criterion - BIC: Bayesian Information Criterion - MDL符号: Minumum Description Length - BDe: Bayesian Dirichlet Equivalent など、様々な指標が存在(テキストではベイジアンスコアと表現)

Slide 7

Slide 7 text

独立性のカイ二乗検定 変数間の独立性の検定 カイ二乗検定によって、条件付き独立性を検定 観測されたデータの度数分布 x 2 =1 x 2 =2 x 1 =1 n 11 n 12 x 1 =2 n 21 n 22 独立の場合に期待される度数分布 x 2 =1 x 2 =2 x 1 =1 E 11 E 12 x 1 =2 E 21 E 22 カイ二乗統計量: χ2 = Σ i Σ j (n ij - E ij )2 / E ij , ここで E ij = n i × n j / N

Slide 8

Slide 8 text

ベイジアンネットワークの探索手法の分類 大きく3つの分類 1. スコアリングによる構造学習 2. 条件付き独立性検定による構造学習 3. 1と2のハイブリット テキストでは(2)の探索手法の1つ「PCアルゴリズム」を紹介

Slide 9

Slide 9 text

PCアルゴリズムによる因果探索

Slide 10

Slide 10 text

分析テーマの設定 大まかな流れ 1. 社内の上司向けに部下とのキャリア面談のポイント研修を実施 2. 上司は任意で研修に参加する 3. 後日、上司は研修への参加有無を問わず、部下とキャリア面談を実施 4. キャリア面談後、部下のキャリア面談の満足度を調査 5. 研修にどれほどの効果があったかを推定する

Slide 11

Slide 11 text

分析テーマの補足 上司の部下育成への熱心さが交絡因子となる - 部下育成への熱心さが高い → 研修に参加しやすい - 部下育成への熱心さが高い → 部下の面談の満足度が高くなりやすい 面談の満足度以外にも、部下当人の要素との関係性も考える - 部下当人のチームメンバーへの満足度 - 部下当人の仕事への満足度 - 部下当人の仕事のパフォーマンス

Slide 12

Slide 12 text

分析テーマの視覚的な理解 先述した各要素の関係性は下図の通りと考える 上司が研修を受講: Z 部下の面談の満足度: Y 部下当人のチームメン バーへの満足度: Y2 上司の部下育成の 熱心さ: x 部下当人の仕事への満 足度: Y3 部下当人の仕事のパ フォーマンス: Y4

Slide 13

Slide 13 text

各変数(疑似データ)の生成ロジック データの準備 ※1: noiseは各々標準正規分布N(0, 1)に従う ※2: tは効果の大きさを表し、上司の部下育成への熱心さxに依存する 実装コードは下記リンク(著者Github)を参照: https://github.com/YutaroOgawa/causal_book/blob/master/7_5_bayesian_network_pc_algorithm.ipynb 部下育成への熱心さ: x 一様分布(-1, 1)に従う出力値を5段階に離散化したもの 研修の受講: Z 5x + 5noise の値に基づいて確率的に1or0に決定 (※1) キャリア面談の満足度: Y 2 + tZ + 0.3x + 0.2noise を5段階に離散化したもの (※2) チームメンバーへの満足度: Y 2 5段階評価で確率的に決定 仕事への満足度: Y 3 4Y + Y 2 + noise の値を5段階に離散化したもの (※1) 仕事のパフォーマンス: Y 4 3Y 3 + 5 + 2noise の値を5段階に離散化したもの (※1)

Slide 14

Slide 14 text

データの出力 データのhead()はこんな感じ

Slide 15

Slide 15 text

PCアルゴリズムによる因果探索の流れ 1. 条件付き独立性検定による構造学習 2. オリエンテーションルールによる方向づけ 3. ベイジアンネットワークでの推論

Slide 16

Slide 16 text

1. 条件付き独立性検定による構造学習 2. オリエンテーションルールによる方向づけ 3. ベイジアンネットワークでの推論 ※本テキストでは、構造の推定(1と2)に関する記述がメインで推論のアルゴリ ズムについてはあまり触れていません → 推論アルゴリズムについては、テキスト内では槙野(2013)を紹介されています が、私はこちらの記事を参考にさせていただきました。 https://ermongroup.github.io/cs228-notes/inference/ve/ PCアルゴリズムによる因果探索の流れ

Slide 17

Slide 17 text

PCアルゴリズムによる因果探索の流れ 1. 条件付き独立性検定による構造学習 2. オリエンテーションルールによる方向づけ 3. ベイジアンネットワークでの推論

Slide 18

Slide 18 text

条件付き独立性検定による構造学習 関連の有無を確かめる n次の独立性を検定 1次の独立性 2つの変数間にとある変数 1個を条件付けた際の独立性 0次の独立性 2つの変数間にとある変数 0個を条件付けた際の独立性 2次の独立性 2つの変数間にとある変数 2個を条件付けた際の独立性 変数x 1 変数x 2 変数x 1 変数x 2 変数X 3 =x 3 変数x 1 変数x 2 変数X 3 =x 3 変数X 4 =x 4 検定 検定 検定 ※次数nが関連のある変数の数を超えるまで検定を実施

Slide 19

Slide 19 text

0次の独立性検定 pgmpyパッケージを用いて、各変数間の独立性を検定 x Z Y Y 2 Y 3 Y 4 x 関連 関連 独立 関連 関連 Z 関連 独立 関連 関連 Y 独立 関連 関連 Y 2 関連 関連 Y 3 関連 Y 4 x Y 4 Y 3 Z Y Y 2 ※検定の実装は、著者のGithub(下記リンク)を参照してください(以後も同様) https://github.com/YutaroOgawa/causal_book/blob/master/7_5_bayesian_network_pc_algorithm.ipynb

Slide 20

Slide 20 text

関連のあるノードのペアを1変数で条件付けたときの独立性を検定 ノード 関連のある1次の 条件付きペアの例 検定の数 x (x, Z | Y) 12個 Z (Z, Y | x) 12個 Y (Y, x | Z) 12個 Y 2 (Y 2 , Y 3 | Y 4 ) 2個 Y 3 (Y 3 , Y 4 | Y 2 ) 6個 Y 4 - 0個 1次の独立性検定 x Y 4 Y 3 Z Y Y 2 ※検定の組み合わせに関する詳細はAppendix

Slide 21

Slide 21 text

(Y 2 , Y 3 | Y 4 )と(Y 2 , Y 4 | Y 3 )の独立性の検定→(Y 2 , Y 4 | Y 3 )が独立 1次の独立性検定(Y 2 と関連のあるペアの例) x Y 4 Y 3 Z Y Y 2 x Y 4 Y 3 Z Y Y 2 破線部のY 2 とY 4 のエッジを消去 検定

Slide 22

Slide 22 text

各ノードに対して、条件付き独立のノードを消去した結果は下図 1次の独立性検定(結果) x Y 4 Y 3 Z Y Y 2 x Y 4 Y 3 Z Y Y 2 検定

Slide 23

Slide 23 text

関連のあるノードのペアを2変数で条件付けたときの独立性を検定 2次の独立性検定 x Y 4 Y 3 Z Y Y 2 ノードの ペア 関連のある2次の 条件付きペアの例 検定の数 Y, x (Y, x | Z, Y 3 ) 3個 Y, Z (Y, Z | x, Y 3 ) 3個 Y, Y 3 (Y, Y 3 | x, Y 4 ) 3個 Y, Y 4 (Y, Y 4 | x, Y 3 ) 3個 Y 3 , Y 4 (Y 3 , Y 4 | Y, Y 2 ) 1個 ※検定の組み合わせに関する詳細はAppendix

Slide 24

Slide 24 text

2次の独立性検定(結果) 各ノードに対して、条件付き独立のノードを消去した結果は下図 x Y 4 Y 3 Z Y Y 2 x Y 4 Y 3 Z Y Y 2 検定

Slide 25

Slide 25 text

PCアルゴリズムによる因果探索の流れ 1. 条件付き独立性検定による構造学習 2. オリエンテーションルールによる方向づけ 3. ベイジアンネットワークでの推論

Slide 26

Slide 26 text

オリエンテーションルールによる方向づけ(1-1) v字構造に対するオリエンテーションルール (A, C | B)が独立と判定されないのはパターン1のみ A C B B B B B A A A A C C C C パターン1 パターン2 パターン3 パターン4

Slide 27

Slide 27 text

オリエンテーションルールによる方向づけ(1-2) x Y 4 Y 3 Z Y Y 2 構築したスケルトンのv字構造にオリエンテーションルールを適応 4つのv字構造 xーYーY 3 ZーYーY 3 YーY 3 ーY 2 Y 2 ーY 3 ーY 4 独立性の検定を実施 Y x Y 3 Z Y Y 3 Y Y 3 Y 2 Y 4 Y 3 Y 2

Slide 28

Slide 28 text

オリエンテーションルールによる方向づけ(1-2) x Y 4 Y 3 Z Y Y 2 検定した結果、(Y, Y 2 | Y 3 )が独立ではなく方向が決定 x Y 4 Y 3 Z Y Y 2 検定

Slide 29

Slide 29 text

3種類のオリエンテーションルール v字構造以外にもオリエンテーションルールがある(らしい) オリエンテーションルールによる方向づけ(2-1) A C B B A C A A C D B B B B A C A D C C

Slide 30

Slide 30 text

オリエンテーションルールによる方向づけ(2-2) x Y 4 Y 3 Z Y Y 2 構築したスケルトンのv字構造にオリエンテーションルールを適応 x Y 4 Y 3 Z Y Y 2 破線部は因果の向きは分からない

Slide 31

Slide 31 text

オリエンテーションルールで決まらない因果の向き 時間的順序を考慮して、無難な方向性を当てはめる x Y 4 Y 3 Z Y Y 2 x Y 4 Y 3 Z Y Y 2 常識的に因果の向きを決定 部下の面談の 満足度 キャリア面談 研修への参加 上司の部下育成 への熱心さ

Slide 32

Slide 32 text

想定していた構造 想定していた構造を思い出してみる(スライド12を参照) Z Y Y2 x Y3 Y4 x Y 4 Y 3 Z Y Y 2 書き換え

Slide 33

Slide 33 text

想定していた構造との比較 完全に一致 x Y 4 Y 3 Z Y Y 2 x Y 4 Y 3 Z Y Y 2 想定していた構造 アルゴリズムで導出した構造

Slide 34

Slide 34 text

PCアルゴリズムによる因果探索の流れ 1. 条件付き独立性検定による構造学習 2. オリエンテーションルールによる方向づけ 3. ベイジアンネットワークでの推論

Slide 35

Slide 35 text

ベイジアンネットワークによる推論 本テキストでは、変数消去アルゴリズムによって推論 変数消去アルゴリズム(VE: Variables Elimination) 上記2つのオペレーションを繰り返すアルゴリズム(計算量の問題は要検討) product operation P(X, Y) = P(X|Y)P(Y) marginalization operation τ(x) = Σ y φ(x, y) 周辺事前確率のVE CPT(条件付き確率分布表)に基づく 周辺事後確率のVE エビデンスeが所与 もしくは

Slide 36

Slide 36 text

ベイジアンネットワークによる推論 推論例 (Z, Y 3 )の観測値 - Z: 上司の研修参加有無(1 or 0) - Y 3 : 部下の仕事への満足度(5段階) 未観測変数がある値をとる確率 - x: 部下のキャリア面談の満足度(5 段階) インプット アウトプット 推論 (Z, Y 3 ) = (0, 3) (P(x=1), P(x=2), P(x=3), P(x=4), P(x=5)) = (0.287, 0.222, 0.215, 0.157, 0.119) 本テキストでは、変数消去アルゴリズムによって推論

Slide 37

Slide 37 text

Appendix

Slide 38

Slide 38 text

独立性検定の組み合わせと結果 1次の独立性を考えるため、0次の独立性の結果を再掲 x Z Y Y 2 Y 3 Y 4 x 関連 関連 独立 関連 関連 Z 関連 独立 関連 関連 Y 独立 関連 関連 Y 2 関連 関連 Y 3 関連 Y 4 x Y 4 Y 3 Z Y Y 2

Slide 39

Slide 39 text

1次の独立性検定の組み合わせ(変数x) 変数xについては、 Z, Y, Y 3 , Y 4 の4変数と関連 確認する独立性は (x, Z|Y), (x, Z|Y 3 ), (x, Z|Y 4 ), (x, Y|Z), (x, Y|Y 3 ), (x, Y|Y 4 ), (x, Y 3 |Z), (x, Y 3 |Y), (x, Y 3 |Y 4 ), (x, Y 4 |Z), (x, Y 4 |Y), (x, Y 4 |Y 3 ) の12通り x Y 4 Y 3 Z Y Y 2

Slide 40

Slide 40 text

1次の独立性検定の結果(変数x) 検定の結果、(x, Y 3 |Y), (x, Y 4 |Y), (x, Y 4 |Y 3 )が独立 x Y 4 Y 3 Z Y Y 2 x Y 4 Y 3 Z Y Y 2 検定

Slide 41

Slide 41 text

1次の独立性の組み合わせ(変数Z) 変数Zについては、 x, Y, Y 3 , Y 4 の4変数と関連 確認する独立性は (Z, x|Y), (Z, x|Y 3 ), (Z, x|Y 4 ), (Z, Y|x), (Z, Y|Y 3 ), (Z, Y|Y 4 ), (Z, Y 3 |x), (Z, Y 3 |Y), (Z, Y 3 |Y 4 ), (Z, Y 4 |x), (Z, Y 4 |Y), (x, Y 4 |Y 3 ) の12通り x Y 4 Y 3 Z Y Y 2

Slide 42

Slide 42 text

1次の独立性検定の結果(変数Z) 検定の結果、(Z, Y 3 |x), (Z, Y 4 |Y)が独立 x Y 4 Y 3 Z Y Y 2 x Y 4 Y 3 Z Y Y 2 検定

Slide 43

Slide 43 text

1次の独立性の組み合わせ(変数Y 2 ) 変数Y 2 については、 Y 3 , Y 4 の2変数と関連 確認する独立性は (Y 2 , Y 3 | Y 4 ), (Y 2 , Y 4 | Y 3 ) の12通り x Y 4 Y 3 Z Y Y 2

Slide 44

Slide 44 text

1次の独立性検定の結果(変数Y 2 ) 検定の結果、(Y 2 , Y 4 | Y 3 )が独立 x Y 4 Y 3 Z Y Y 2 x Y 4 Y 3 Z Y Y 2 検定

Slide 45

Slide 45 text

1次の独立性の組み合わせ(変数Y 3 ) 変数Y 3 については、 Y, Y 2 , Y 4 の3変数と関連 確認する独立性は (Y 3 , Y| Y 2 ), (Y 3 , Y| Y 4 ), (Y 3 , Y 2 | Y), (Y 3 , Y 2 | Y 4 ), (Y 3 , Y 4 | Y), (Y 3 , Y 4 | Y 2 ) の6通り x Y 4 Y 3 Z Y Y 2

Slide 46

Slide 46 text

1次の独立性検定の結果(変数Y 3 ) 検定の結果、独立なものなし x Y 4 Y 3 Z Y Y 2 x Y 4 Y 3 Z Y Y 2 検定

Slide 47

Slide 47 text

2次の独立性の組み合わせ(変数Y) 変数Yについては、 x, Z, Y 3 , Y 4 の4変数と関連 確認する独立性は (Y, x|Z, Y 3 ), (Y, x|Z, Y 4 ), (Y, x|Y 3 , Y 4 ), (Y, Z|x, Y 3 ), (Y, Z|x, Y 4 ), (Y, Z|Y 3, Y 4 ), (Y, Y 3 |x, Z), (Y, Y 3 |x, Y 4 ), (Y, Y 3 |Z, Y 4 ), (Y, Y 4 |x, Z), (Y, Y 4 |x, Y 3 ), (Y, Y 4 |Z, Y 3 ), の12通り x Y 4 Y 3 Z Y Y 2

Slide 48

Slide 48 text

2次の独立性検定の結果(変数Y) 検定の結果、(Y, Y 4 |x, Y 3 ), (Y, Y 4 |Z, Y 3 )が独立 x Y 4 Y 3 Z Y Y 2 x Y 4 Y 3 Z Y Y 2 検定

Slide 49

Slide 49 text

変数Y 3 については、 Y, Y 2 , Y 4 の3変数と関連 確認する独立性は (Y 3 , Y|Y 2 , Y 4 ) の1通り 2次の独立性の組み合わせ(変数Y 3 ) x Y 4 Y 3 Z Y Y 2

Slide 50

Slide 50 text

2次の独立性検定の結果(変数Y 3 ) 検定の結果、独立なものなし x Y 4 Y 3 Z Y Y 2 x Y 4 Y 3 Z Y Y 2 検定

Slide 51

Slide 51 text

- Pearl(2019)「入門統計的因果推論」朝倉書店 - Pearl(2022)「因果推論の科学」文藝春秋 - 岩波データサイエンスVol.3(2016)「[特集]因果推論-実世界の データから因果を読む」岩波新書 - 小川(2021)「Pythonによる因果分析」マイナビ出版 - 久保川(2017)「現代数理統計学の基礎」共立出版 参考文献(テキスト)

Slide 52

Slide 52 text

- Hayashi takehiko「”因果推論駅”の奥の方を探訪しながら考える」 https://speakerdeck.com/takehikoihayashi/wai-de-nidofalseyounaxi-gariwochi-tuteirufalseka - krsk「”矢印”をつかって因果関係を視覚的に整理する: 因果ダイアグラム(DAG)入門①」 https://www.krsk-phs.com/entry/DAG1 - krsk「”矢印”をつかって因果関係を視覚的に整理する: 因果ダイアグラム(DAG)入門②」 https://www.krsk-phs.com/entry/DAG2 - YutaroOgawa「Pythonによる因果推論と因果探索(初心者の方向け)」 https://qiita.com/sugulu_Ogawa_ISID/items/2cffb239b44853b07f70 - YutaroOgawa「YutaroOgawa/causal_book - 因果推論・因果探索の実践入門」 https://github.com/YutaroOgawa/causal_book - YutaroOgawa「7.5 PCアルゴリズムによるベイジアンネットワーク探索の実装」 https://github.com/YutaroOgawa/causal_book/blob/master/7_5_bayesian_network_pc_algorithm.ipynb - Volodymyr Kuleshov and Stefano Ermon「Variable Elimination」 https://ermongroup.github.io/cs228-notes/inference/ve/ 参考文献(Web: すべて 2023年2月1日 時点)

Slide 53

Slide 53 text

宣伝 高橋(2022)「統計的因果推論の理論と実装」の勉強会を開催して います! Rubin流(潜在的結果変数の枠組み)の因果推論について ”易しく”かつ”しっかり”学習できるテキストですので、興味のある 方はぜひご参加ください! 初回の勉強会資料はこちら: https://speakerdeck.com/s1ok69oo/tong-ji-de-yin-guo-tui-lun-noli-l un-toshi-zhuang-qian-zai-de-jie-guo-bian-shu-nowaku-zu-mi

Slide 54

Slide 54 text

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