主成分分析と固有値問題の関係を解説!固有値問題から振り返る!

こんにちは!
IT企業に勤めて、約2年間でデータサイエンティストになったごぼちゃん(@XB37q)です!

このコラムでは、主成分分析における主成分の見つけ方を紹介しています。
復習として、固有値と固有ベクトルの概念も振り返っています。

固有値と固有ベクトルの概念

固有値と固有ベクトルのイメージ
固有値と固有ベクトルのイメージ

ある行列Aに対して、ランダムに作成したベクトルをかけた場合、通常はベクトルの向きが変わります。
しかし、あるベクトル$u$をかけた場合、3$u$と長さが3倍になり、ベクトルの向きが変わらない場合があります。
このように、行列Aに対して、あるベクトルをかけた場合に、元のベクトルの向きが変わらず、大きさだけが変わる関係を表すために、固有値、固有ベクトルという概念が存在します。

固有値と固有ベクトルの定義

正方行列$A$に対して、スカラー$λ$とベクトル$u$が存在し、下記を満たす場合、$λ$を$A$の固有値、$u$を固有値$λ$の固有ベクトルと言います。
正方行列とは、2×2、3×3など、行と列が同じ行列のことを指します。

$$ Au = λu $$

$$ u \neq 0$$

固有値λと固有ベクトルuの求め方

行列Aに対して、固有値と固有ベクトルが分からない場合、どのようにすれば固有ベクトルを見つけることが出来るのかを紹介します。
$ A = \begin{bmatrix} 2&1 \\ 1&2 \end{bmatrix} $ に対して、定義より

$$ \begin{bmatrix} 2&1 \\ 1&2 \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} = λ \begin{bmatrix} x \\ y \end{bmatrix} $$

$$ \begin{bmatrix} x \\ y \end{bmatrix} \neq 0$$

上記を満たすような$x,y,λ$を求めることにより、固有値と固有ベクトルを求めることができます。
しかし、単純に$(x,y,λ)$の3変数の連立方程式を解こうとすると、解の数に方程式の数が不足しているため、解くことは出来ません。

そこで、線形対数の知識を使い、先ほどの式を次のように工夫を行います。

$$ 0 = Au – λu = Au – (λE)u = (A – λE)u = \begin{bmatrix} 2-λ&1 \\ 1&2-λ \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} $$

$$ \begin{bmatrix} 2-λ&1 \\ 1&2-λ \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix} = \begin{bmatrix} 0&0 \end{bmatrix} $$

$$ \begin{bmatrix} x \\ y \end{bmatrix} \neq 0$$

そして、上記の式が$x,y$の解を持つために、係数行列$ \begin{bmatrix} 2-λ&1 \\ 1&2-λ \end{bmatrix} $が逆行列を持たない値である必要があります。

固有値の求め方

係数行列が逆行列を持たない場合、下記の式が成り立つので、式を解くことにより固有値を求めることができます。

$$ |Au – λu| = \begin{vmatrix} 2-λ&1 \\ 1&2-λ \end{vmatrix} =0 $$

$$ \begin{vmatrix} 2-λ&1 \\ 1&2-λ \end{vmatrix} = (2-λ)^2 -1 = (1-λ)(3-λ) $$

$$ λ =1,3 $$

固有ベクトルの求め方

次に、先ほど求めた固有値ごとに固有ベクトルを求めます。
固有値$λ = 1$の場合、

$$ A – E = \begin{vmatrix} 1&1 \\ 1&1 \end{vmatrix} \begin{bmatrix} x \\ y \end{bmatrix} =0 $$

$$ x+y = 0$$

$$ \begin{bmatrix} x \\ y \end{bmatrix} = t\begin{bmatrix} 1 \\ -1 \end{bmatrix} ,(t \neq 0) $$

個有値$λ = 3$の場合、

$$ A – 3E = \begin{vmatrix} -1&1 \\ 1&-1 \end{vmatrix} \begin{bmatrix} x \\ y \end{bmatrix} =0 $$

$$ -x+y = 0$$

$$ \begin{bmatrix} x \\ y \end{bmatrix} = t\begin{bmatrix} 1 \\ 1 \end{bmatrix} ,(t \neq 0) $$

この計算によって、$t$を変えることにより、固有ベクトルは∞に存在します。
そのため、固有ベクトルは固有値ごとに代表的なものを1つだけ求めれば十分です。
代表的な固有ベクトルとして、$t=1$の場合を代表的な固有ベクトルとすることが一般的です。

主成分分析での固有値問題

主成分分析は共分散行列の固有値問題を解くことにより、データの主成分を見つけます。
また、主成分分析はデータにおける分散が最大の軸を見つけるという条件付の最大最小問題とも解釈できます。
条件は、軸同士が直交しており、p次元の軸の長さ=1という条件です。

