Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Correlation Is Pairwise. Multicollinearity Isn't.

2026年08月22日に「Dev.to」が公開したITニュース「Correlation Is Pairwise. Multicollinearity Isn't.」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

データ分析で、変数間の高い相関(多重共線性)はモデルの解釈を難しくする。ヒートマップでの2変数間の確認だけでは不十分で、VIFなど複数変数間の関係を測る指標が重要だ。予測が目的なら影響は少ないが、説明が目的なら適切な対処が必要になる。

ITニュース解説

システム開発の現場でデータ分析を行う際、特に重回帰分析のような統計モデルを構築する場面では、「多重共線性」という現象が問題となることがある。この多重共線性とは、モデルの説明変数(予測に使う要素)同士が互いに強い線形関係を持っている状態を指す。この状態を適切に理解し対処しないと、モデルから得られる知見が歪んだり、不安定になったりする可能性がある。

多くの人が多重共線性に対処しようとするとき、まず最初に行うのが「相関行列」の確認である。これは、データに含まれるすべての変数ペア間の相関の強さを数値で示し、ヒートマップとして可視化されることが多い。例えば、0.8以上の強い相関を持つ変数ペアがあれば、そのうちの片方を削除するといった対処法がよく取られる。しかし、この記事は、この相関行列を使ったアプローチだけでは多重共線性を完全に把握することはできないと指摘している。

相関とはあくまで二つの変数の関係性を示す統計量であるため、三つ以上の変数が組み合わさって生じる複雑な関係性を見抜くことはできない。記事では、この限界を明確に示すために、単純な例を挙げている。独立した二つの変数 x1x2 を作り、三つ目の変数 x3x1x2 の合計として生成する。このとき、x1x2 の間には相関がほとんどない(約0)にもかかわらず、x1x3 の間、そして x2x3 の間にはそれぞれ約0.7という強い相関が見られる。このケースでは、x3x1x2 だけで完全に決定される、つまり「完璧な多重共線性」が存在する。しかし、相関行列で0.8や0.75といった一般的な閾値で見ても、x1x2 のペアは「問題なし」と判断されてしまう。このように、相関行列はペアごとの関係しか見ないため、複数変数間の依存関係には盲目なのである。結果として、このような状況で回帰分析を行うと、設計行列が「特異」となり、係数の一意な解が得られなくなるか、ソフトウェアが無理やり解を出そうとして信用できない結果を返すことになる。これは、比率として計算された変数、合計値として生成された変数、予算の内訳、あるいはワンホットエンコーディングで基準カテゴリを削除し忘れた場合など、実際のデータで頻繁に発生しうる状況である。

では、多重共線性を正しく診断するにはどうすればよいのか。ここで登場するのが「VIF(Variance Inflation Factor:分散膨張因子)」である。VIFは、個々の説明変数が他のすべての説明変数によってどれだけ説明されるか(つまり、どれだけ依存しているか)を測定する。具体的には、ある説明変数を目的変数とせず、他のすべての説明変数を用いて回帰モデルを構築し、その決定係数(R^2)を算出する。VIFはそのR^2を用いて 1 / (1 - R^2) という式で計算される。

このVIFは、文字通り「係数の分散をどれだけ膨張させるか」を示している。VIFが10であれば、その変数の係数推定値の分散は、もしその変数が他の変数と全く相関がなかった場合に比べて10倍になることを意味する。分散が大きいということは、係数の標準誤差も大きくなり、係数そのものが非常に不安定で信頼性が低いことを示している。係数が不安定だと、データのわずかな違いでその値が大きく変動し、時にはプラスとマイナスが入れ替わることもあるため、その変数から得られる知見は使い物にならなくなる。上記の例では、x3x1x2 で回帰するとR^2が1になるため、VIFは無限大となり、モデルが特定できないことを明確に示してくれる。VIFが5や10を超える場合に問題視されることが多いが、これらも絶対的な基準ではなく、あくまで問題の深刻度を測るための目安として使うべきだと記事は述べている。

また、多重共線性への対処を考える上で、モデルの「目的」を明確にすることが非常に重要である。モデルの目的は大きく分けて二つある。「予測(Prediction)」と「説明(Inference)」である。 もしモデルの目的が単に未来の値を正確に「予測する」ことであれば、多重共線性はそれほど大きな問題にならないことが多い。相関のある説明変数があっても、モデル全体の予測精度にはあまり影響せず、テストデータでの誤差も膨らまない。勾配ブースティングなどの機械学習モデルでは、多重共線性の影響をあまり受けずに良好な予測性能を発揮することもある。 しかし、もしモデルの目的が「説明する」ことであれば、すなわち各説明変数が目的変数にどれくらい影響を与えるのか(例えば、「この施策にどれくらい予算を増やせば売上が上がるか」)を知りたいのであれば、多重共線性は致命的な問題となる。多重共線性によって係数が不安定になると、その係数を基にした意思決定が誤ったものになるリスクが高まるからである。

この「予測か説明か」という視点は、特徴量選択の際にも重要となる。たとえば、目的変数と相関の高い変数だけを残し、低い変数を削除するという一般的な習慣があるが、これも必ずしも正しいとは限らない。特に、ターゲット変数と高い相関を持つ変数を残すことで、本当に知りたい変数(例えばマーケティング費用)の重要性がモデル中で埋もれてしまうことがある。これは、複数の変数が同時にターゲットの変動を説明しようと競合する際に、制御できない(季節性、休日など)変数が勝ちがちであるためだ。逆に、ターゲット変数との相関が低い変数でも、「サプレッサー変数」と呼ばれるものがある。これらは直接ターゲットを予測しないが、他の予測変数のノイズを打ち消すことで、その予測変数の信号を鮮明にし、モデル全体の性能を向上させることがある。このような変数を相関の低さから安易に削除してしまうと、かえってモデルの性能を悪化させてしまう。

より厳密に設計行列全体の多重共線性の問題を単一の数値で評価したい場合は、「条件数(Condition Number)」という指標が有用である。これは、スケールされた特徴量行列の最大特異値と最小特異値の比率であり、一般に30を超える場合に問題があるとされる。これは、設計行列の逆行列を計算する際に、非常に小さな固有値が存在すると、係数の分散が爆発的に大きくなるというVIFと同様の幾何学的な事実に基づいている。

以上のことから、多重共線性に対処するための推奨される手順は以下のようになる。 まず、モデルの目的が「予測」なのか「説明」なのかを明確にする。予測が主であれば、多重共線性の問題は多くの場合、それほど気にしなくても良い。次に、相関行列(ヒートマップ)は、データエラーの発見やデータ漏洩の確認といったデータ探索の目的で利用し、変数削除の判断ツールとしては使わない。その上で、全特徴量に対してVIFを計算し、変数ごとの多重共線性の深刻度をランク付けする。さらに、設計行列全体の健全性をチェックするために条件数を確認する。VIFが高い変数が見つかったら、なぜその変数が他の変数と依存関係にあるのか(例: 計算によって作られた比率、合計値、ダミー変数の罠など)を深く考察する。その原因に応じて、変数の削除ではなく、構造的な修正(例: 変数変換、組み合わせ)を検討する。最終的な変数削除の判断は、モデルの目的、ビジネス要件、そしてモデルの説明可能性を考慮して行うべきである。

これらの手順は、単に相関行列の赤色の四角を探すよりも手間がかからないが、より深く、正確な診断を可能にする。多重共線性への適切な理解と対処は、データ分析から真に価値ある知見を引き出すために不可欠な要素なのである。