LoginSignup
1
0

More than 3 years have passed since last update.

主成分分析について初めから解説します

Last updated at Posted at 2020-06-27

多変量解析の手法の一つである「主成分分析」について書いていきます

そもそも主成分分析とは?

主成分分析は次元を減らす際に用いられています 例えば国語,英語,数学,理科の試験の点数があったとして,国語と英語は「文系科目」,数学と理科は「理系科目」とすることによって次元が4から2に減ります.こういった具合で次元を減らせるわけです

これが何に役立つのかという話ですが,機械学習では「次元の呪い」といって次元数(特徴量)が膨大になると,精度の高いモデルを作ることが難しくなるといった問題があります.これを解決してくれたりするわけです

そんな主成分分析について,中身はどうなっているか明らかにしていきます.結論からいいますと,主成分分析は結局のところ「固有値問題」を解くことに他ならないです.これだけでは全くわからないと思いますが,この意味がわかるように導出をしていきます.

主成分の導出について

説明を簡単にするため,2変数においての主成分の導出を行います(実際には2変数ではメリットはありませんが,簡略のためです)

まず,変数$x_1$ と$x_2$について標準化を行います

$$ u_1 = \displaystyle \frac{x_1-\bar{x}}{s_1},u_2 = \displaystyle \frac{x_2-\bar{x}}{s_2}$$

そして,第一主成分を$ z_1= a_1u_1+a_2u_2$と置きます

ここで標準化は平均0,標準偏差1となるようにした操作であるため,$ \bar{u_1}=\bar{u_2}=0$となります そのため,$\bar{z_1}=0$です

主成分$z_1$はもとのデータの情報を多く含む必要があるわけです この多くの情報を含むということは「主成分のデータのバラツキを大きくする」ということです

つまり,$z_1$の分散を大きくしようという方針になります

$z_1$の分散は

$$V_{z_1} = \displaystyle \frac{1}{n-1} \sum_{i=1}^n (z_{i1}-\bar{z_1})^2 $$ となります

$\bar{z_1}=0 $であることを利用すると

$$ V_{z_1} = \displaystyle \frac{1}{n-1} \sum_{i=1}^n (z_{i1}-\bar{z_1})^2 \
= \displaystyle \frac{1}{n-1} \sum_{i=1}^n z_{i1}^2 $$

となり,この分散が最大になるようにします
$$
\begin{eqnarray}
V_{z_1}&=& \displaystyle \frac{1}{n-1} \sum_{i=1}^n z_{i1}^2 \\
&=& \displaystyle \frac{1}{n-1} \sum (a_1u_{i1}+a_2u_{i2})^2 \\
&=&\displaystyle \frac{1}{n-1} ({ a_1^2 \sum u_{i1}^2 + 2a_1a_2\sum u_{i1}u_{i2}+a_2^2 \sum u_{i2}^2 })
\end{eqnarray}
$$

ここで,$\sum_{i=0}^n u_{i1}^2 =\sum_{i=0}^n u_{i2}^2 = n-1 $,$ \sum_{i=0}^n u_{i1}u_{i2}=(n-1)r_{x1x2} $を利用すると
$ V_{z_1} = a_1^2 + a_2^2 + 2r_{x1x2}a_1a_2 $ となります(証明は後述します).

ここからわかるように,$V_{z_1} $を大きくするためには,$ a_1$と$ a_2$が大きくなればいいわけです

ただ,制約条件がないと無限に発散してしまうため,$a_1^2 + a_2^2 = 1$という制約条件を設けます.制約条件を設けた上での最大化問題はラグランジュの未定乗数を利用して解きます.

$ f(a_1,a_2,\lambda) = a_1^2 + a_2^2 + 2r_{x1x2}a_1a_2 - ( a_1^2 + a_2^2 -1) $と置き,$a_1 $,$a_2$で偏微分してゼロとすると以下のようになります.

$$ \displaystyle \frac{\partial f}{\partial a_1} = 2a_1 + 2r_{x1x2} - 2\lambda a_1 = 0 $$

$$ \displaystyle \frac{\partial f}{\partial a_2} = 2r_{x1x2} +2a_2 - 2\lambda a_2 = 0 $$

これを行列表記にすると

$$ \left(\begin{array}{cc}
1 & r_{x 1 x 2} \\
r_{x 1 x 2} & 1
\end{array}\right)\left(\begin{array}{l}
a_{1} \\
a_{2}
\end{array}\right)=\lambda\left(\begin{array}{l}
a_{1} \\
a_{2}
\end{array}\right) $$

