Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

PCアルゴリズムによるベイジアンネットワーク

うとしん
February 02, 2023

 PCアルゴリズムによるベイジアンネットワーク

社内で『小川(2021)「Pythonによる因果分析」マイナビ出版』の輪読会を行っており、7.5章「PCアルゴリズムによるベイジアンネットワーク探索の実装」の内容をまとめた発表資料です。

輪読テキストに関する概要(著者Qiita: 20230201時点)
https://qiita.com/sugulu_Ogawa_ISID/items/2cffb239b44853b07f70

本章における参照コード(著者Github: 20230201時点)
https://github.com/YutaroOgawa/causal_book/blob/master/7_5_bayesian_network_pc_algorithm.ipynb

うとしん

February 02, 2023
Tweet

More Decks by うとしん

Other Decks in Science

Transcript

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

    ノード間の繋がりはあるが 向きはないグラフ 変数x 1 変数x 2 変数x 3 変数x 1 変数x 2 変数x 3 変数x 1 変数x 2 変数x 3 ※基本的には因果の向きが分かっているものがベイジアンネットワークによる分析の対象です
  2. ネットワークの評価指標 データに対するネットワークの当てはまりの良さを示す - AIC: Akaike Information Criterion - BIC: Bayesian

    Information Criterion - MDL符号: Minumum Description Length - BDe: Bayesian Dirichlet Equivalent など、様々な指標が存在(テキストではベイジアンスコアと表現)
  3. 独立性のカイ二乗検定 変数間の独立性の検定 カイ二乗検定によって、条件付き独立性を検定 観測されたデータの度数分布 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
  4. 分析テーマの補足 上司の部下育成への熱心さが交絡因子となる - 部下育成への熱心さが高い → 研修に参加しやすい - 部下育成への熱心さが高い → 部下の面談の満足度が高くなりやすい

    面談の満足度以外にも、部下当人の要素との関係性も考える - 部下当人のチームメンバーへの満足度 - 部下当人の仕事への満足度 - 部下当人の仕事のパフォーマンス
  5. 各変数(疑似データ)の生成ロジック データの準備 ※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)
  6. 条件付き独立性検定による構造学習 関連の有無を確かめる 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が関連のある変数の数を超えるまで検定を実施
  7. 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
  8. 関連のあるノードのペアを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
  9. (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 のエッジを消去 検定
  10. 関連のあるノードのペアを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
  11. オリエンテーションルールによる方向づけ(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
  12. オリエンテーションルールによる方向づけ(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 検定
  13. オリエンテーションルールによる方向づけ(2-2) x Y 4 Y 3 Z Y Y 2

    構築したスケルトンのv字構造にオリエンテーションルールを適応 x Y 4 Y 3 Z Y Y 2 破線部は因果の向きは分からない
  14. オリエンテーションルールで決まらない因果の向き 時間的順序を考慮して、無難な方向性を当てはめる x Y 4 Y 3 Z Y Y

    2 x Y 4 Y 3 Z Y Y 2 常識的に因果の向きを決定 部下の面談の 満足度 キャリア面談 研修への参加 上司の部下育成 への熱心さ
  15. 想定していた構造との比較 完全に一致 x Y 4 Y 3 Z Y Y

    2 x Y 4 Y 3 Z Y Y 2 想定していた構造 アルゴリズムで導出した構造
  16. ベイジアンネットワークによる推論 推論例 (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) 本テキストでは、変数消去アルゴリズムによって推論
  17. 独立性検定の組み合わせと結果 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
  18. 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
  19. 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 検定
  20. 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
  21. 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
  22. 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 検定
  23. 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
  24. 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
  25. 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 検定
  26. 変数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
  27. - 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日 時点)