主成分分析とは

/機械学習

主成分分析

主成分分析とは、互いに相関のある多数の変数から相関のない少数の合成変数(主成分)に要約し、全体のばらつきを説明する手法です。変数が多いことによる分析の困難さを軽減(次元の縮約)するための手法です。

主成分を与える変換は、第1主成分の分散を最大化し、続く主成分(第2主成分以下)はそれまでに決定した主成分と直交するという拘束条件の下で、分散を最大化するようにして定められます。

以下、変数(サンプル)の種類が3つで、各サンプル数が $n$($j=1\sim n$)の場合での解析手順を説明します。

{ $x_{11}$ 、$x_{12}$ 、$x_{13}$ 、$\cdots$ 、$x_{1n}$ }
{ $x_{21}$ 、$x_{22}$ 、$x_{23}$ 、$\cdots$ 、$x_{2n}$ }
{ $x_{31}$ 、$x_{32}$ 、$x_{33}$ 、$\cdots$ 、$x_{3n}$ }

主成分の導出

1.変数の標準化

標準化変数 $u_{1j}$ 、$u_{2j}$ 、$u_{3j}$ は、各変数の平均 $\bar{x}_1$ 、$\bar{x}_2$ 、$\bar{x}_3$ と標準偏差 $s_1$ 、$s_2$ 、$s_3$ により定義されます。

$$u_{1j}\equiv\frac{x_{1j}-\bar{x}_1}{s_1}$$$$u_{2j}\equiv\frac{x_{2j}-\bar{x}_2}{s_2}$$$$u_{3j}\equiv\frac{x_{3j}-\bar{x}_3}{s_3}$$

尚、それぞれの平均と分散(標準偏差の2乗)は以下で求められます。

$$\bar{x}_i\equiv\frac{1}{n}\sum_{j=1}^nx_{ij}$$$$s_i^2\equiv\frac{1}{n-1}\sum_{j=1}^n(x_{ij}-\bar{x}_i)^2$$

この標準化変数は以下の関係を持ちます。ここで、$r_{ik}$ は相関係数と呼ばれています。

$$\bar{u}_i=\frac{1}{n}\sum_{j=1}^nu_{ij}=0  -①$$$$\sum_{j=1}^nu_{ij}^2=\sum_{j=1}^n\frac{(x_{ij}-\bar{x}_i)^2}{s_i^2}=n-1  -②$$$$\sum_{j=1}^nu_{ij}u_{kj}=\sum_{j=1}^n\frac{(x_{ij}-\bar{x}_i)(x_{kj}-\bar{x}_k)}{s_is_k}=(n-1)r_{ik}  -③$$$$r_{ik}=r_{ki}\equiv\sum_{j=1}^n\frac{(x_{ij}-\bar{x}_i)(x_{kj}-\bar{x}_k)}{(n-1)s_is_k}$$

2.第1主成分の計算

第1主成分を係数 $a_i$ により以下で定義します。

$$z_{1j}\equiv a_1u_{1j}+a_2u_{2j}+a_3u_{3j}  -④$$

尚、第1主成分の平均と分散は以下で計算されます。

$$\bar{z}_1\equiv\frac{1}{n}\sum_{j=1}^nz_{1j}=0  -⑤$$$$V_1\equiv\frac{1}{n-1}\sum_{j=1}^n(z_{1j}-\bar{z}_1)^2=\frac{1}{n-1}\sum_{j=1}^nz_{1j}^2  -⑥$$

このとき、第1主成分は以下のようにして求められます。

第1主成分の分散 $V_1$ を最大化する係数 $a_i$ は、相関係数行列 $R$ の最大の固有値 $\lambda_1$ に対応する固有ベクトル ${\bf a}$ になります(導出)。$$R{\bf a}=\lambda_1{\bf a}  -⑦$$

ここで、相関係数行列と固有ベクトルは以下で定義されます。

$$R\equiv\left(\begin{array}{ccc} 1 & r_{12} & r_{13} \\
r_{21} & 1 & r_{23} \\
r_{31} & r_{32} & 1 \end{array}\right)  ,  {\bf a}\equiv\left(\begin{array}{ccc} a_1 \\ a_2 \\ a_3 \end{array}\right)$$

3.第2主成分の計算

第1主成分だけでデータの情報を十分に説明できない場合は第2主成分を計算します。第2主成分 $z_2$ は係数 $b_i$ により以下で定義します。

$$z_{2j}\equiv b_1u_{1j}+b_2u_{2j}+b_3u_{3j}  -⑧$$

尚、第1主成分の平均と分散は以下で計算されます。

$$\bar{z}_2\equiv\frac{1}{n}\sum_{j=1}^nz_{2j}=0  -⑨$$$$V_2\equiv\frac{1}{n-1}\sum_{j=1}^n(z_{2j}-\bar{z}_2)^2=\frac{1}{n-1}\sum_{j=1}^nz_{2j}^2  -⑩$$

