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

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

Avatar for うとしん うとしん
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

Avatar for うとしん

うとしん

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