からっぽのしょこ

読んだら書く!書いたら読む!同じ事は二度調べ(たく)ない

分散共分散行列と相関行列の関係の導出

はじめに

 機械学習で登場する確率分布について色々な角度から理解したいシリーズです。

 この記事では、分散共分散行列と相関行列を変換する計算式を導出します。

【前の内容】

www.anarchive-beta.com

【実装編】

www.anarchive-beta.com

【他の記事一覧】

www.anarchive-beta.com

【この記事の内容】

分散共分散行列と相関行列の関係の導出

 分散共分散行列(Variance–Covariance Matrix)と相関行列(Correlation Matrix)の関係を式で確認します。

分散共分散行列と相関行列の定義

 まずは、分散共分散行列と相関行列の定義を確認します。

 分散共分散行列は、$D \times D$の正定値行列で定義されます。

$$ \boldsymbol{\Sigma} = \begin{pmatrix} \sigma_1^2 & \sigma_{1,2} & \cdots & \sigma_{1,D} \\ \sigma_{2,1} & \sigma_2^2 & \cdots & \sigma_{2,D} \\ \vdots & \vdots & \ddots & \vdots \\ \sigma_{D,1} & \sigma_{D,2} & \cdots & \sigma_D^2 \\ \end{pmatrix} $$

 $D$次元ベクトルの変数を$\mathbf{x} = (x_1, x_2, \cdots, x_D)^{\top}$とすると、$\sigma_d$は$x_d$の標準偏差、$\sigma_d^2 = \sigma_{d,d}$は$x_d$の分散、$\sigma_{i,j} = \sigma_{j,i}$は$x_i, x_j$の共分散です。

$$ \begin{aligned} \mathrm{s}[x_d] &= \sigma_d \\ \mathbb{V}[x_d] &= \sigma_d^2 \\ \mathrm{Cov}[x_i, x_j] &= \sigma_{i,j} \end{aligned} $$

 1変数の共分散は分散になります。

$$ \mathbb{V}[x_d] = \mathrm{Cov}[x_d, x_d] = \sigma_{d,d} = \sigma_d^2 $$

 共分散を各変数の標準偏差で割ると相関係数になります。

$$ \rho_{i,j} = \frac{\sigma_{i,j}}{\sigma_i \sigma_j} $$

 1変数の相関係数は1になります。

$$ \rho_{d,d} = \frac{\sigma_d^2}{\sigma_d \sigma_d} = 1 $$

 $D \times D$の相関係数を並べた行列を相関行列と言います。

$$ \mathbf{P} = \begin{pmatrix} \rho_{1,1} & \rho_{1,2} & \cdots & \rho_{1,D} \\ \rho_{2,1} & \rho_{2,2} & \cdots & \rho_{2,D} \\ \vdots & \vdots & \ddots & \vdots \\ \rho_{D,1} & \rho_{D,2} & \cdots & \rho_{D,D} \end{pmatrix} = \begin{pmatrix} 1 & \rho_{1,2} & \cdots & \rho_{1,D} \\ \rho_{2,1} & 1 & \cdots & \rho_{2,D} \\ \vdots & \vdots & \ddots & \vdots \\ \rho_{D,1} & \rho_{D,2} & \cdots & 1 \end{pmatrix} $$

 定義より$\rho_{i,j} = \rho_{j,i}$なので、対称行列です。対角成分は1になります。

 ここまでで、分散共分散行列と相関行列の各成分について確認しました。

分散共分散行列と相関行列の変換

 次は、分散共分散行列と相関行列を変換する計算式を確認します。

 $D$個の標準偏差$\sigma_d$を対角成分とする対角行列を$\mathbf{A}$とします。

$$ \mathbf{A} = \begin{pmatrix} \sigma_1 & 0 & \cdots & 0 \\ 0 & \sigma_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \sigma_D \end{pmatrix} $$

 分散共分散行列$\boldsymbol{\Sigma}$は、相関行列$\mathbf{P}$の左右から$\mathbf{A}$を掛けて求められます。

