目次
因果推論とは何か?
「なぜ」、今、因果推論を学ぶべきか?
2020年現在、機械学習を始めとする統計学の諸分野において、「因果推論」の重要性が叫ばれ始めています。
因果推論とは、「影響の発生の条件に基づいて因果関係について結論を出すプロセス」、つまり、「なぜ」を明らかにするための分析のことです。
因果関係とは、2つの物事や変数が「原因」と「結果」という関係で結びついている状態のことで、私たちは日々、あらゆる出来事について因果関係を探索することで、より良い行動を導き出すことができています。
また、機械学習などのデータ分析においても同様で、相関関係を探るだけではなく、因果関係にまで踏み込むことで、より高い予測精度をもったモデルを構築することができます。
しかし、実は、この因果関係および因果推論は、日常的にもデータ分析の現場でも正しく理解されていないことが多く、その結果、誤った意思決定やアクションを起こしてしまうこともしばしばです。
実際に、データ分析から得られた知見を使用して何らかのアクションを行いたい場合、単なる予測だけでは不十分なことがほとんどで、「とりあえずデータを集めて分析したはいいけれど、結局、何をすべきかわからない」といった本末転倒な事態を招いてしまうことも少なくありません。
当たり前のことですが、データ分析はあくまでビジネスその他の目的を効率的よく達成するための手段であり、より良い意思決定や行動の助けとなるものでなくてはなりません。
ビッグデータやディープラーニングがある種の流行となっていた時期を通り越し、近年では、改めてこの「当たり前」が見直され始めたことで、因果推論の重要性が高まっていると言えるでしょう。
そもそも因果関係って?〜因果関係の3原則〜
機械学習における因果関係の探索は、「原因をしっかりと深ぼる」というアプローチから、「統計的因果推論」というフレームワークに基づいたデータ分析によって行われます。
しかし、その前に、まず、そもそも「因果関係」とはどういった関係なのでしょうか?
統計的因果推論を「深ぼる」前に、まずは、因果関係を成立させるための条件を理解しておきましょう。
因果関係には、その関係を定義づける3つの原則(条件)があります。
すなわち、二つの事象AとBが因果関係にあるとき、AとBには、次の3つの関係が成り立っています。
- 時間的先行性
- 共変関係
- 他の条件の同一性
以下では、Aが原因で、Bが結果だとして説明します。
(1)時間的先行性
まず、1点目として、AはBに対して時間的に先行している必要があります。
原因が結果を引き起こすのであって、結果が原因を引き起こすわけではない、だから、Aは必ずBよりも先に生じなければならない、というわけです。
これは、一見当たり前に聞こえますが、この時間的先行性を確かめないまま、相関関係に過ぎない二つの事象を因果として結論づけてしまう誤りが後を絶ちません。
例えば、テストの点と親の機嫌に正の相関関係があるとき、すぐさま「テストの点がいいから親は機嫌がよくなる」と考えるのは性急です。
もしかすると、親の機嫌が良いことで子供のやる気が起き、それによってテストの点がよくなっただけかもしれません。
テストの点が良かったことと、親の機嫌が良くなったこととの間に時間的先行性が見出せなければ、両者は因果関係にあると結論づけることはできないのです。
(2)共変関係
2点目は、AとBの間に共変関係が確認されているという条件です。
共変関係とは、「共に変わる」という字の通り、Aに変化があればBにも変化があり、Bに変化があればAにも変化がある、という関係を指します。
先ほどの例で言えば、テストの点が良くなっても親の機嫌がよくならなかったり、親の機嫌が悪くなってもテストの点が変わらなかったりすると、それは共変関係とは呼べないわけです。
これも当たり前のことですが、Aが原因だと言っているのに、Aの変化がBに影響を与えないのはおかしな話なので、共変関係は因果関係成立の第二条件と言われています。
なお、ここでは、相関関係と同じ意味として捉えていただいて問題ありません。※厳密に言うと相関関係は線形の関係性を示しています。
(3)他の条件の同一性
3点目は、AとB以外の変数がコントロールされており、条件が同一の状態と言えるかどうか、という論点です。
これは、直感的に少し理解しにくいので、先ほどの例で考えてみましょう。
まず、①「テストで良い点をとった後に親の機嫌が良くなる」、②「テストの点が変わると親の機嫌も変わる」、という二つの条件が満たされているとします。
一見、それだけでもテストの点が原因、親の機嫌が結果と言えそうです。
しかし、このとき、もしテストで良い点をとったことを報告するタイミングがいつもご飯を食べた後(食べる前には言いにくいですよね)、悪い点をとったことを報告するタイミングがご飯前だったとすると、「空腹(満腹)だから機嫌が悪い(良い)」という新たな可能性が出てきます。
そして、残念なことに、この可能性を排除しない限りは、「テストの点→親の機嫌」という因果関係を導くことはできないのです。
このように、AとBに因果関係があると断定するためには、AとB以外の条件を揃えて、他の可能性があり得ないと断言できなければなりません。
今見た因果関係の3原則は、成立するのが厳しい条件ですが、だからこそ、データ分析においても因果関係を示せることはその後の行動を決める予測モデルとして重要だと言えます。
では、次に、データ分析における因果関係の導出、つまり統計的因果推論について見ていきましょう。
データ分析における因果関係の導出
統計的因果推論の考え方
統計学やデータ分析の文脈では、「統計的因果推論」と呼ばれるプロセスによって因果関係が導出されます。
先ほど説明した成立条件を満たすような厳密な因果関係は、現実に存在するデータを用いて実証することが困難なケースがほとんどです。
そこで、統計的因果推論では、「仮定」を用いた次の考え方によって、データを用いた因果推論を可能にしています。
- 推論したい因果に関する一定の仮定を置く
- 実世界のデータを用いて仮定の妥当性を検証する
統計的因果推論では、「現実にはあり得ないこと」を仮定として置く、という工夫をすることで、厳密な因果関係の導出を行なっているのです。
反事実モデルと因果効果
この「現実にはあり得ないこと」を仮定として置く考え方を「反事実モデル」と呼びます。
また、統計的因果推論において、この「反事実モデル(Counterfactual Model)」に基づいて定量的に定義された因果関係のことを「因果効果」と呼びます。
因果効果は、例えば、次のような形で定義されます。
- 因果効果=(Ya=1 - Ya=0) ...(Ya=1、私がジム会員になった場合の半年後の体脂肪率、Ya=0、私がジム会員にならなかった場合の半年後の体脂肪率)
ここで定義された[Ya=1]と[Ya=0]、すなわちジム会員になった場合とならなかった場合は、互いに、ある一方が事実であった場合に事実ではなくなります。
反事実モデルにおける「反事実」とは、こうした「ある事象が事実であった場合に現実には起こり得ないこと」のことを指し、因果効果はこの「事実と反事実」の組み合わせによって定義されます。
ここで注意すべき点として、因果効果を個人レベルで知ることは不可能であるということです。
当たり前のことですが、現実に起こってもいないことを知ることはできないからです。
そこで、統計的因果推論では、E[Ya=1] - E[Ya=0]、という形で、前提条件を加えて集団レベルで考えることで、因果効果を計算しています。
なお、この集団レベルにおける因果効果のことを「平均因果効果」と呼びます。
平均因果効果にまつわる因果推論の前提条件については、次の章でみていきます。
因果推論におけるデータ分析のプロセス
統計的因果推論におけるデータ分析は、次の5つのステップからなるプロセスを経ることが一般的です。
- Definition:反事実モデルに基づき、因果効果を定義する
- Assumption:因果に関する一定の仮定を置く
- Identification:定義された因果効果(観測不可能)を、2の仮定下で現実世界のデータから求めるための数式を導く
- Estimation:3で得られた値を実際に計算する
- Sensitibity Analysis(感度分析):2で置いた仮定がどの程度妥当なのか、仮定の違反に対して結果がどの程度ロバスト7日検討する
ただし、ここでは、概論の理解のために、各々のステップについての詳しい説明は割愛します。
本記事ではしっかりと概論を理解することを優先し、各ステップについては、実際にセミナー等でハンズオンで理解する方が早いでしょう。
(なお、余談ですが、因果推論におけるデータ分析のライブラリは、python環境だとdowhyがオススメです)
因果推論の前提条件としてのExchangeability(交換可能性)
Exchangeability(交換可能性)とは何か?
集団レベルでの因果効果、つまり平均因果効果を考える為の前提条件として重要な概念が「Exchangeability(交換可能性)」です。
Exchangeability(交換可能性)は、次の等式を満たすある条件のことです。
- すべてのaに対して、E[Ya|A=1] = E[Ya|A=0]
この等式が成り立つとき、次のことが言えます。
- a=1の時、上記の条件は、E[Ya=1|A=1] = E[Ya=1|A=0] (→「A=0の人が、仮に全員A=1だったときに、現実にA=1だった人たちとYの平均が同じ」)
- a=0の時、上記の条件は、E[Ya=0|A=0] = E[Ya=0|A=1] (→「A=1の人が、仮に全員A=0だったときに、現実にA=0だった人たちとYの平均が同じ」)
つまり、現実にA=0だった人たちと、A=1だった人たちの間でAの値を交換しても結果が同じになります。
このように、ある仮定において、事実と反事実を交換しても同じ因果効果を得られるような状態をExcangeability(交換可能性)と呼びます。
したがって、Exchangeability(交換可能性)が成立していないと、データから平均因果効果を導くことができません。
Exchangeability(交換可能性)が成立しないケース:交絡
Exchangeability(交換可能性)が成り立たないケースとして考えられるのは、「交絡」が生じているケースです。
交絡とは、「統計モデルの中の従属変数と独立変数の両方に(肯定的または否定的に)相関する外部変数が存在すること(Wilkipedia)」、つまりは疑似相関が起こっているようなケースです。
先ほどの条件についてみてみましょう。
- a=1の時、上記の条件は、E[Ya=1|A=1] = E[Ya=1|A=0] (→「A=0の人が、仮に全員A=1だったときに、現実にA=1だった人たちとYの平均が同じ」)
- a=0の時、上記の条件は、E[Ya=0|A=0] = E[Ya=0|A=1] (→「A=1の人が、仮に全員A=0だったときに、現実にA=0だった人たちとYの平均が同じ」)
ここで、A=0の人たちが「ある条件のもとで」、仮に全員A=1だったときに、現実にA=1だった人たちとYの平均が同じであるとしましょう。
同様に、A=1の人たちも「ある条件のもとで」、仮に全員A=0だったときに、現実にA=0だった人たちとYの平均が同じであるとしましょう。
この場合、その「ある条件」がA=0の人たちとA=1の人たちに与える影響は、実は、異なっている可能性があります。
乱暴に言い換えるならば、「ある条件」のおかげで、「Yの平均が同じ」という状態が実現できているのです。
このような条件下、つまり交絡が生じている場合では、A=0の人とA=1の人を入れ替えても、等しいYの平均を得ることはできません。
したがって、Exchangeability(交換可能性)が成立せず、平均因果効果も導出できません。
では、どうすれば良いか?
その答えが、次節で説明する「ランダム化」です。
どうすれば、Exchangeabilityを得ることができるか?:ランダム化(無差為割付)
Exchangeability(交換可能性)を担保するためには、「ランダム化(無差為割付)」と呼ばれる作業が必要になります。
ランダム化(無差為割付)とは、平均因果効果を調査したい集団に対して、介入Aをランダムに割り当てる作業のことです。
例えば、「コインを投げて表が出たらジム会員になれる、裏が出るとなれない」という条件のもとでは、ジム会員になれるかどうかは完全にランダムに決まります。
したがって、最終的にジム会員に選ばれたグループ(A=1)と選ばれなかったグループ(A=0)は平均的に同質な集団であるとみなせます。
このように、ランダム化は、調査したい集団に対して無作為な条件を付与することで、あらゆる交絡要因の影響を除外することができる点に大きなメリットがあります。
ただし、ランダム化を行う際には、次の点に注意が必要です。
- サンプルサイズが十分に大きい必要がある
- あくまでExchangeability(交換可能性)は平均的に成立が期待されるだけ(ランダム化にも関わらず偶然で交換可能性が成立しなかった場合には、共変量の調整が必要)
- 介入効果ではなく、割付効果の推定
(なお、Exchangeabilityおよび交絡、ランダム化については、UNBOUNDEDLYというブログに詳しく、わかりやすく記載されています。当ブログでも参考にさせていただきました。この場を借りてお礼申し上げます。)