## 定義
多重共線性(multi-colinearity、マルチコ)とは、ある説明変数が他の説明変数と極めて似通っており、互いに予測可能な状態にあることを指す。線形回帰では、多重共線性を持つ説明変数群が存在すると回帰係数が不安定になり、極端な場合は発散する。カテゴリ変数をOne-Hot Encodingでn個の値をn個の列に変換すると、実質的に同一の情報を持つ列(例: `OverTime_Yes`と`OverTime_No`は0/1が反転しているだけ)が生まれ、典型的な多重共線性の原因になる(Source: [[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 8 機械学習のモデルを解釈する]] §8.3)。
## 直感的な説明(ベクトルの角度)
線形回帰は「目的変数を説明変数の線形結合で表現する」問題である。説明変数どうしが独立であれば、目的変数を表す点$P$は説明変数ベクトル$V_1, V_2$の線形結合$P = 1.0 \cdot V_1 + 2.5 \cdot V_2$のように一意かつ安定に表現できる。しかし$V_1$と$V_2$が強く相関している(角度が小さい)場合、$P$を表す係数の組み合わせは$P=-2.0\cdot V_1 + 2\cdot V_2$のように符号が反転したり絶対値が大きくなったりする。$V_1$と$V_2$の角度がゼロに近づくほど係数の絶対値は発散し、角度が完全に一致すると係数は無限大に発散する(Source: 同上 §8.3のコラム)。
## 対処法
- **One-Hot Encodingではdrop_firstでn-1列にする**: `pd.get_dummies`の`drop_first`オプションで1種類のカテゴリ値を基準として捨てることで、多重共線性を回避できる。ただし3種類以上のカテゴリ値では捨てた値の影響が他の係数やintercept(切片)に内包されるため、解釈時に注意が必要(Source: 同上 §8.3)。
- **正則化つき回帰(Lasso・Ridge・ElasticNet)**: 多重共線性があるデータでは回帰係数が大きくなりやすく過学習しやすいため、正則化項を加えて係数の増大を抑制した線形回帰アルゴリズムが使われる(Source: 同上 §8.3のコラム)。
- **非負制約**: 説明変数が目的変数に対して負の影響を及ぼさないとわかっている場合(例: マーケティングミックスモデル(MMM)における広告出稿金額と売上の関係)、回帰係数に非負制約を課すことで解釈しやすい結果を得られる。scikit-learnの回帰モデルでは`positive`パラメータで有効化できる(Source: 同上 §8.3のコラム)。
## 横断的知見
- **直感的な「ベクトルの角度」による説明(ch.8)は、ESL第3章の逐次直交化(Gram-Schmidt)が与える厳密な機序と同じ現象を指している**: ch.8は多重共線性による係数の発散を、2本の説明変数ベクトル$V_1, V_2$のなす角度が小さくなるほど線形結合の係数が発散するという幾何学的直感で説明する。ESL第3章§3.2.3はこれを数式で裏づける: 入力を逐次直交化すると、$j$番目の多重回帰係数は「$x_j$を他のすべての入力に回帰した残差」に対する単純回帰係数に等しく、相関の強い変数集合ではこの残差ベクトルのノルムが小さくなるために係数の分散(式3.29)が拡大する。ch.8の「角度が小さいほど係数が発散する」という直感は、ESLの「残差ノルムが小さいほど分散が拡大する」という定量的な機序の平易な言い換えに相当する。すなわち実務入門書の幾何学的説明と専門書の直交化による解析は、同一の統計的事実を異なる抽象度で記述している(Source: [[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 8 機械学習のモデルを解釈する]] §8.3のコラム, [[@2009__Springer__The Elements of Statistical Learning - Chapter 3 Linear Methods for Regression]] §3.2.3)。
- **多重共線性への対処法は、ch.8(実務)とESL/ソフトウェア信頼性工学(専門書)で異なる系譜として現れる**: ch.8はOne-Hot Encodingのdrop_firstという前処理レベルの回避と、Lasso/Ridge/ElasticNetという正則化つき回帰の2択を挙げるにとどまる。一方、[[主成分分析]]の横断的知見が示すとおり、*Handbook of Software Reliability Engineering*第12章(1996)は相関の強いソフトウェア複雑性メトリクス群を主成分分析で少数の直交ドメインメトリクスへ縮約するという第3の系譜(次元削減による多重共線性の解消)を、ESL/MMLが体系化するよりも先に実務適用していた。ch.8が扱う「回帰前の前処理」と「回帰時の正則化」に加えて、「回帰前の次元削減」という第3の対処法が別ソースから確認できる(Source: [[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 8 機械学習のモデルを解釈する]] §8.3のコラム, [[主成分分析]]の横断的知見)。
- **多重共線性は線形回帰の係数だけでなく、決定木アンサンブルのFeature Importanceも歪める**: ch.8は、ランダムフォレストが各決定木で特徴量をランダムに選択して育てるため、`OverTime_Yes`と`OverTime_No`のような多重共線性を持つ特徴量群でFeature Importanceの値が分散し過小評価されることを、MonthlyIncomeを10列複製する実験で実証している。線形回帰(係数の発散)とランダムフォレスト(重要度の分散)は、多重共線性がもたらす影響の現れ方が異なる(発散 対 過小評価)点で対照的である(Source: [[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 8 機械学習のモデルを解釈する]] §8.7)。
## 未解決の問い
- ESL第3章の残差ノルムに基づく分散拡大(式3.29)と、ランダムフォレストのFeature Importanceの分散(ch.8 §8.7)は、どちらも「多重共線性の影響」と呼ばれるが、数学的に同一の機序から導けるか、それとも別の機序として扱うべきか。両ソースを突き合わせただけでは判定できない。
- 主成分分析による次元削減(Handbook of Software Reliability Engineering)とOne-Hot Encodingのdrop_first・正則化つき回帰(ch.8)は、どちらも多重共線性への対処だが、解釈可能性を保ったまま次元削減する場合とカテゴリ変数のまま前処理する場合とで、実務上どちらが優先されるべきかの判断基準は本ソースでは扱われていない。
## 関連
- source: [[@2021__OReillyJapan__仕事ではじめる機械学習 - Chapter 8 機械学習のモデルを解釈する]](§8.3, §8.7) / [[@2009__Springer__The Elements of Statistical Learning - Chapter 3 Linear Methods for Regression]](§3.2.3)
- concept: [[予測モデルの解釈手法]](解釈を歪める主要因として参照) / [[正則化]](Lasso/Ridge/ElasticNetによる対処) / [[主成分分析]](次元削減による対処の系譜) / [[アンサンブル学習]](Feature Importanceが受ける影響) / [[決定木]]
- entity: [[scikit-learn]]
## 出典
- 有賀康顕・中山心太・西林孝, 『仕事ではじめる機械学習 第2版』, オライリー・ジャパン, 2021, 第8章, §8.3, §8.7.
- [[@2009__Springer__The Elements of Statistical Learning - Chapter 3 Linear Methods for Regression]] §3.2.3.