$$ \mathbf{A} \mathbf{P} \mathbf{A} = \begin{pmatrix} \sigma_1 & 0 & \cdots & 0 \\ 0 & \sigma_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \sigma_D \end{pmatrix} \begin{pmatrix} \rho_{1,1} & \rho_{1,2} & \cdots & \rho_{1,D} \\ \rho_{2,1} & \rho_{2,2} & \cdots & \rho_{2,D} \\ \vdots & \vdots & \ddots & \vdots \\ \rho_{D,1} & \rho_{D,2} & \cdots & \rho_{D,D} \end{pmatrix} \begin{pmatrix} \sigma_1 & 0 & \cdots & 0 \\ 0 & \sigma_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \sigma_D \end{pmatrix} $$

 相関行列の各成分(相関係数)を定義式$\rho_{i,j} = \frac{\sigma_{i,j}}{\sigma_i \sigma_j}$の右辺の形に置き換えて、行列の積を計算します。

$$ \begin{aligned} \mathbf{A} \mathbf{P} \mathbf{A} &= \begin{pmatrix} \sigma_1 & 0 & \cdots & 0 \\ 0 & \sigma_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \sigma_D \end{pmatrix} \begin{pmatrix} \frac{\sigma_1^2}{\sigma_1 \sigma_1} & \frac{\sigma_{1,2}}{\sigma_1 \sigma_2} & \cdots & \frac{\sigma_{1,D}}{\sigma_1 \sigma_D} \\ \frac{\sigma_{2,1}}{\sigma_2 \sigma_1} & \frac{\sigma_2^2}{\sigma_2 \sigma_2} & \cdots & \frac{\sigma_{2,D}}{\sigma_2 \sigma_D} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\sigma_{D,1}}{\sigma_D \sigma_1} & \frac{\sigma_{D,2}}{\sigma_D \sigma_2} & \cdots & \frac{\sigma_D^2}{\sigma_D \sigma_D} \end{pmatrix} \begin{pmatrix} \sigma_1 & 0 & \cdots & 0 \\ 0 & \sigma_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \sigma_D \end{pmatrix} \\ &= \begin{pmatrix} \frac{\sigma_1 \sigma_1^2}{\sigma_1 \sigma_1} & \frac{\sigma_1 \sigma_{1,2}}{\sigma_1 \sigma_2} & \cdots & \frac{\sigma_1 \sigma_{1,D}}{\sigma_1 \sigma_D} \\ \frac{\sigma_2 \sigma_{2,1}}{\sigma_2 \sigma_1} & \frac{\sigma_2 \sigma_2^2}{\sigma_2 \sigma_2} & \cdots & \frac{\sigma_2 \sigma_{2,D}}{\sigma_2 \sigma_D} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\sigma_D \sigma_{D,1}}{\sigma_D \sigma_1} & \frac{\sigma_D \sigma_{D,2}}{\sigma_D \sigma_2} & \cdots & \frac{\sigma_D \sigma_D^2}{\sigma_D \sigma_D} \end{pmatrix} \begin{pmatrix} \sigma_1 & 0 & \cdots & 0 \\ 0 & \sigma_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \sigma_D \end{pmatrix} \\ &= \begin{pmatrix} \frac{\sigma_1^2}{\sigma_1} & \frac{\sigma_{1,2}}{\sigma_2} & \cdots & \frac{\sigma_{1,D}}{\sigma_D} \\ \frac{\sigma_{2,1}}{\sigma_1} & \frac{\sigma_2^2}{\sigma_2} & \cdots & \frac{\sigma_{2,D}}{\sigma_D} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\sigma_{D,1}}{\sigma_1} & \frac{\sigma_{D,2}}{\sigma_2} & \cdots & \frac{\sigma_D^2}{\sigma_D} \end{pmatrix} \begin{pmatrix} \sigma_1 & 0 & \cdots & 0 \\ 0 & \sigma_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \sigma_D \end{pmatrix} \\ &= \begin{pmatrix} \frac{\sigma_1^2 \sigma_1}{\sigma_1} & \frac{\sigma_{1,2} \sigma_2}{\sigma_2} & \cdots & \frac{\sigma_{1,D} \sigma_D}{\sigma_D} \\ \frac{\sigma_{2,1} \sigma_1}{\sigma_1} & \frac{\sigma_2^2 \sigma_2}{\sigma_2} & \cdots & \frac{\sigma_{2,D} \sigma_D}{\sigma_D} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\sigma_{D,1} \sigma_1}{\sigma_1} & \frac{\sigma_{D,2} \sigma_2}{\sigma_2} & \cdots & \frac{\sigma_D^2 \sigma_D}{\sigma_D} \end{pmatrix} \\ &= \begin{pmatrix} \sigma_1^2 & \sigma_{1,2} & \cdots & \sigma_{1,D} \\ \sigma_{2,1} & \sigma_2^2 & \cdots & \sigma_{2,D} \\ \vdots & \vdots & \ddots & \vdots \\ \sigma_{D,1} & \sigma_{D,2} & \cdots & \sigma_D^2 \\ \end{pmatrix} = \boldsymbol{\Sigma} \end{aligned} $$

 行列の積の計算において、各成分は行番号と列番号に対応する次元の項のみが残り、他の項は0によって消えてしまいます。よって、各相関係数に対応した標準偏差が掛けられて分母が打ち消され、分散または共分散になります。

 続いて、$D$個の標準偏差$\sigma_d$の逆数$\frac{1}{\sigma_d} = \sigma_d^{-1}$を対角成分とする対角行列を$\mathbf{B}$とします。

