書評

『Pythonによる因果分析 -因果推論・因果探索の実践入門-』の感想文

Pythonによる因果分析

こんにちは。現役エンジニアの”はやぶさ”@Cpp_Learningです。

『つくりながら学ぶ!Pythonによる因果分析 -因果推論・因果探索の実践入門-』という本を読んだ(二周した)ので、感想文を書きます。

忙しい人のために

忙しい人のために『Pythonによる因果分析』を1分で紹介します。

Pythonによる因果分析おすすめポイント
  • イラスト多めの丁寧な解説
  • 厳密性よりも分かりやすさを優先した説明でスッキリ読める
  • 「相関」と「因果」の違いなど、言葉の意味から説明してくれる
  • 第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章に『ロジスティック回帰のより詳細な解説については、以下の本もご覧ください』という一文があります。

ロジスティック回帰などの機械学習を学べる本

機械学習か否かではなく、以下のように対象データが線形か非線形で章を分けたストーリー展開はとても分かりやすいと感じました。

  • 第4章:対象データが線形
  • 第5章:対象データが非線形

というわけで、第4章で紹介している手法が機械学習か否かという点については、あまり気にしなくて良いのでは(?)と感じています。むしろ…

はやぶさ
はやぶさ
どんな問題のときに、どんな手法を選定すべきか?

が重要であり、そのことを踏まえて説明している本書は素晴らしいと感じました。

くるる

フクロウのくるるちゃんが納得してくれたので、次にいきます。

第6章 -LiNGAMの実装-

第5章までが 第1部:因果推論 についての解説です。第6~8章からは 第2部:因果探索 についての解説に入り、第6章では LiNGAM(Linear Non-Gaussian Acyclic Model)を紹介しています。

LiNGAMは因果探索の代表的な手法とのことですが、この本に出会うまで知りませんでした。

また一つ新たな知識の扉を開くことができました。ありがとうございます。私のようにLiNGAMなにそれ?美味しいの?という人は、要チェックですね。

第7章 -ベイジアンネットワークの実装-

勉強中のベイジアンネットワークをサポートしていた点は、本当に嬉しかった。

今まで、下図のような ベイジアンネットワークは ドメイン知識 がないと作成できないと考えていました。

ベイジアンネットワーク

引用元:Pythonによる因果推論と因果探索(初心者の方向け)|Qiita

この本のおかげで「独立性の検定」や「オリエンテーションルールによる方向づけ」・「常識的な時間的順序」などからベイジアンネットワークを推定できることを学びました。

もちろんドメイン知識のある人と議論したり、あらゆるデータ分析による推定結果の裏付けは必須だと思いますが、それでも『ベイジアンネットワーク探索は強力な武器になる』と感じました。

この本に出会えて良かった。

第8章 -ディープラーニングを用いた因果探索-

第8章(最終章)の「ディープラーニングを用いた因果探索」というタイトルだけ見て、下記の記事で紹介したモデルの説明性・解釈性の話だと思いましたが、違いました。

モデル解釈性
機械学習モデルの説明性・解釈性について -SHAPによる実践あり-こんにちは。 現役エンジニアの”はやぶさ”@Cpp_Learningです。仕事でもプライベートでも機械学習で色々やってます。 ...

もしくはグラフニューラルネットワーク(GNN)の紹介かな?と思いましたが、これについては簡単な紹介だけでメインではありませんでした。

グラフ
PyTorch GeometricでGraph Neural Network(GNN)入門グラフニューラルネットワーク(GNN:graph neural network)とグラフ畳込みネットワーク(GCN:graph convolutional network)について勉強したので、内容をまとめました。PyTorch Geometricを使ったノード分類のソースコードも公開しています。...

第8章ではGANを用いた因果推論探索手法のSAM(Structural Agnostic Model)をメインで紹介しています。

第8章の冒頭に以下の一文があり、迷いながらも解説から実装までを丁寧に紹介しています。

ディープラーニングを用いた因果探索は、まだまだ研究が始まったばかりの分野であり、今後より洗錬された手法が発表されると考えています。そのため本書にディープラーニングを用いた因果探索を掲載するか迷いましたが、読者の皆様に、今後発展が期待される分野を感じてい頂きたいと考え、本章で解説、実装することとしました。

私自身のGAN理解度が低いため、第8章の内容を完全に理解できていませんが、ディープラーニングと因果探索という世界観に触れられたことを嬉しく想います。

くるる
くるる
くるる
くるるもGANちょっち曖昧なので以下の本で再学習します♪

今回紹介した本と同じの著者が書いた Pytorch の実践本 です。こちらの本もオススメですよ。

スポンサーリンク

おわりに

素敵な本に出会えると嬉しいですね。この本で因果分析を学び、知識の地図を広げてから、専門書に挑戦するのが良いと感じました。

はやぶさ
はやぶさ
この本を片手にでPythonソースコードをつくるながら因果分析を学びましょう!
Amazonギフト券購入で500ポイント還元中!

Amazonギフト券を3,000円分購入すると500ポイントもらえる!

Amazon商品2,000円分とギフト券を同一カートで購入するだけ。

キャンペーン期間は1/31まで。急げ!

 

ギフト券キャンペーンをチェックする

ギフト券と同じカートでまとめ買いができる商品すべて対象

PICK UP BOOKS

  • 数理モデル入門
    数理モデル
  • Jetoson Nano 超入門
    Jetoson Nano
  • 図解速習DEEP LEARNING
    DEEP LEARNING
  • Pythonによる因果分析
    Python