このとき、第2主成分 $z_2$ は第1主成分 $z_1$ と無相関になるように定める必要があります。

$$r_z\equiv\sum_{j=1}^n\frac{(z_{1j}-\bar{z}_1)(z_{2j}-\bar{z}_2)}{(n-1)s_{z1}s_{z2}}$$$$=\sum_{j=1}^n\frac{z_{1j}z_{2j}}{(n-1)s_{z1}s_{z2}}=0  -⑪$$

⑪の条件は以下で表されます(⑫の導出)。

$$a_1b_1+a_2b_2+a_3b_3=0  -⑫$$

このとき、第2主成分は以下のようにして求められます。

第2主成分の分散 $V_2$ を最大化する係数 $b_i$ は、⑫の条件の下、相関係数行列 $R$ の2番目に大きい固有値 $\lambda_2$ に対応する固有ベクトル ${\bf b}$ になります(導出)。$$R{\bf b}=\lambda_2{\bf b}  -⑬$$

ここで、固有ベクトルは以下で定義されます。

$${\bf b}\equiv\left(\begin{array}{ccc} b_1 \\ b_2 \\ b_3 \end{array}\right)$$

4.第3主成分の計算

今回の例では変数は3つあるので、第3主成分まで求めることができます。第3主成分 $z_3$ は係数 $c_i$ により以下で定義します。

$$z_{3j}\equiv c_1u_{1j}+c_2u_{2j}+c_3u_{3j}$$$$V_3=\frac{1}{n-1}\sum_{j=1}^nz_{3j}^2$$

これまでと同様、第3主成分の分散 $V_3$ を最大化する係数 $c_i$ は、相関係数行列 $R$ の3番目に大きい固有値 $\lambda_3$ に対応する固有ベクトル ${\bf c}$ になります。

$$R{\bf c}=\lambda_3{\bf c}$$

寄与率

寄与率とは、その主成分で説明できるデータのばらつきの割合として定義されます。

寄与率 累積寄与率
第1主成分 $$\frac{\lambda_1}{\lambda_1+ \lambda_2+\lambda_3}$$ $$\frac{\lambda_1}{\lambda_1+ \lambda_2+\lambda_3}$$
第2主成分 $$\frac{\lambda_2}{\lambda_1+ \lambda_2+\lambda_3}$$ $$\frac{\lambda_1 +\lambda_2}{\lambda_1 +\lambda_2+\lambda_3}$$
第3主成分 $$\frac{\lambda_3}{\lambda_1+ \lambda_2+\lambda_3}$$ $$\frac{\lambda_1+\lambda_2 +\lambda_3}{\lambda_1 +\lambda_2+\lambda_3}=1$$

主成分の選択の目安は以下になります。

  • 固有値が1以上、または、
  • 累積寄与率が80%以上

因子負荷率

因子負荷率とは主成分と元の変数との相関係数です。これにより、主成分と元の変数の関係性を調べることができます。

$$r_{zixk}\equiv\sum_{j=1}^n\frac{(z_{ij}-\bar{z}_i)(x_{kj}-\bar{x}_k)}{(n-1)s_{zi}s_{xk}}  -⑭$$

尚、主成分と元の変数との相関係数は、主成分と標準化変数との相関係数は定義より等しくなります。

$$r_{zixk}=r_{ziuk}\equiv\sum_{j=1}^n\frac{(z_{ij}-\bar{z}_i)(u_{kj}-\bar{u}_k)}{(n-1)s_{zi}s_{uk}}  -⑮$$

因子負荷率と各主成分の固有値は以下のような関係があります(⑯の導出)。

$$\left[\begin{array}{ccc} r_{z1x1} & r_{z1x2} & r_{z1x3} \\
r_{z2x1} & r_{z2x2} & r_{z2x3} \\
r_{z3x1} & r_{z3x2} & r_{z3x3} \end{array}\right]=
\left[\begin{array}{ccc} \sqrt{\lambda_1}a_1 & \sqrt{\lambda_1}a_2 & \sqrt{\lambda_1}a_3 \\
\sqrt{\lambda_2}b_1 & \sqrt{\lambda_2}b_2 & \sqrt{\lambda_2}b_3 \\
\sqrt{\lambda_3}c_1 & \sqrt{\lambda_3}c_2 & \sqrt{\lambda_3}c_3 \end{array}\right]  -⑯$$

導出

⑦を導く

⑥に④を代入し、②と③を使うと、