$$ \mathbf{B} = \begin{pmatrix} \frac{1}{\sigma_1} & 0 & \cdots & 0 \\ 0 & \frac{1}{\sigma_2} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \frac{1}{\sigma_D} \end{pmatrix} $$

 相関行列$\mathbf{P}$は、分散共分散行列$\boldsymbol{\Sigma}$の左右から$\mathbf{B}$を掛けて求められます。

$$ \begin{aligned} \mathbf{B} \boldsymbol{\Sigma} \mathbf{B} &= \begin{pmatrix} \frac{1}{\sigma_1} & 0 & \cdots & 0 \\ 0 & \frac{1}{\sigma_2} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \frac{1}{\sigma_D} \end{pmatrix} \begin{pmatrix} \sigma_1^2 & \sigma_{1,2} & \cdots & \sigma_{1,D} \\ \sigma_{2,1} & \sigma_2^2 & \cdots & \sigma_{2,D} \\ \vdots & \vdots & \ddots & \vdots \\ \sigma_{D,1} & \sigma_{D,2} & \cdots & \sigma_D^2 \\ \end{pmatrix} \begin{pmatrix} \frac{1}{\sigma_1} & 0 & \cdots & 0 \\ 0 & \frac{1}{\sigma_2} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \frac{1}{\sigma_D} \end{pmatrix} \\ &= \begin{pmatrix} \frac{\sigma_1^2}{\sigma_1} & \frac{\sigma_{1,2}}{\sigma_1} & \cdots & \frac{\sigma_{1,D}}{\sigma_1} \\ \frac{\sigma_{2,1}}{\sigma_2} & \frac{\sigma_2^2}{\sigma_2} & \cdots & \frac{\sigma_{2,D}}{\sigma_2} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\sigma_{D,1}}{\sigma_D} & \frac{\sigma_{D,2}}{\sigma_D} & \cdots & \frac{\sigma_D^2}{\sigma_D} \end{pmatrix} \begin{pmatrix} \frac{1}{\sigma_1} & 0 & \cdots & 0 \\ 0 & \frac{1}{\sigma_2} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \frac{1}{\sigma_D} \end{pmatrix} \\ &= \begin{pmatrix} \frac{\sigma_1^2}{\sigma_1 \sigma_1} & \frac{\sigma_{1,2}}{\sigma_1 \sigma_2} & \cdots & \frac{\sigma_{1,D}}{\sigma_1 \sigma_D} \\ \frac{\sigma_{2,1}}{\sigma_2 \sigma_1} & \frac{\sigma_2^2}{\sigma_2 \sigma_2} & \cdots & \frac{\sigma_{2,D}}{\sigma_2 \sigma_D} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\sigma_{D,1}}{\sigma_D \sigma_1} & \frac{\sigma_{D,2}}{\sigma_D \sigma_2} & \cdots & \frac{\sigma_D^2}{\sigma_D \sigma_D} \end{pmatrix} \\ &= \begin{pmatrix} 1 & \rho_{1,2} & \cdots & \rho_{1,D} \\ \rho_{2,1} & 1 & \cdots & \rho_{2,D} \\ \vdots & \vdots & \ddots & \vdots \\ \rho_{D,1} & \rho_{D,2} & \cdots & 1 \end{pmatrix} = \mathbf{P} \end{aligned} $$

 こちらも、行列の積の計算において各成分に対応する次元の項のみが残り、各共分散に対応した標準偏差の逆数が掛けられ、相関係数になります。

 最後に、2つの計算を別の方法で確認します。

 対角行列の逆行列は、対角成分の逆数を対角成分とする対角行列になります。よって、$\mathbf{A}$と$\mathbf{B}$は逆行列の関係です。

