yProcessingClub

すみません、許してください

多次元ホテリングのT^2法 準備編(多次元正規分布との和解)

今日も異常検知をやっていくわよ!
前回はホテリング理論(1次元編)をやったので,今回は多次元ホテリング理論をやっていきたいところだが,
その前段階として多次元正規分布との和解を果たしていくことにする.




M次元の正規分布は以下のように書ける.


\displaystyle
{\mathcal N}(\boldsymbol{\mu } , \boldsymbol{\Sigma}) = \frac{1}{\sqrt{(2 \pi)^{M}|\boldsymbol{\Sigma}|}}   \exp{ \Biggl( -\frac{1}{2} ( \boldsymbol{x}-\boldsymbol{\mu} )^T  \boldsymbol{\Sigma}^{-1} ( \boldsymbol{x}-\boldsymbol{\mu} ) \Biggr) }


記号がたくさん出てきて生きづらくなってしまったので,下の1次元正規分布と見比べることで理解あるオタクくんになっていこう.


\displaystyle
{\mathcal N}(\mu, \sigma^2) = \frac{1}{\sqrt{2 \pi {\sigma}^2}}\exp{ \Biggl( -\frac{1}{2}\frac{(x-\mu)^2}{{\sigma} ^ 2} \Biggr) }


まず,係数1/ \sqrt{(2 \pi)^{M}|\boldsymbol{\Sigma}|}と和解をしていこう.
係数はホテリング理論の異常値の計算では無視する部分なので,正直あまり気にする必要はない.
(2 \pi)^{M}の部分はM次元なのでM乗しているという理解で許してはもらえないだろうか.この辺の理解は統計検定2級取る時に本気出すので.
また,分散\sigma^2は多次元正規分布では共分散行列\boldsymbol{\Sigma}行列式に置き換えられている.
次元が多くなったので,次元間の相関関係も考慮すべきになったからである.

次に,\expの中身である.
-1/2は1次元でも多次元でも共通なので助かるわね.
次は ( \boldsymbol{x}-\boldsymbol{\mu} )^T  \boldsymbol{\Sigma}^{-1} ( \boldsymbol{x}-\boldsymbol{\mu} ) の部分だ.
\boldsymbol{\Sigma}^{-1}は共分散行列の逆行列だ.気持ちとしては共分散行列で割っているのと同じ感じ.
つまり1次元正規分布\expの中の分母の{\sigma} ^ 2と対応する.

ならば( \boldsymbol{x}-\boldsymbol{\mu} )^T  ( \boldsymbol{x}-\boldsymbol{\mu} )(x-\mu)^2と対応しているかと思うだろうが,その通りである.

具体例を挙げて考えてみよう.
N人の人間の身長体重などのデータ{\mathcal D}=\{{\boldsymbol{x}_1},  \ldots, \boldsymbol{x}_N \} を考える.


\boldsymbol{x}_n=\begin{pmatrix}
{\rm weight}_n \\
{\rm height}_n \\
{\rm age}_n \\
\vdots
\end{pmatrix}=\begin{pmatrix}
{\rm w}_n \\
{\rm h}_n \\
{\rm a}_n \\
\vdots
\end{pmatrix}

\boldsymbol{x}_nM \times 1の行列(ベクトル)であり,{\rm weight}_nn番目の人の体重を表している.


\boldsymbol{x}_1=\begin{pmatrix}
65 {\rm kg} \\
172 {\rm cm}\\
17{歳} \\
\vdots
\end{pmatrix}
といった具合である.
平均\boldsymbol{\mu}は各次元のそれぞれの平均のベクトルだ.

\boldsymbol{\mu}=\begin{pmatrix}
{\mu _{\rm w}}  \\
{\mu _{\rm h}}  \\
{\mu _{\rm a}}  \\
\vdots
\end{pmatrix}

例えば{\mu _{\rm w}}N人の体重の平均を取ることで求められる.


\displaystyle
{\mu _{\rm w}} = \frac{1}{N}\sum^{N}_{n=1} {\rm w}_n

