主成分分析

多次元のデータ列に対して、それぞれの項目の線形和をとることによって、互いに無相関になるようにグループ分けをする手法が主成分分析です。

主成分分析には主に次の2つのやり方があります。

(1)共分散行列に対して主成分分析をする。

(2)相関行列に対して主成分分析をする。

 

(1)の共分散行列に対して主成分分析をする方法は、主にデータの項目の単位が同じなどデータ項目の線形和を取っても意味がある時に用います。(例えば、数学と国語点数など)。一方、(2)相関行列に対して主成分分析する方法は、そのままデータの項目の線形和を取ってい意味がない時に使います。(例えば、身長と体重など)

共分散行列に対する主成分分析

まず(1)の共分散に対する主成分分析を解説します。

n次元の時系列データを、[latex]x_i(t)~(i=1,2,3,\cdots,n)[/latex]とします。この時系列データの共分散行列、[latex]C_{ij}[/latex]は以下で与えらます。

[latex size=2]\displaystyle C_{ij}=Cov(x_i,x_j)=\frac{1}{m}\sum_{t=1}^m(x_i(t)-\bar{x_i})(x_j(t)-\bar{x_j}).[/latex]

 

ここで、[latex]\bar{x_i}[/latex]は、[latex]x_i(t)[/latex]の平均です。この共分散行列を対角化します。[latex]P[/latex]を直行行列として、

[latex size=2]P^{-1}CP = \mbox{diag}(\lambda_1,\cdots,\lambda_n)[/latex]

 

なります。ここで、[latex]\mbox{diag}(\lambda_1,\cdots,\lambda_n)[/latex]は、[latex]\lambda_i~(i=1,2,3,\cdots,n)[/latex]を対角成分(固有値)とする対角行列です。

すると、元のデータ[latex]x_i(t)~(i=1,2,3,\cdots,n)[/latex]から、次のように新しいデータ[latex]y_i(t)[/latex]を定義します。

[latex size=2]y_i(t) = \sum_{j}x_j(t){P^j}_i[/latex]

 

ここで、[latex]{P^j}_i[/latex]は[latex]P[/latex]の各成分です。すると、この[latex]y_i(t)[/latex]の各成分は、お互い無相関になり、それぞれの成分の分散は[latex]\lambda_i~(i=1,2,3,\cdots,n)[/latex]となります。

[latex size=2]Cov(y_i,y_j) = \mbox{diag}(\lambda_1,\cdots,\lambda_n)[/latex]

CIJ

相関係数に対する主成分分析

(2)の相関行列に対してする主成分分析ですが、時系列データ[latex]x_i(t)~(i=1,2,3,\cdots,n)[/latex]を次にように正規化をして主成分分析をすれば、(1)とまったく同じとなります。

[latex size=2]\displaystyle r_i(t)=\frac{x_i(t)-\bar{x_i}}{\sqrt{\sum_{t}(x_i(t)-\bar{x_i})^2}}.[/latex]

すると、元のn次元の時系列データ[latex]x_i(t)~(i=1,2,3,\cdots,n)[/latex]にたいする時系列データの相関行列[latex]\rho_{ij}[/latex]は以下のようになります。

[latex size=2]\displaystyle \rho_{ij}=Cov(r_i,r_j)=\frac{\sum_{t}(x_i(t)-\bar{x_i})(x_j(t)-\bar{x_j})}{\sqrt{\sum_{t}(x_i(t)-\bar{x_i})^2}\sqrt{\sum_{t}(x_j(t)-\bar{x_j})^2}}.[/latex]
 
この相関行列にたいして、(1)と同じように対格化をすればよいことになります。具体的には以下のようになります。

ます、相関行列を対角化します。[latex]P[/latex]を直行行列として、

[latex size=2]P^{-1}\rho P = \mbox{diag}(\lambda_1,\cdots,\lambda_n)[/latex]

 

なります。ここで、[latex]\mbox{diag}(\lambda_1,\cdots,\lambda_n)[/latex]は、[latex]\lambda_i~(i=1,2,3,\cdots,n)[/latex]を対角成分(固有値)とする対角行列です。

すると、元の正規化されたデータ[latex]r_i(t)~(i=1,2,3,\cdots,n)[/latex]から、次のように新しいデータ[latex]y_i(t)[/latex]を定義します。

[latex size=2]y_i(t) = \sum_{j}r_j(t){P^j}_i[/latex]

 

ここで、[latex]{P^j}_i[/latex]は[latex]P[/latex]の各成分です。すると、この[latex]y_i(t)[/latex]の各成分は、お互い無相関になり、それぞれの成分の分散は[latex]\lambda_i~(i=1,2,3,\cdots,n)[/latex]となります。

[latex size=2]Cov(y_i,y_j) = \mbox{diag}(\lambda_1,\cdots,\lambda_n)[/latex]

主成分分析による次元圧縮

最大固有値と次に大きい固有値[latex](\lambda_1,\lambda_2)[/latex]に対して、2次元上の点[latex]({P^i}_1,{P^i}_2)[/latex]を、[latex](i=1,2,3,\cdots,n)[/latex]個、配置するとそれぞれの成分iの特徴を次元圧縮された2次元平面上に表現できます。