🙇‍♂️

多重共線性の除去手法まとめ

2024/09/18に公開

多重共線性って?

多重共線性(Multicollinearity)は、複数の独立変数が強い相関を持っている場合に発生します。その結果として、予測結果に悪影響を与えてくれる厄介な性質です。

例として次のような回帰モデルを考えます。

Y = β_0+β_1X_1+β_2X_2+⋯+β_nX_n+\epsilon

多重共線性が存在するとは

X_2 = \alpha_1 X_1 + \alpha_2

のような相関の高い(他の独立変数の線型結合で表せる)独立変数を持っていることをいいます。また、完全にこのような形でなくとも近似的に相関が高い場合でも多重共線性が生じます。

これにより、例えば以下の問題点を生じさせます。

  • 係数の不安定性: 変数の係数が大きく変動し、信頼性が低くなることがあります。
  • 解釈の困難さ: どの変数が結果にどのように影響を与えているかが不明瞭になります。
  • 予測値の標準誤差が大きくなる: 予測の精度が低下し、統計的に有意な結果が得られにくくなります。

多重共線性があると、回帰係数\beta_iの推定値が不安定になり、大きく変動します。係数の推定結果は、次のように分散に依存します。

Var(\hat{\beta}) = \sigma^2 (X^{T} X)^{-1}

ここで\hat{\beta}はモデルで推定された回帰係数であり、X^{T}Xは独立変数の共分散行列です。共線性が高い場合、共分散行列X^{T}Xの列が似通ってきます(線形独立でなくなる)。このような行列は縮退している、と言われ、今回では行列(X^{T}X)が逆行列を持たないか、逆行列を持っても非常に不安定になります。逆行列(X^{T}X)^{-1}が不安定になると、上式の通り推定値も不安定になってしまいます。

多重共線性の例

四季(春、夏、秋、冬)のデータを使って、1年の気温を予測しようとしているとします。

  • 春があるかどうか: 1(春)または 0(春でない)
  • 夏があるかどうか: 1(夏)または 0(夏でない)
  • 秋があるかどうか: 1(秋)または 0(秋でない)
  • 冬があるかどうか: 1(冬)または 0(冬でない)

このようなデータ表現をしたとします。

日付 気温
2023-02-14 1 0 0 0 15
2023-03-14 1 0 0 0 17
2023-03-15 1 0 0 0 13
2023-06-25 0 1 0 0 30
2023-10-15 0 0 1 0 17
2023-12-26 0 0 0 1 5

しかし、このデータは以下と同じ情報を持っています。春夏秋の全てが0であれば、冬であるという表現をしています。

日付 気温
2023-02-14 1 0 0 15
2023-03-14 1 0 0 17
2023-03-15 1 0 0 13
2023-06-25 0 1 0 30
2023-10-15 0 0 1 17
2023-12-26 0 0 0 5

1個目のデータ表現では、4つのカテゴリを表すのに、4つの列を使っています。しかし上述のように、実は3つの列(例えば春夏秋)だけで同じ情報を表すことができます。

この例では、春夏秋の列を残すのであれば、冬列はすでに提供された、同じ情報を与えてくれるだけのものになってしまい、多重共線性を発生させます。

多重共線性の除去手法

相関の高い変数の削除

多重共線性が存在する場合、その独立変数は重複している情報を持っている可能性があります。よって、独立変数同士で相関の高いものから重要度の低い変数を削除することでモデルの安定性を向上させます。

次のような回帰モデルを考えます。

Y = β_0+β_1X_1+β_2X_2+⋯+β_nX_n+\epsilon

ここで、もし X_1X_2 が非常に高い相関を持っている場合、どちらか一方(例えばX_1)を削除することで、残りの変数の影響力をより正確に評価できます。こうすることで、モデルが安定し、予測の精度が向上します

VIF値の高い変数を削除

VIFは、各独立変数が他の独立変数との間でどれだけの分散持っているかを評価する指標です。具体的には、VIFはある変数X_iを他の変数で回帰した際の決定係数R_i^2を基に計算されます。

VIFは次の式で計算されます。

VIF(X_i) = \frac{1}{1-R_i^2}

ここで、R_i^2は、X_iを他の変数で回帰したときの決定係数です。VIFが高いほど、その変数は他の変数と強く相関しており、モデルの不安定性を引き起こす可能性があります。一般的に、VIFが10を超えると、多重共線性が問題とされることが多いようです。

つまり、他の独立変数X_{j \neq i}全てを使ってX_iを回帰した時の決定係数R_i^2が大きいほど、X_iは新たな情報をもたらさない(X_{j \neq i}の結合でX_iを表せてしまう)ので、多重共線性を生じさせます。

主成分分析

主成分分析(PCA)は多次元データを簡素化するための統計手法で、相関のある多くの変数を少数の「主成分」に変換します。主成分は、元の変数の線形結合で表され、データの分散を大きくするように作成されます。

元のデータが次のような形で与えられているとします。

X_1,X_2,...,X_n

これらを以下のように主成分に変換します。

Z_1 = \phi_{11}X_1+\phi_{12}X_2+⋯+\phi_{1n}X_n
Z_2 = \phi_{21}X_1+\phi_{22}X_2+⋯+\phi_{2n}X_n

ここで、主成分Z_1, Z_2が、元のデータの分散を最大にしつつ、相互に相関がないように\phi_{ij}を作ります。これによってZ_i, Z_jのそれぞれの組の相関が小さくなり、Zを使って予測した回帰は多重共線性の影響を受けなくなります。

Ridge回帰

Ridge回帰は、多重共線性を持つデータに対処するための正則化手法の1つです。通常の回帰モデルは、多重共線性があると、回帰係数が不安定になり、大きく変動することを説明しましたが、Ridge回帰では、ペナルティ項を追加して、回帰係数が不必要に大きくなるのを防ぎます。

通常の回帰の最小化問題は次のように表されます。

\min_{\beta} \sum_i^k (y_i - \beta_0 - \sum_j^n \beta_j x_{ij} )^2

Ridge回帰では、これにペナルティ項を追加します。

\min_{\beta} (\sum_i^k (y_i - \beta_0 - \sum_j^n \beta_j x_{ij} )^2 + \lambda \sum_j^n \beta_j^2 )

\lambdaは回帰係数の大きさにペナルティを課す正則化項です。この項は、係数\beta_{j}が大きくなりすぎるのを防ぎます。\lambdaが大きくなるほど、係数はより小さく抑えられます。これにより、多重共線性が存在しても、回帰係数が過度に大きくならず、モデルが安定するようになります。

まとめ

Garbage in, garbage outには気をつけましょうね〜というお話でした。

Goals Tech Blog

Discussion