$$ \mathbf{A}^{-1} = \mathbf{B} $$

 $\mathbf{A}, \mathbf{B}$の積は単位行列$\mathbf{I}$になります。

$$ \begin{aligned} \mathbf{A} \mathbf{B} &= \begin{pmatrix} \sigma_1 & 0 & \cdots & 0 \\ 0 & \sigma_2 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \sigma_D \end{pmatrix} \begin{pmatrix} \frac{1}{\sigma_1} & 0 & \cdots & 0 \\ 0 & \frac{1}{\sigma_2} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \frac{1}{\sigma_D} \end{pmatrix} \\ &= \begin{pmatrix} \frac{\sigma_1}{\sigma_1} & 0 & \cdots & 0 \\ 0 & \frac{\sigma_2}{\sigma_2} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & \frac{\sigma_D}{\sigma_D} \end{pmatrix} \\ &= \begin{pmatrix} 1 & 0 & \cdots & 0 \\ 0 & 1 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & 1 \end{pmatrix} = \mathbf{I} \end{aligned} $$

 $\mathbf{B} \mathbf{A}$についても同様です。

 先ほど確認した分散共分散行列の計算式

$$ \boldsymbol{\Sigma} = \mathbf{A} \mathbf{P} \mathbf{A} $$

について、両辺に左右から$\mathbf{B}$を掛けます。

$$ \begin{aligned} \mathbf{B} \boldsymbol{\Sigma} \mathbf{B} &= \mathbf{B} \mathbf{A} \mathbf{P} \mathbf{A} \mathbf{B} \\ &= \mathbf{I} \mathbf{P} \mathbf{I} \\ &= \mathbf{P} \end{aligned} $$

 相関行列の計算式が得られました。

 同様に、この式の両辺に左右から$\mathbf{A}$を掛けます。

$$ \begin{aligned} \mathbf{A} \mathbf{P} \mathbf{A} &= \mathbf{A} \mathbf{B} \boldsymbol{\Sigma} \mathbf{B} \mathbf{A} \\ &= \mathbf{I} \boldsymbol{\Sigma} \mathbf{I} \\ &= \boldsymbol{\Sigma} \end{aligned} $$

 分散共分散行列の計算式が得られました。

 この記事では、分散共分散行列と相関行列の関係を導出しました。次は、ユークリッド距離・マハラノビス距離との関係を導出します。

 実際に計算する方法については次の記事を参照してください。

www.anarchive-beta.com


参考文献

  • C.M.ビショップ著,元田 浩・他訳『パターン認識と機械学習 上』,丸善出版,2012年.

おわりに

 「多次元ガウス分布の定義式」の記事内の一節として書いたのですが、思いのほか行数が増えたし、確率分布以外とも絡む内容なので独立させました。

 行列計算の途中式を書くと仰々しく見えますが、D×D個の相関係数や共分散を一気に計算したいだけです。標準偏差を使った対角行列を左右から掛けると上手く定義式を再現できて嬉しい、と思うと行列計算も便利な道具なんだと思えるかもしれません。各成分の計算に注目すると、前半で確認した計算しているのが分かります。

 $\mathbf{A}, \mathbf{B}$が逆行列なことを最後に気付きました。最初から知っていたらもう少し理解が早かったのですが。それと、真の?母?分散共分散行列や相関行列はギリシャ文字$\sigma, \boldsymbol{\Sigma}, \rho, \mathbf{P}$で、標本?だとアルファベット$s, \mathbf{S}, r, \mathbf{R}$で表現するらしいことも知りませんでした。
 ところで、この記事で$\mathbf{A}, \mathbf{B}$で表した行列に適当な文字って何でしょうか?予約語とかよく知らないので、結構悩みます。

【次の内容】

www.anarchive-beta.com