$$V_1=\frac{1}{n-1}\sum_{j=1}^n(a_1u_{1j}+a_2u_{2j}+a_3u_{3j})^2$$$$=\frac{1}{n-1}\sum_{j=1}^n(a_1^2u_{1j}^2+a_2^2u_{2j}^2+a_3^2u_{3j}^2+2a_1a_2u_{1j}u_{2j}+2a_2a_3u_{2j}u_{3j}+2a_1a_3u_{1j}u_{3j})$$$$=a_1^2+a_2^2+a_3^2+2a_1a_2r_{12}+2a_2a_3r_{23}+2a_1a_3r_{13}  -(1)$$

ここで次の条件を設けて、

$$a_1^2+a_2^2+a_3^2=1  -(2)$$

$V_1$ を最大にする問題をラグランジュ乗数法を用いて解きます。未定乗数 $\lambda_1$ を使って以下の関数を定義すると、

$$F_1\equiv a_1^2+a_2^2+a_3^2+2a_1a_2r_{12}+2a_2a_3r_{23}+2a_1a_3r_{13}$$$$-\lambda_1(a_1^2+a_2^2+a_3^2-1)$$

この関数が停留点を持つ条件は以下になります。

$$\frac{\partial F_1}{\partial a_1}=2a_1+2r_{12}a_2+2r_{13}a_3-2\lambda_1a_1=0$$$$\frac{\partial F_1}{\partial a_2}=2r_{12}a_1+2a_2+2r_{23}a_3-2\lambda_1a_2=0$$$$\frac{\partial F_1}{\partial a_3}=2r_{13}a_1+2r_{23}a_2+2a_3-2\lambda_1a_3=0$$

これを行列で表すと、

$$\left(\begin{array}{ccc} 1 & r_{12} & r_{13} \\
r_{12} & 1 & r_{23} \\
r_{13} & r_{23} & 1 \end{array}\right)
\left(\begin{array}{ccc} a_1 \\ a_2 \\ a_3 \end{array}\right)=\lambda_1\left(\begin{array}{ccc} a_1 \\ a_2 \\ a_3 \end{array}\right)$$$$R{\bf a}=\lambda_1{\bf a}$$

この両辺の左から転置ベクトル ${\bf a}^t$ を掛けると、

$${\bf a}^tR{\bf a}=\lambda_1{\bf a}^t{\bf a}$$

$$a_1^2+a_2^2+a_3^2+2a_1a_2r_{12}+2a_2a_3r_{23}+2a_1a_3r_{13}$$$$=\lambda_1(a_1^2+a_2^2+a_3^2)$$

この左辺は (1) より分散 $V_1$ に等しく、右辺は (2) よりに固有値 $\lambda$ に等しいため、第1主成分の分散の最大値を求めることと、最大の固有値を求めることは同値になります。

$$V_1=\lambda_1  -(3)$$

⑫を導く

⑪の分子に④と⑧を代入し、②と③を使うと、

$$\sum_{j=1}^nz_{1j}z_{2j}=\sum_{j=1}^n(a_1u_{1j}+a_2u_{2j}+a_3u_{3j})(b_1u_{1j}+b_2u_{2j}+b_3u_{3j})$$$$=\sum_{j=1}^n\Big(a_1b_1u_{1j}^2+a_2b_2u_{2j}^2+a_3b_3u_{3j}^2+a_1b_2u_{2j}u_{1j}+a_2b_1u_{1j}u_{2j}$$$$+a_1b_3u_{1j}u_{3j}+a_3b_1u_{3j}u_{1j}+a_2b_3u_{2j}u_{3j}+a_3b_2u_{3j}u_{2j}\Big)$$$$=(n-1)\Big(a_1b_1+a_2b_2+a_3b_3+a_1b_2r_{12}+a_2b_1r_{12}$$$$+a_1b_3r_{13}+a_3b_1r_{13}+a_2b_3r_{23}+a_3b_2r_{23}\Big)$$$$=(n-1){\bf a}^tR{\bf b}=(n-1)\lambda_1{\bf a}^t{\bf b}  -(4)$$

最後は⑦を使っています。これより、⑪を0にする条件は以下で表されることが分かります。

$${\bf a}^t{\bf b}=a_1b_1+a_2b_2+a_3b_3=0$$

⑬を導く

⑩を計算すると、

$$V_2=\frac{1}{n-1}\sum_{j=1}^nz_{2j}^2=\frac{1}{n-1}\sum_{j=1}^n(b_1u_{1j}+b_2u_{2j}+b_3u_{3j})^2$$$$=\frac{1}{n-1}\sum_{j=1}^n(b_1^2u_{1j}^2+b_2^2u_{2j}^2+b_3^2u_{3j}^2+2b_1b_2u_{1j}u_{2j}+2b_2b_3u_{2j}u_{3j}+2b_1b_3u_{1j}u_{3j})$$$$=b_1^2+b_2^2+b_3^2+2b_1b_2r_{12}+2b_2b_3r_{23}+2b_1b_3r_{13}  -(5)$$

