因果発見の実践
因果発見の実践
では、わかりやすい例を挙げると、先ほどの「アイスクリームの売上と熱中症患者の増加」に関するデータがあるとする。相関関係を見ると、アイスクリームが売れると熱中症患者が増えるように見えるけれど、実際には「暑い天気」という隠れた原因があるのかも?因果探索を使うと、この隠れた要因を明らかにして、どのような因果関係があるのかを突き止めることができる。また、医療の分野でもよく使われる。例えば、新しい薬が患者の病気に与える影響を調べるとき、他の要因(年齢や生活習慣など)をコントロールしながら「薬が本当に効果的なのか」を因果探索で分析することができます。このように、他にも経済、マーケティングなどいろいろな分野で活躍しているのが因果探索です。
因果探索にはいろいろな手法とツールがあり、代表的なもとして
制約に基づく手法、スコアベース手法、関数型因果モデルの3つのアプローチがあります。
手法を大別すると
- 制約に基づく手法(Constraint-Based Methods)は、独立性検定を用いて因果構造を推定します。
- PCアルゴリズム(Peter-Clark Algorithm)は、条件付き独立性を使って因果構造を推定する方法。Pythonライブラリとして、networkx、cdt(R必要)、causal-learnを使用。
- FCIアルゴリズム(Fast Causal Inference)は、潜在変数の影響を含む因果構造を考慮。
Pythonライブラリとして、causal-learn
- スコアベース手法(Score-Based Methods)スコアを最大化することで最適な構造を探索。
- GES (Greedy Equivalence Search) DAG の構造探索をスコアベースで行う貪欲法
Pythonライブラリとして、bnlearn、pgmpy、causal-learnを使用。
- BIC (Bayesian Information Criterion)ベイズネットワークのモデル選択に BIC を用いる。
Pythonライブラリとして、pgmpyを使用。
- 関数型因果モデル(Functional Causal Model, FCM)回帰や深層学習を用いて因果関係を推定する手法。独立成分分析(ICA)や非線形回帰を活用。
- LiNGAM(Linear
Non-Gaussian Acyclic Model)線形モデルの仮定と非正規分布の仮定を用いる。
Pythonライブラリとして、lingam、cdtを使用。
- DECI(Deep End-to-end Causal
Inference)深層学習を用いた因果探索。
Pythonライブラリとして、causal-learnを使用。