機械学習に詳しくなりたいブログ

機械学習や数学について勉強した内容を中心に書きます。100%趣味です。記事は数学的に厳密でなかったり誤りを含んでいるかもしれません。ご指摘頂ければ幸いです。

分散共分散行列の半正定値性

共分散行列\mathbf{\Sigma}は半正定値行列であることを確認します。

共分散行列\mathbf{\Sigma}ij成分を\Sigma_{ij}を考えると、共分散行列の定義(参考:多変量正規分布)より、


\begin{eqnarray*}
\Sigma_{ij} &=&\mathrm{Cov}(X,Y) \tag{1}\\
 &=& E[(X_{i}-E[X_{i}])(X_{j}-E[X_{j}])] \tag{2} \\ 
\displaystyle  &=& \frac{1}{N}\sum_{k=1}^{N} (x_{i}^{(k)}-E[X_{i}])(x_{j}^{(k)}-E[X_{j}]) \tag{3} \\ 

\end{eqnarray*}

です。 ここで、y_{i}^{(k)} = x_{i}^{(k)}-E[X_{i}]とし、\mathbf{y}_{i} = (y_{i}^{(1)},\cdots,y_{i}^{(N)})^{T} とすれば、


\displaystyle \Sigma_{ij} = \frac{1}{N} \mathbf{y}_{i}^{T}\mathbf{y}_{j} \tag{4}

と書けます。

したがって共分散行列は、式(4)より、


\begin{eqnarray*}
\displaystyle \mathbf{\Sigma} &=& \frac{1}{N} \left(
    \begin{array}{ccc}
      \mathbf{y}_{1}^{T}\mathbf{y}_{1} & \cdots & \mathbf{y}_{1}^{T}\mathbf{y}_{N}  \\
        \vdots  &   \ddots &  \vdots   \\
       \mathbf{y}_{N}^{T}\mathbf{y}_{1}    & \cdots & \mathbf{y}_{N}^{T}\mathbf{y}_{N} 
    \end{array}
  \right) \tag{5} \\
&=&  \left(
    \begin{array}{c}
      \mathbf{y}_{1}^{T} \\
       \vdots  \\
      \mathbf{y}_{n}^{T}
    \end{array}
  \right)
(\mathbf{y}_{1},\cdots,\mathbf{y}_{n})  
 \tag{6}
\end{eqnarray*}

と書けます。ここで\mathbf{Y}=(\mathbf{y}_{1},\cdots,\mathbf{y}_{n})  とすれば、


\displaystyle \mathbf{\Sigma} =\frac{1}{N} \mathbf{Y}^{T}\mathbf{Y} \tag{7}

です。

ここで任意のベクトル\mathbf{z}に対する二次形式を考え、転置行列の定理を使えば、


\displaystyle \frac{1}{N} \mathbf{z}^{T} \mathbf{Y}^{T}\mathbf{Y}\mathbf{z} = \frac{1}{N} (\mathbf{Y}\mathbf{z})^{T}\mathbf{Y}\mathbf{z} \ge 0 \tag{8}

