こんにちは。現役エンジニアの”はやぶさ”@Cpp_Learningです。
『つくりながら学ぶ!Pythonによる因果分析 -因果推論・因果探索の実践入門-』という本を読んだ(二周した)ので、感想文を書きます。
Contents
忙しい人のために
忙しい人のために『Pythonによる因果分析』を1分で紹介します。
- イラスト多めの丁寧な解説
- 厳密性よりも分かりやすさを優先した説明でスッキリ読める
- 「相関」と「因果」の違いなど、言葉の意味から説明してくれる
- 第1部:因果推論、第2部:因果探索が学べて、お得感がスゴイ
- ベイジアンネットワークやディープラーニングを用いた因果探索も網羅
- Pythonの実践的なソースコードあり
『因果推論・因果探索って何?機械学習との関係は?』こんな疑問を持つ初学者にオススメの一冊です。
以降からは『Pythonによる因果分析』の各章に対しての感想文です。お時間のある方は続きも読んで頂けると嬉しいです。
Pythonによる因果分析 -はじめに-
この本の最初の数ページに読書へのメッセージが書いてあります。
本書は因果推論や因果探索を学びたいビジネスパーソンや初学者の方を対象としています。そのため確率・統計の数学的記述や式変形などは、厳密性よりも初学者への分かりやすさを優先しています。厳密な記述や証明が気になる方は、本書を読み終えたのちに、さらなる専門書籍に挑戦いただければ幸いです。
初学者を対象にした説明の方が難しいときもあります。分かりやすい説明を追求する余り、冗長的な説明になってしまうことも…(経験談)
この本を読んで「言葉遣いが平易で理解しやすい」と感じる人もいれば「説明が物足りない」と感じる人もいると思います。
因果推論・因果探索を学ぶ最初の一冊に本書を活用し、良い刺激を受けて、二冊目に挑戦するのが良いと感じました。なお専門書ではなく、以下の入門書を二冊目にするのもオススメです。
第1章から第3章まで -因果推論を実施するための前知識について-
第1~3章で因果推論を実施するための前知識を学ぶことができます。
- 「相関」と「因果」の違い
- 因果効果の種類(ATEなど)
- グラフ表現とバックドアパス
- ランダム化比較試験(RCT)
など
そのほか多くの重要なキーワードについて学ぶことができます。
バックドアパスを直感的に理解できる「プルプル作戦」というユニークな方法が、とても参考になりました。
(ツッコミ入れずに本の紹介を続けまーす)
実は最初に「プルプル作戦」を見たとき、分かりにくいと感じました。しかし、慣れてくると…
となりました。「プルプル作戦」が気になりますか?本買って読んでみて下さい。
第4章 -因果推論を実装しよう-
第1~3章で学んだ知識を活かし、第4章ではPythonによる因果推論を実践します。
- 回帰分析による因果推論の実装
- 傾向スコアを用いた逆確率重み付け法(IPTW)の実装
- Doubly Robust法(DR法)による因果推論の実装
これだけの手法をコンパクトにまとめてあるだけでも嬉しいのに、Pythonソースコードまでサポートしています。『実践入門』のタイトルに偽りなしです。
第5章 -機械学習を用いた因果推論-
第5章でもPythonによる因果推論を実践します。第4章と異なる点は因果関係が非線形な変数を対象とし、機械学習を用いて因果推論を実践する点です。
- ランダムフォレストによる分類と回帰のしくみ
- Meta-Learners(T-Learner、S-Learner、X-Learner)の実装
- Doubly Robust Learningの実装
ここでも多くの手法の概要からPythonによる実践まで学ぶことができます。本当にありがとうございます。
…なんてことをフクロウが短い脚を挙げながら揚げ足とってますが、これについては筆者も章タイトルに悩んだのでは(?)と感じました。
第4章に『ロジスティック回帰のより詳細な解説については、以下の本もご覧ください』という一文があります。
機械学習か否かではなく、以下のように対象データが線形か非線形で章を分けたストーリー展開はとても分かりやすいと感じました。
- 第4章:対象データが線形
- 第5章:対象データが非線形
というわけで、第4章で紹介している手法が機械学習か否かという点については、あまり気にしなくて良いのでは(?)と感じています。むしろ…
が重要であり、そのことを踏まえて説明している本書は素晴らしいと感じました。
フクロウのくるるちゃんが納得してくれたので、次にいきます。
第6章 -LiNGAMの実装-
第5章までが 第1部:因果推論 についての解説です。第6~8章からは 第2部:因果探索 についての解説に入り、第6章では LiNGAM(Linear Non-Gaussian Acyclic Model)を紹介しています。
LiNGAMは因果探索の代表的な手法とのことですが、この本に出会うまで知りませんでした。
また一つ新たな知識の扉を開くことができました。ありがとうございます。私のようにLiNGAMなにそれ?美味しいの?という人は、要チェックですね。
第7章 -ベイジアンネットワークの実装-
勉強中のベイジアンネットワークをサポートしていた点は、本当に嬉しかった。
今まで、下図のような ベイジアンネットワークは ドメイン知識 がないと作成できないと考えていました。
この本のおかげで「独立性の検定」や「オリエンテーションルールによる方向づけ」・「常識的な時間的順序」などからベイジアンネットワークを推定できることを学びました。
もちろんドメイン知識のある人と議論したり、あらゆるデータ分析による推定結果の裏付けは必須だと思いますが、それでも『ベイジアンネットワーク探索は強力な武器になる』と感じました。
この本に出会えて良かった。
第8章 -ディープラーニングを用いた因果探索-
第8章(最終章)の「ディープラーニングを用いた因果探索」というタイトルだけ見て、下記の記事で紹介したモデルの説明性・解釈性の話だと思いましたが、違いました。
もしくはグラフニューラルネットワーク(GNN)の紹介かな?と思いましたが、これについては簡単な紹介だけでメインではありませんでした。
第8章ではGANを用いた因果推論探索手法のSAM(Structural Agnostic Model)をメインで紹介しています。
第8章の冒頭に以下の一文があり、迷いながらも解説から実装までを丁寧に紹介しています。
ディープラーニングを用いた因果探索は、まだまだ研究が始まったばかりの分野であり、今後より洗錬された手法が発表されると考えています。そのため本書にディープラーニングを用いた因果探索を掲載するか迷いましたが、読者の皆様に、今後発展が期待される分野を感じてい頂きたいと考え、本章で解説、実装することとしました。
私自身のGAN理解度が低いため、第8章の内容を完全に理解できていませんが、ディープラーニングと因果探索という世界観に触れられたことを嬉しく想います。
今回紹介した本と同じの著者が書いた Pytorch の実践本 です。こちらの本もオススメですよ。
おわりに
素敵な本に出会えると嬉しいですね。この本で因果分析を学び、知識の地図を広げてから、専門書に挑戦するのが良いと感じました。