主成分分析(5)

では、分散共分散行列を対角化するための直交行列を求める方法を調べていきましょう。これは線形代数学の復習になりますが、ここで述べていきます。実は、この直交行列は、対角化したい対称行列S固有ベクトルを並べたものになっています。このことから確かめていきましょう。
U^{-1}SUは対角行列でした。対角行列の固有ベクトルは1つの要素がゼロ以外(たとえば1)であとは全てゼロのベクトルであることは、試しに計算してみればすぐ分かります。

左の図では、U^{-1}SUij列の要素をs'_{ij}で表しました。このようにしてn個の固有ベクトルが考えられますが、これらは明らかに互いに直交しています。さらにゼロ以外の要素の値を1に定めれば、これらn個の固有ベクトルは正規直交系を成します。そこで i番目の要素だけ1で他の要素が0であるベクトルをy_iで表すことにします。y_iは全てU^{-1}SU固有ベクトルであることは明らかです。さらに左の図から明らかなようにその固有値s'_{ii}になります。よって

  • U^{-1}SUy_i=s'_{ii}y_i・・・・(10)

ここで

  • x_i=Uy_i・・・・(11)

と置くと下の図に示すように、x_iUi番目の列であることが分かります。


よってUU=[x_1,...,x_n]と表すことが出来ます。さて(10)の両辺に左からUをかけると

  • SUy_i=s'_{ii}Uy_i

となります。ここで(11)を用いると

  • Sx_i=s'_{ii}x_i・・・・(12)

になります。この式はx_iが行列S固有ベクトルであり、その固有値s'_{ii}であることを示しています。さらに1{\le}i{\le}n1{\le}j{\le}ni\neq{j}の場合、

  • x_i^Tx_i=(Uy_i)^TUy_i=y_i^TU^TUy_i=y_i^TU^{-1}Uy_i=y_i^Ty_i=1
  • x_i^Tx_j=(Uy_i)^TUy_j=y_i^TU^TUy_j=y_i^TU^{-1}Uy_j=y_i^Ty_j=0

なので、x_iは正規直交系を成していることが分かります。よって、行列Uを求めるには、分散共分散行列S固有ベクトルを求め、それらが正規直交系を成していない場合は、正規直交系になるように修正し、その後、それらを並べることで求めることが出来ます。



では、どのようにして固有ベクトルを求めるかといいますと、先に固有値を求めて、その次に固有値を(12)に代入して固有ベクトルを求めます。固有値は(説明を省略しますが)行列式

  • |S-\lambda{I}|=0・・・・(13)

\lambdaについて解くことで求めます。とは言え、式(13)は\lambdaについてn次方程式であり、n{\ge}3の場合は特殊な場合を除いて解を求めるのが困難です。その場合、どのようにして固有値を求めるのかですが、いろいろな数値計算の技法があるようです。しかし私はまだそれらを理解していません。

上で求めた固有値s'_{ii}U^{-1}SUの対角要素でしたので、これは座標変換したあと分散共分散行列の対角要素です。ということは座標変換したあとの各座標での分散になります。これの平方根をとれば標準偏差になり、データが各方向にどれだけばらついているかを示す指標になっています。この分散(あるいは標準偏差)が大きい方向(固有ベクトルの方向)から順に第1主成分、第2主成分・・・、と呼びます。このように第一主成分、第2主成分・・・を明らかにし、それぞれの成分(方向)での分散を求めることが主成分分析です。