です。二次形式が\ge 0ですので、定義より半正定値行列であることがわかります。(参考:正定値行列

2019年12月の振り返り

2019年は相場が戻ってくれてよかった。2018年の投信マイナスが311万だったので、ちょうど相殺できた。これでようやく2018年初と同じ位置なのだけど、毎月積み立てで投資しているので、投資額は当時よりけっこう膨らんでいる。2018年と同じレベルの下げがくれば300万の評価損では済まなくなりますが、上がれば爆発力も増しているということで。Web収入は2018年から少しダウンですがこの水準なら満足です。

19年12月の実績
Web収入 投信 前月比評価損益
738,815円 337,435円 1,076,250円
19年の累積
Web収入 投信評価損益 個別株
7,899,607‬円 3,148,723円 705,618円 11,753,948‬円

正定値行列の逆行列

\mathbf{A}が対称行列なら、対称行列の対角化より、


\mathbf{U}^{T} \mathbf{A} \mathbf{U} =  \mathbf{\Lambda} \tag{1}

によって対角化できます。ここで、\mathbf{U}は固有ベクトルを並べた直交行列、\mathbf{\Lambda}は固有値\lambda_{i}を対角成分に持つ対角行列です。また、\mathbf{U}は直交行列で\mathbf{U}\mathbf{U}^{T}=\mathbf{I}ですから、


\mathbf{A}  =  \mathbf{U}\mathbf{\Lambda}\mathbf{U}^{T} \tag{2}

です。

式(2)より、\mathbf{A}の逆行列を考えると、逆行列の定理より


\begin{eqnarray*}
\mathbf{A}^{-1} &=& (\mathbf{U}\mathbf{\Lambda}\mathbf{U}^{T})^{-1}\tag{3} \\
&=& (\mathbf{U}^{T})^{-1}\mathbf{\Lambda}^{-1} \mathbf{U}^{-1} \tag{4}
\end{eqnarray*}

です。ここで直交行列の逆行列より、\mathbf{U}^{T}=\mathbf{U}^{-1}ですから、


\mathbf{A}^{-1}  =  \mathbf{U}\mathbf{\Lambda}^{-1}\mathbf{U}^{T} \tag{5}

です。対称行列の逆行列より、\mathbf{A}^{-1}もまた対称行列です。したがって、式(5)によって\mathbf{A}^{-1}が対角化されていることになります。つまり\mathbf{\Lambda}^{-1}\mathbf{A}^{-1}の固有値を対角成分に並べた行列であり、\mathbf{\Lambda}\mathbf{\Lambda}^{-1}=\mathbf{I}ですから


\mathbf{\Lambda}^{-1} =
\left(
    \begin{array}{ccc}
      \frac{1}{\lambda_1} &  & 0 \\
       &   \ddots &  \\
       0   &  & \frac{1}{\lambda_{n}}
    \end{array}
  \right) \tag{6}

となります。

正定値行列とは固有値が全て正である行列でした。したがって、\lambda_{i} \gt 0なら、\frac{1}{\lambda}_{i} \gt 0ですから、\mathbf{A}が正定置行列なら\mathbf{A}^{-1}もまた正定値行列となります。

正定値行列

全ての固有値が正の対称行列\mathbf{A}を正定値行列と呼びます。これは、2次形式\mathbf{x}^{T}\mathbf{A}\mathbf{x}が常に正であることと同条件です。\mathbf{A}が対称行列なら、


\mathbf{U}^{T}\mathbf{A}\mathbf{U}=\mathbf{\Lambda}\tag{1}

によって対角化できます。ここで、\mathbf{U}は固有ベクトルを並べた直交行列、\mathbf{\Lambda}は固有値を対角成分に持つ対角行列です。(参考:対称行列の対角化

ここで、


\mathbf{U}\mathbf{U}^{T}=\mathbf{I}\tag{2}

より、式(1)を変形すれば


\mathbf{A}=\mathbf{U}\mathbf{\Lambda}\mathbf{U}^{T} \tag{3}

です。式(3)より任意のベクトル\mathbf{x}に対し、


\begin{eqnarray*}
\mathbf{x}^{T}\mathbf{A}\mathbf{x} &=& \mathbf{x}^{T}\mathbf{U}\mathbf{\Lambda}\mathbf{U}^{T}\mathbf{x} \tag{4}\\
&=& \mathbf{x}^{T}\mathbf{U}\mathbf{\Lambda}(\mathbf{x}^{T}\mathbf{U})^{T} \tag{5}
\end{eqnarray*}

です。(参考:転置行列の定理

ここで、\mathbf{x}^{T}\mathbf{U}=(a_{1},\cdots,a_{n})とすれば、


\begin{eqnarray*}
式(5)&=& (a_{1},\cdots,a_{n})  \left(
    \begin{array}{ccc}
      \lambda_1 &  & 0 \\
       &   \ddots &  \\
       0   &  & \lambda_{n}
    \end{array}
  \right) 
\left(
    \begin{array}{c}
      a_{1} \\
       \vdots  \\
      a_{n}
    \end{array}
  \right) 
\tag{6}\\

&=& \sum_{i=1}^{n}\lambda_{i}a_{i}^{2} \tag{7}
\end{eqnarray*}

となります。したがって、非ゼロベクトル\mathbf{x}に対して\mathbf{x}^{T}\mathbf{A}\mathbf{x}が正なら固有値が全て正である、つまり正定値行列であるといえます。なお0を含む場合は半正定値行列と呼ばれます。