疫学と医療統計学と遺伝学と時々、大学院生活

疫学を専門とする大学院生の研究に関する備忘録的ページ。

リッジ回帰による多重共線性の問題回避について

今回は、リッジ回帰によって多重共線性の問題を回避できることを簡単にまとめておきます(わかりやすくまとめたつもりです)。

先日(4/28)の記事で紹介した『リッジ回帰を用いた異常検知』で、「リッジ回帰は、多重共線性の問題を回避できる」という性質について
学習しました。それってどういうことなのか、簡単に整理しておきたいと思います。
jojoshin.hatenablog.com

1. 多重共線性とは(multicolinearity)

多重共線性とは、モデル内の独立変数が他の独立変数と相関しているときに起こる状態です。このように関連がある変数同士がモデルに含まれると、推定値の計算が不安定になることが知られています。

2. 多重共線性の問題って実際のところ何?

そもそも最小二乗法の解はこのように表すことができます。
{ \displaystyle\hat{\alpha} ={ \lbrack XX^{\mathrm{T}} \rbrack}^{-1} Xy}

ただし、多重共線性がある場合には、{ \displaystyle{ \lbrack XX^{\mathrm{T}} \rbrack}^{-1}} の計算が難しくなる。これを説明するために今回は3×3の行列である{ \displaystyle{X}}を用いる。

{ \displaystyle{X}}は1つ目の変数{ \displaystyle{x}_1}と2つ目の変数{ \displaystyle{x}_2}、が{ \displaystyle{x}_2 = 2{x}_1}となっていることを想定する。3つ目の変数{ \displaystyle{x}_3}は特に関連のない変数を想定している。

{ \displaystyle
  X = \left(
    \begin{array}{ccc}
      1 & 2 & 3 \\
      1 & 2 & 6 \\
      1 & 2 & 1
    \end{array}
  \right)
}

{ \displaystyle
  X^{\mathrm{T}} = \left(
    \begin{array}{ccc}
      1 & 1 & 1 \\
      2 & 2 & 2 \\
      3 & 6 & 1
    \end{array}
  \right)
}

{ \displaystyle
XX^{\mathrm{T}} = 
\left(
\begin{array}{ccc}
      1 & 2 & 3 \\
      1 & 2 & 6 \\
      1 & 2 & 1
\end{array} 
\right) 
\left(  
\begin{array}{ccc}
      1 & 1 & 1 \\
      2 & 2 & 2 \\
      3 & 6 & 1
\end{array}
\right)
}

これを計算すると、

{ \displaystyle
XX^{\mathrm{T}} = 
\left(
\begin{array}{ccc}
      14 & 23 & 8 \\
      23 & 41 & 11 \\
      8 & 11 & 6
\end{array} 
\right) 
}

このようになります。逆行列の計算ですが、{ \displaystyle XX^{\mathrm{T}} =A}とすると、下記のようになります。
{ \displaystyle
A^{-1} = 
\frac{1}{detA}
\left(
\begin{array}{ccc}
      a_{22}a_{33}-a_{23}a_{32} & a_{13}a_{31}-a_{12}a_{33} & a_{12}a_{23}-a_{13}a_{22} \\
      a_{23}a_{31}-a_{21}a_{33} & a_{11}a_{33}-a_{13}a_{31} & a_{13}a_{21}-a_{11}a_{23} \\
      a_{21}a_{32}-a_{22}a_{31} & a_{12}a_{31}-a_{11}a_{32} & a_{11}a_{22}-a_{12}a_{21}
\end{array} 
\right) 
}

ここで、{ \displaystyle detA=a_{11}a_{22}a_{33}+a_{21}a_{32}a_{13}+a_{31}a_{12}a_{23}-a_{11}a_{32}a_{23}-a_{31}a_{22}a_{13}-a_{21}a_{12}a_{33}}を元に、{ \displaystyle detA}を計算してみると、

{ \displaystyle 
\begin{eqnarray*}
  detA & = & 3444+ 2024 + 2024 - 1694 - 2624 - 3174 \\
  & = & 0
\end{eqnarray*}
}

となることがわかる。
これが示すように、多重共線性があると、逆行列の計算の部分で、いわゆる「ゼロ割」(分母に0が来る)問題が発生する。

3. リッジ回帰の登場

ここでリッジ回帰の登場です。リッジ回帰とは、正則化回帰(このネーミングがミソ)の一つであり、正則化項を付け加えることでこの多重共線性の問題を解決することが知られています。

リッジ回帰では、通常の最小二乗法の解とはわずかに異なり、
{ \displaystyle\hat{\alpha}_{ridge} ={ \lbrack XX^{\mathrm{T}} +{\lambda}I \rbrack}^{-1} Xy}
とある定数の{\displaystyle {\lambda}}をかけた単位行列{\displaystyle I}を足して表す。

早速、今回の例で考えると、
{ \displaystyle
XX^{\mathrm{T}} = 
\left(
\begin{array}{ccc}
      14 & 23 & 8 \\
      23 & 41 & 11 \\
      8 & 11 & 6
\end{array} 
\right) 
}

でしたから、ここに{\displaystyle {\lambda}=3}として、

{ \displaystyle
{\lambda}I = 
\left(
\begin{array}{ccc}
      3 & 0 & 0 \\
      0 & 3 & 0 \\
      0 & 0 & 3
\end{array} 
\right) 
}

を足し合わせると、

{ \displaystyle
XX^{\mathrm{T}} + {\lambda}I = 
\left(
\begin{array}{ccc}
      17 & 23 & 8 \\
      23 & 44 & 11 \\
      8 & 11 & 9
\end{array} 
\right) 
}

となるので、ここで{ \displaystyle det(XX^{\mathrm{T}} + {\lambda}I )} を計算すると、

{ \displaystyle 
\begin{eqnarray*}
  detA & = & 6732+ 2024 + 2024 - 2057 - 2816 - 4761 \\
  & = & 1146
\end{eqnarray*}
}

となるので、多重共線性があっても係数を計算可能になることがわかります。

逆行列が存在する行列を「正則」という。「正則化」っていうのはこういう場合のみだけでなく、最適化問題の解を正しく求められるようにすることのようです。今回の例で言えば、「正則化」を「逆行列を存在するようにすること」=「{ \displaystyle detA \neq 0}」って捉えて良いのかな。そうじゃないと、ゼロ割問題などで係数の推定が不安定になってしまうので、、、

最後に

今回は多重共線性の問題とその解決策としてのリッジ回帰の仕組みについて簡単にまとめましたが、非常にすっきり理解できたと個人的には思っています。普段数式を使用する機会が少ないので、表記・表現等に間違いありましたら、ご指摘頂けると助かります。


20170501
RF