$$ R=\left(\begin{array}{cc}
1 & r_{x 1 x 2} \\
r_{x 1 x 2} & 1
\end{array}\right) $$ と置くと$R$は相関係数行列となります

また,$\begin{pmatrix} a_1 \\ a_2 \end{pmatrix}=a$とすると$Ra = \lambda a$となります
これは$\lambda$が行列$R$の固有値で,$a$が固有ベクトルを示しています

ここでこの式に$a^{\mathrm{T}}$を左からかけると$a^{\mathrm{T}} R a = \lambda a^{\mathrm{T}} a$となります 左辺は二次形式となっており,右辺は内積です

展開すると$a_1^2 + a_2^2 + 2r_{x1x2}a_1a_2 = \lambda (a_1^2 + a_2^2) $になります.

右辺の$a_1^2 + a_2^2 $は制約条件より,$a_1^2 + a_2^2 = 1$でした
そのため$a_1^2 + a_2^2 + 2r_{x1x2}a_1a_2 = \lambda$

すなわち $V_{z_1} = \lambda$となります

この式が示すことは,$V_{z1}$を最大化することは固有値$\lambda$に対応する固有ベクトル$a$を求めるということになります

これが冒頭で述べた,主成分分析は固有値問題を解くことに帰着されるという意味になります

第二主成分以降の求め方

ここでは第一主成分のみを求めましたが,これだけでは足りない場合に第二主成分を求めます

第二主成分$z_2 = b_1u_1 + b_2u_2$とします
第二主成分は第一主成分にない情報を含む必要があるので,無相関であるとします

$z_1$と$ z_2$の相関係数$r_{z_1z_2}$は$\displaystyle \frac{\sum (z_{i_1} - \bar{z_1})(z_{i_2} - \bar{z_2} )} {\sum (z_{i_1} - \bar{z_1})^2 \sum (z_{i_2} - \bar{z_2})^2}$です

無相関であるためには,分子が0となればいいので分子のみについて考慮していきます
$$
\begin{eqnarray}
\sum (z_{i1} - \bar{z_1})(z_{i2} - \bar{z2}) &=& \sum z_{i1} z_{i2} \\
&=& \sum (a_1u_{i1} + a_2u_{i2} )( b_1u_{i1} + b_2u_{i2}) \\
&= & a_1b_1 \sum u_{i1}^2 + a_1b_2 \sum u_{i1}u_{i2} + a_2b_1 \sum u_{i1}u_{i2} + a_2b_2 \sum u_{i2}^2 \\
&=& (n-1) {a_1b_1 + r_{x1x2}a_1b_2 + r_{x1x2}a_2b_1 + a_2b_2 } \\
&=& (n-1) a^{\mathrm{T}} R b \\
&=& (n-1) \lambda_1 a^{\mathrm{T}} b
\end{eqnarray}
$$

上の式では$ b = \begin{pmatrix} b_1 \ b_2 \end{pmatrix}$ と置いています また,最後から二番目の式変形は$Ra = \lambda_1 a$の転置を取ることによって,$a^{\mathrm{T}} R = \lambda_1 a^{\mathrm{T}}$としています.$ (Ra)^{\mathrm{T}} = a^{\mathrm{T}}R $ なのは$R$が対称行列のためです.

当初の目的は相関係数$ r_{z_1z2}$を0にすることでした 上の式より,
$ a^{\mathrm{T}} R b = 0$または$ a^{\mathrm{T}} b = a_1b_1 + a_2b_2 = 0$であればいいとわかります 第二主成分では制約条件にこれが加わります

第一主成分と同様に分散を大きくするため,$V_{z2}$の最大化問題を解きます
$$
\begin{eqnarray}
V_{z2} &=& \displaystyle \frac{1}{n-1} \sum (z_{i2} - \bar{z2})^2 \\
&=& \displaystyle \frac{1}{n-1} \sum z_{i2} ^2 \\
&=& \displaystyle \frac{1}{n-1} { b_1^2 \sum u_{i1} ^2 + 2b_1b_2 \sum u_{i1}u_{i2} + b_2^2 \sum u_{i2}^2 }\\
&=& b_1^2 + b_2^2 + 2r_{x1x2}b_1b_2
\end{eqnarray}
$$
となり,第一主成分と同じようになります ここで注意する点として,制約条件は$ b_1^2 + b_2^2 = 1$と$a_1b_1+ a_2b_2=0$を用いるので$ \lambda$ と $\eta$ を用いて