次は( \boldsymbol{x}-\boldsymbol{\mu} )だが,これはそれぞれの平均との差を取っているだけである.


 \boldsymbol{x}-\boldsymbol{\mu} =\begin{pmatrix}
{\rm w} - {\mu _{\rm w}}  \\
{\rm h} - {\mu _{\rm h}}  \\
{\rm a} - {\mu _{\rm a}}  \\
\vdots
\end{pmatrix}

( \boldsymbol{x}-\boldsymbol{\mu} )^Tは転置だ.


( \boldsymbol{x}-\boldsymbol{\mu} )^T =\begin{pmatrix}
({\rm w} - {\mu _{\rm w}})  , ({\rm h} - {\mu _{\rm h}})  , ({\rm a} - {\mu _{\rm a}})  , \cdots
\end{pmatrix}
この操作によって1 \times M行列となる.

最後に( \boldsymbol{x}-\boldsymbol{\mu} )^T  ( \boldsymbol{x}-\boldsymbol{\mu} )だが,1 \times M行列とM \times 1行列の内積なのでサイズは1となる.


( \boldsymbol{x}-\boldsymbol{\mu} )^T  ( \boldsymbol{x}-\boldsymbol{\mu} ) = ({\rm w} - {\mu _{\rm w}} )^2 + ({\rm h} - {\mu _{\rm h}})^2 + ({\rm a} - {\mu _{\rm a}})^2 + \cdots

さて,ここまでつらつら書いてきたが,完全に理解出来ただろうか?
私も書いていて理解出来そうで理解出来なくて気絶しそうになっているが,とにかくこういうことなのだ.



さて,今まで\boldsymbol{\Sigma}^{-1}を「分散で割っているお気持ち」とぼかして書いてきたが,ここと和解しよう.
上の( \boldsymbol{x}-\boldsymbol{\mu} )^T  ( \boldsymbol{x}-\boldsymbol{\mu} ) の計算結果をそれぞれの分散で割ってみよう.


\displaystyle
\frac{({\rm w} - {\mu _{\rm w}} )^2}{{\sigma_w}^2} + \frac{({\rm h} - {\mu _{\rm h}} )^2}{{\sigma_h}^2} +\frac{({\rm a} - {\mu _{\rm a}} )^2}{{\sigma_a}^2} + \cdots \tag{1}
これを行列形式に戻してみるのだ.するとこうなる.

\begin{eqnarray}
(1) &=& ( \boldsymbol{x}-\boldsymbol{\mu} )^T \begin{pmatrix}
1/{\sigma_w}^2 & 0 & 0 & \cdots & 0\\
0 & 1/{\sigma_h}^2 & 0 & \cdots & 0\\
0 & 0 & 1/{\sigma_a}^2 & \cdots & 0\\
\vdots & \vdots & \vdots & \ddots & \vdots\\
0 & 0& 0& \ldots & 1/{\sigma_{\rm hoge}}^2 \\
\end{pmatrix}( \boldsymbol{x}-\boldsymbol{\mu} ) \\
&=& ( \boldsymbol{x}-\boldsymbol{\mu} )^T \begin{pmatrix}
{\sigma_w}^2 & 0 & 0 & \cdots & 0\\
0 & {\sigma_h}^2 & 0 & \cdots & 0\\
0 & 0 & {\sigma_a}^2 & \cdots & 0\\
\vdots & \vdots & \vdots & \ddots & \vdots\\
0 & 0& 0& \ldots & {\sigma_{\rm hoge}}^2 \\
\end{pmatrix}^{-1}( \boldsymbol{x}-\boldsymbol{\mu} )\\
&=& ( \boldsymbol{x}-\boldsymbol{\mu} )^T A^{-1}   ( \boldsymbol{x}-\boldsymbol{\mu} )
\end{eqnarray}

はぇ~と感心してしまう.こう書けることは頭の良い人が考えたので,下賤の民たる私はこの結果をありがたく使わせてもらうのみである.