それでは主成分を見つけるための手順を紹介していきます。
まず、主成分とは、分散が最大になる方向へ射影するベクトルです。
主成分を見つけることは、データを無相関化することと同じことになるため、共分散行列を求める必要がありです。

$$ \sum = Var\{\bar{X}\}=  \frac{1}{N} \bar{X} ^T \bar{X} $$

$N$個のデータ $\bar{X} =x – \bar{X} $をある係数ベクトル$ a_{j} $を用いて線形変換することを考えると、

$$ s_{i} = \bar{X} a_{j} $$

この変換後のデータの分散は、下記のようになります。

$$ Var\{ s_{i} \}= \frac{1}{N} s_{i} ^T s_{i} = \frac{1}{N} (\bar{X}a_{j} )^T (\bar{X}a_{j} ) = \frac{1}{N} a_{j} ^T \bar{X} ^T \bar{X}a_{j} = a_{j}^T  Var\{ \bar{X} \}a_{j} $$  

この変換後のデータの分散が最大となる軸を見つけることができれば、それが第一主成分となります。

つまり、係数ベクトル $ a_{j} $ のノルムを1に制約したラグランジュ関数

$$ E( a_{j} )= a_{j} ^T Var\{ \bar{X} \} a_{j} – λ( a_{j} ^T a_{j}  -1) $$

を最大にする $ a_{j} $ を見つけることになります。
$λ$はラグランジュ未定乗数です。
$ a_{j} $ で微分して0とおくことにより、

$$ \frac{(∂E( a_{j} ))}{(∂ a_{j} )}  = 2Var\{ \bar{X} \} a_{j} -2λ a_{j} = 0 $$

$$ Var\{ \bar{X} \} a_{j} = λ a_{j} $$

$$ \sum a_{j} = λ a_{j} $$

が得られ、これは元のデータの共分散行列に関する固有値問題をとくことにより、分散が最大となる軸 $a_{j} $が得られることを表します。
固有値問題とは、線形変換の固有値 or 固有ベクトルと求める問題のことです。

主成分の分散と寄与率の関係性

先ほどの共分散行列を解いて得られる固有値を$λ_{1} \geq λ_{2} \geq … \geq λ_{d} $とし、固有値に対応する固有ベクトルを $ a_{1},a_{2},,,a_{d} $とします。
共分散行列は実対象行列であるため、固有ベクトルは相互に直交します。

$$\begin{eqnarray}a_{i}^T a_{i} =\begin{cases} 1&(i = j) \\ 0&(i \neq j) \end{cases} \end{eqnarray}$$

元データの共分散行列は$d×d$の行列のため、得られる非ゼロ固有値の数は共分散行列のランクできまり、最大$d$になります。
また、最大固有値に対応する固有ベクトルで線形変換した特徴の分散は、下記の式で求められ、最大固有値に一致します。

$$ Var\{ s_{1}\} = a_{1}^T Var\{ \bar{X} a_{1}\} = λ_{1} a_{1}^T a_{1} = λ_{1} $$

上記の式を用いて、最大固有値に対応する固有ベクトルで線形変換された特徴量を第一主成分といい、k番目の固有値に対応する固有ベクトルで変換された特徴量を第k主成分といいます。

$$V_{total} = \displaystyle \sum_{i=1}^d λ_{i}$$

この変換された特徴量の分散は固有値に一致するので、全分散量は下記のようになり、元データのもつ全分散量と一致します。
第k主成分の分散の全分散に対する割合を、第k成分の寄与率といいます。

$$C_{k} = \frac{λ_{k}}{V_{total}}$$
これは、元データをどれくらい表している主成分なのかを表しています。

累積寄与率は下記になります。

$$r_{k} = \frac{ \displaystyle \sum_{i=1}^k λ_{i}}{V_{total}}$$

まとめ

  • 固有値と固有ベクトル
    • 行列Aに対して、あるベクトル$u$をかけた場合に、元のベクトルの向きが変わらず、大きさだけが変わる場合、ベクトル$u$を児湯ベクトル、大きさを$λ$を$A$の固有値、$u$を固有値$λ$の固有ベクトルという
    • 固有ベクトルは∞に求めることができるため、固有値ごとに代表的なものを1つだけ求めれば十分
  • 主成分分析
    • 共分散行列の固有値問題を解くことにより、データの主成分を見つける
    • 主成分とは分散が最大になる方向へ射影するベクトル
    • データを無相関化することと同じことになるため、共分散行列を求める
    • 変換後のデータの分散が最大となる軸を見つけることができれば、それが第一主成分
    • 元のデータの共分散行列に関する固有値問題をとくことにより、分散が最大となる軸 $a_{j} $が得られる
    • 分散行列は実対象行列であるため、固有ベクトルは相互に直交
    • 最大固有値に対応する固有ベクトルで線形変換された特徴量を第一主成分といい、k番目の固有値に対応する固有ベクトルで変換された特徴量を第k主成分
    • 第k主成分の分散の全分散に対する割合を、第k成分の寄与率

参考書籍