ここで次と⑫を条件として設けて、

$$b_1^2+b_2^2+b_3^2=1  -(6)$$

$V_2$ を最大にする問題をラグランジュ乗数法を用いて解きます。未定乗数 $\lambda_2$ と$\eta$ を使って以下の関数を定義すると、

$$F_2\equiv b_1^2+b_2^2+b_3^2+2b_1b_2r_{12}+2b_2b_3r_{23}+2b_1b_3r_{13}$$$$-\lambda_2(b_1^2+b_2^2+b_3^2-1)-\eta(a_1b_1+a_2b_2+a_3b_3)$$

この関数が停留点を持つ条件は以下になります。

$$\frac{\partial F_2}{\partial b_1}=2b_1+2r_{12}b_2+2r_{13}b_3-2\lambda_2b_1-\eta a_1=0$$$$\frac{\partial F_2}{\partial b_2}=2r_{12}b_1+2b_2+2r_{23}b_3-2\lambda_2b_2-\eta a_2=0$$$$\frac{\partial F_2}{\partial b_3}=2r_{13}b_1+2r_{23}b_2+2b_3-2\lambda_2b_3-\eta a_3=0$$

これを行列で表すと、

$$\left(\begin{array}{ccc} 1 & r_{12} & r_{13} \\
r_{12} & 1 & r_{23} \\
r_{13} & r_{23} & 1 \end{array}\right)
\left(\begin{array}{ccc} b_1 \\ b_2 \\ b_3 \end{array}\right)=\lambda_1\left(\begin{array}{ccc} b_1 \\ b_2 \\ b_3 \end{array}\right)+\frac{1}{2}\eta\left(\begin{array}{ccc} a_1 \\ a_2 \\ a_3 \end{array}\right)$$$$R{\bf b}=\lambda_2{\bf b}+\frac{\eta}{2}{\bf a}$$

この両辺の左から転置ベクトル ${\bf a}^t$ を掛けると、

$${\bf a}^tR{\bf b}=\lambda_2{\bf a}^t{\bf b}+\frac{\eta}{2}{\bf a}^t{\bf a}$$

この右辺第1項は⑫より0、左辺も(4)より0になり、${\bf a}^t{\bf a}\ne0$ であるため、$\eta=0$ であることが分かります。従って、

$$R{\bf b}=\lambda_2{\bf b}$$

この両辺の左から転置ベクトル ${\bf b}^t$ を掛けると、

$${\bf b}^tR{\bf b}=\lambda_2{\bf b}^t{\bf b}$$$$b_1^2+b_2^2+b_3^2+2b_1b_2r_{12}+2b_2b_3r_{23}+2b_1b_3r_{13}$$$$=\lambda_2(b_1^2+b_2^2+b_3^2)$$

この左辺は (5) より分散 $V_2$ に等しく、右辺は (6) よりに固有値 $\lambda_2$ に等しいため、第2主成分の分散の最大値を求めることと、2番目に大きい固有値を求めることは同値になります。

$$V_2=\lambda_2$$

⑯を導く

以下の関係が成り立つことを示します。

$$r_{z1x1}=\sqrt{\lambda_1}a_1$$

⑮を利用し、①と⑤と $s_{u1}=1$ であるから、

$$r_{z1x1}=r_{z1u1}=\sum_{j=1}^n\frac{(z_{1j}-\bar{z}_1)(u_{1j}-\bar{u}_1)}{(n-1)s_{z1}s_{u1}}$$$$=\sum_{j=1}^n\frac{z_{1j}u_{1j}}{(n-1)s_{z1}}$$

次に、(3) より $s_{z1}^2=V_1=\lambda_1$ であり、④を使うと、

$$r_{z1x1}=\sum_{j=1}^n\frac{(a_1u_{1j}+a_2u_{2j}+a_3u_{3j})u_{1j}}{(n-1)\sqrt{\lambda_1}}$$$$=\frac{(a_1+a_2r_{12}+a_3r_{13})}{\sqrt{\lambda_1}}=\sqrt{\lambda_1}a_1$$

最後は、②と③を使い、さらに⑦の第1行(下記)を使っています。

$$a_1+r_{12}a_2+r_{13}a_3=\lambda_1a_1$$

 

数学
解析学、代数学、幾何学、統計学、論理・基礎論、情報・暗号、機械学習、金融・ゲーム理論、高校数学
散策路TOP
数学、応用数学、古典物理、量子力学、物性論、電子工学、IT、力学、電磁気学、熱・統計力学、連続体力学、解析学、代数学、幾何学、統計学、論理・基礎論、プラズマ物理、量子コンピュータ、情報・暗号、機械学習、金融・ゲーム理論

 

タイトルとURLをコピーしました