$ f(b_1,b_2,\lambda,\eta) = b_1^2 + b_2^2 + 2r_{x1x2}b_1b_2 - \lambda(b_1^2+b_2^2-1) -\eta(a_1b_1+a_2b_2)$

$ \displaystyle \frac{\partial f}{\partial b_1} = 2b_1 + 2r_{x1x2} - 2\lambda b_1 - \eta a_1= 0 $

$ \displaystyle \frac{\partial f}{\partial b_2} = 2r_{x1x2} +2b_2 - 2\lambda b_2 - \eta a_2= 0 $

となります.これを行列表記にすると

$ \left( \begin{array}{cc} 1 & r_{x1x2}\\ r_{x1x2} & 1\\ \end{array}
\right) \left(\begin{array}{cc} b_1 \\ b_2 \\ \end{array}
\right) =\lambda \left( \begin{array}{cc} b_1 \\ b_2\\ \end{array}
\right ) + \displaystyle \frac{\eta}{2} \left(\begin{array}{cc} a_1 \\ a_2 \end{array}
\right)$

これは$ Rb = \lambda b + \displaystyle \frac{\eta}{2} a$となります この式の左から$ a^{\mathrm{T}}$をかけると

$ a^{\mathrm{T}}Rb = \lambda a^{\mathrm{T}} b + \displaystyle \frac{\eta}{2} a^{\mathrm{T}} a$であり,$ a^{\mathrm{T}} R b = 0),( a^{\mathrm{T}} b = a_1b_1 + a_2b_2 = 0$より

上の式は$ 0 = 0 + \displaystyle \frac{\eta}{2} a^{\mathrm{T}} a$となるので,$ \eta = 0$とわかります

つまり,$ Rb = \lambda b$です

これは第一主成分を求めた時と同じで,固有値問題になっています.第(n)主成分も同様です.

おまけ

上の方で唐突に出てきた以下の式について証明していきます
$\sum_{i=0}^n u_{i1}^2 =\sum_{i=0}^n u_{i2}^2 = n-1$ $ \sum_{i=0}^n u_{i1}u_{i2}=(n-1)r_{x1x2} $

まず$u_1 $の分散$V_{u1}$について考えます

$ V_{u_1} = \displaystyle \frac{1}{n-1}\sum_{i=0}^n(u_1 - \bar{u_1})^2 = \displaystyle \frac {1}{n-1}\sum_{i=0}^n u_1^2 $

最後の式は$\bar{u_1}=0 $を利用しています.また,$V_{u1} = 1$より
$$
\begin{eqnarray}
\displaystyle \frac {1}{n-1}\sum_{i=0}^n u_1^2 &=& 1 \\
\sum_{i=0}^n u_1^2 &=& n-1
\end{eqnarray}
$$

ということで,$ \sum_{i=0}^n u_{i1}^2 =\sum_{i=0}^n u_{i2}^2 = n-1$が導き出せました.

次に$ \sum_{i=0}^n u_{i1}u_{i2}=(n-1)r_{x1x2} $の証明をしていきます.

$$
\begin{eqnarray}
\sum_{i=0}^n u_1 u_2 &=& \displaystyle \frac { \sum_{i=0}^n (x_{i1}-\bar{x_1})(x_{i2}-\bar{x_2})}{s_1s_2}\\
&=& \displaystyle \frac { \sum_{i=0}^n (x_{i1}-\bar{x_1}) (x_{i2}-\bar{x_2})} {\displaystyle \sqrt{ \frac{\sum_{i=0}^n (x_1 - \bar{x_1})^2 \sum_{i=0}^n (x_2 - \bar{x_2})^2 }{(n-1)^2} }}\\
&=& (n-1) \displaystyle \frac {S_{12}} { \sqrt{S_{11} S_{22}}} \\
&=& (n-1) r_{x1x2}
\end{eqnarray}
$$

最後から二番目の$S_{11} $は$S_{22}$は平方和,$S_{12}$は偏差積和を表しています.あとは相関係数の定義を当てはめているだけです.

ということで,$ \sum_{i=0}^n u_{i1}u_{i2}=(n-1)r_{x1x2} $の証明が完了しました

参考書籍

1.小西 貞則「多変量解析入門――線形から非線形へ」
2.永田 靖,棟近 雅彦「多変量解析法入門」
3.平井 有三「はじめてのパターン認識」

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0