因果構造探索でDirectLiNGAMの4つの条件を再確認
因果探索とDirectLiNGAMって何?
まず、因果探索とは、データを使って「何が何に影響しているか」を発見する技術です。例えば、「勉強時間が成績に影響するのかな?」とか「睡眠時間が気分に影響するのかな?」といった関係を、データから見つけ出すことを目指します。
その中で DirectLiNGAM(ダイレクト・リンガム)は、因果探索の方法の一つで、特に以下のような特徴を持つデータに使われます。
線形 変数同士の関係が直線的(比例するような関係)。
非ガウス データが正規分布(釣り鐘型の分布)じゃない。
DirectLiNGAMは、変数間の因果関係を 矢印でつながれたグラフ(有向グラフ)として表し、それをデータから推定します。でも、これがちゃんと動くためには、4つの条件を満たす必要があります。それでは、その条件を一つずつ見ていきましょう!
DirectLiNGAMの4つの条件?
DirectLiNGAMが因果関係を正しく見つけるためには、次の4つの条件が大事です。
- 線形性(Linearity)
- 非ガウス性(Non-Gaussianity)
- 非巡回性(Acyclicity)
- 独立な誤差項(Independent Error Terms)
それぞれを具体例と一緒に、わかりやすく説明します。
1. 線形性(Linearity)
どんな条件?
変数同士の因果関係が 直線的な関係 であることを前提にしています。つまり、ある変数が別の変数に影響を与えるとき、その影響が 比例する 形で表されるということです。
具体例
たとえば、勉強時間(X) と 成績(Y) の関係を考えてみましょう。もし勉強時間が1時間増えるごとに、成績が一定の割合で上がる(例えば、1時間増えると5点アップ)なら、これは線形な関係です。
数学で書くと、こんな感じになります:
Y = aX + b + 誤差
(ここで、aは影響の強さ、bは定数、誤差はランダムなズレです)
なぜ大事?
DirectLiNGAMは、変数間の関係が直線的だと仮定して作られているので、もしデータがこの条件を満たさない(たとえば、勉強時間が成績に影響するけど増えすぎると逆に下がる、みたいな複雑な関係)だと、正しい因果関係を見つけられなくなっちゃいます。
2. 非ガウス性(Non-Gaussianity)
どんな条件?
データが 正規分布(ガウス分布) に従わないことを前提にしています。正規分布って、平均を中心に左右対称な釣り鐘型の分布で、テストの点数とか身長とか、よく見るデータがこれに当てはまることが多いです。でも、DirectLiNGAMはデータがこの形じゃないことを利用します。
具体例
たとえば、収入 のデータを見てみると、多くの人は平均的な収入だけど、ごく一部の高収入者がいるから、分布が右に長く伸びる形(非ガウス)になります。
また、テストの点数が「すごく高いか低い人が多い」場合も、正規分布じゃなくて非ガウスになります。
なぜ大事?
正規分布だと、因果の方向(「勉強時間が成績に影響する」のか「成績が勉強時間に影響する」のか)をデータから見分けるのが難しいんです。でも、非ガウスなデータならその方向を見分けやすくなるので、DirectLiNGAMはこの性質を使って因果関係を推定します。
3. 非巡回性(Acyclicity)
どんな条件?
因果関係に 循環がない ことを前提にしています。つまり、因果の矢印がぐるっと回ってループを作らないということです。たとえば、「AがBに影響し、BがCに影響し、CがAに影響する」みたいな関係はダメです。
具体例
勉強時間(X) が 成績(Y) に影響し、成績(Y) が モチベーション(Z) に影響する場合を考えてみましょう。この場合、矢印が X → Y → Z と進むだけで、ZがXに戻らないなら非巡回です。
でも、もし「モチベーション(Z)が勉強時間(X)に影響する」となると、X → Y → Z → X のようにループができてしまって、この条件を満たしません。
なぜ大事?
DirectLiNGAMは、因果関係が 有向非巡回グラフ(DAG) という形で表されると仮定しているので、循環があると正しいグラフを作れなくなります。
4. 独立な誤差項(Independent Error Terms)
どんな条件?
各変数についている 誤差項(ノイズ) がお互いに 独立 であることを前提にしています。誤差項って、モデルで説明しきれないランダムなズレのことです。
具体例
たとえば、勉強時間(X) と 成績(Y) の関係で考えてみましょう。Xの誤差(たとえば、勉強時間の記録ミス)とYの誤差(たとえば、試験当日の体調による点数のズレ)が、互いに全く関係していない必要があります。
もしこれらが関係している(たとえば、体調が悪い日には勉強時間も少なく記録され、成績も下がる)となると、誤差項が独立じゃなくなります。
なぜ大事?
誤差項が独立じゃないと、変数同士の見かけ上の関係が出てきてしまって、本当の因果関係を見誤る可能性があります。DirectLiNGAMは、誤差項が独立していることを頼りに因果関係を推定するので、この条件が大事なんです。
まとめ→4つの条件がどう役立つか?
DirectLiNGAMが因果構造を正しく見つけるためには、この4つの条件が揃っている必要があります。
- 線形性では、変数間の関係が直線的であること。
- 非ガウス性では、データが正規分布じゃないこと。
- 非巡回性では、因果関係にループがないこと。
- 独立な誤差項では、誤差が互いに無関係であること。
最後に
因果探索ってちょっと難しそうに感じるかもしれませんが、DirectLiNGAMの4つの条件の4つの条件を理解すると、データから因果関係を見つける仕組みが少し見えてきます。たとえば、友達と「ゲーム時間が宿題の時間に影響するのかな?」なんて話し合いながら、これらの条件を思い出してみると面白いかもしれません。データを使って身の回りの謎を解く第一歩、楽しんでみてください。私の場合は、Googlecolabでは因果探索に関するライブラリがすべて実装できるわけではありませんので、先ずは、DirectLiNGAMの4つの条件が全てそろわなくとも実装し、その他のライブラリの結果も確認して判断するようにしています。