さて,元の数式 ( \boldsymbol{x}-\boldsymbol{\mu} )^T  \boldsymbol{\Sigma}^{-1} ( \boldsymbol{x}-\boldsymbol{\mu} ) に大分近づいてきたわね.
ここで,行列Aは対角成分がそれぞれの分散から成る行列で,それ以外の部分が0の行列である.
それ以外の部分が0じゃない場合が共分散行列\boldsymbol{\Sigma}であり,\boldsymbol{\Sigma}の対角成分以外の成分が共分散である.


\begin{eqnarray}
\boldsymbol{\Sigma} &=&  \begin{pmatrix}
{\sigma_w}^2 & {\sigma_{wh}} & {\sigma_{wa}} & \cdots & \sigma_{w{\rm hoge}}\\
{\sigma_{hw}} & {\sigma_h}^2 & {\sigma_{ha}} & \cdots & \sigma_{h{\rm hoge}}\\
{\sigma_{aw}} & {\sigma_{ah}} & {\sigma_a}^2 & \cdots & \sigma_{a{\rm hoge}}\\
\vdots & \vdots & \vdots & \ddots & \vdots \\
{\sigma_{{\rm hoge}{w}}} & {\sigma_{{\rm hoge}{h}}} & {\sigma_{{\rm hoge}{a}}} & \ldots & {\sigma_{\rm hoge}}^2 \\
\end{pmatrix}
\end{eqnarray}

例えば{\sigma_{wh}}は体重と身長の共分散だ.

さて,対角成分のみに非ゼロの値が入っている行列であればその逆行列を求めるのは簡単であった.各成分を-1乗するだけだ.


\begin{pmatrix}

{\sigma_w}^2 & 0 & 0 & \cdots & 0\\
0 & {\sigma_h}^2 & 0 & \cdots & 0\\
0 & 0 & {\sigma_a}^2 & \cdots & 0\\
\vdots & \vdots & \vdots & \ddots & 0\\
0 & 0& 0& \ldots & {\sigma_{\rm hoge}}^2 \\
\end{pmatrix}^{-1}
=
\begin{pmatrix}
1/{\sigma_w}^2 & 0 & 0 & \cdots & 0\\
0 & 1/{\sigma_h}^2 & 0 & \cdots & 0\\
0 & 0 & 1/{\sigma_a}^2 & \cdots & 0\\
\vdots & \vdots & \vdots & \ddots & 0\\
0 & 0& 0& \ldots & 1/{\sigma_{\rm hoge}}^2 \\
\end{pmatrix}


対角以外にも成分が入っている\boldsymbol{\Sigma}逆行列は簡単には解けないが,共分散成分が入っている点を頭に入れておけば良いだろう.

さて,上で求めた\frac{({\rm w} - {\mu _{\rm w}} )^2}{{\sigma_w}^2} + \dotsに共分散を計算に付け加えると,以下のようになる.


\displaystyle
\frac{({\rm w} - {\mu _{\rm w}} )^2}{{\sigma_w}^2} -  \frac{({\rm w} - {\mu _{\rm w}} )({\rm h} - {\mu _{\rm h}} )}{{\sigma_{wh}}} - \frac{({\rm w} - {\mu _{\rm w}} )({\rm a} - {\mu _{\rm a}} )}{{\sigma_{wa}}} - \ldots\\
\displaystyle
{-} \frac{({\rm h} - {\mu _{\rm h}} )({\rm w} - {\mu _{\rm w}} )}{{\sigma_{hw}}} + \frac{({\rm h} - {\mu _{\rm h}} )^2}{{\sigma_h}^2}- \frac{({\rm h} - {\mu _{\rm h}} )({\rm a} - {\mu _{\rm a}} )}{{\sigma_{ha}}} - \ldots\\

このように共分散の項を付け加えた数式を改めて行列形式で書くと, ( \boldsymbol{x}-\boldsymbol{\mu} )^T  \boldsymbol{\Sigma}^{-1} ( \boldsymbol{x}-\boldsymbol{\mu} ) となるという話である.

行列形式と書き下した数式を行ったり来たりして逆に混乱させてしまったかもしれないが,行列形式はx^2+a xy + y^2などの数式をスッキリ書きたい場合に便利である.