主成分分析の解き方のバリエーションで迷うところがあったのでメモ

はじめに

主成分分析は導出や解釈がいくつかあり、調べていると混乱することが多い。

特に導出についてどうなんだっけ...となった部分を整理する

導出って何があったっけ

分散が最大となる係数をラグランジュの未定乗数法にて解く

ベーシックな解法。ストーリー的にも

  1. 各特長量を重みづけした際の分散を最大化する
  2. 重みベクトルは傾きだけわかればいいので、重みベクトルのノルム=1の制約がかけられる
  3. 制約があるうえでの最大値の問題はラグランジュの未定乗数法が使える
  4. ラグランジュの未定乗数法に従って、各変数を偏微分した式同士を解く際に固有値の計算の形式がそのまま使える
  5. 固有値が大きいものから代入して第一, 第二主成分を得られる

という流れ。

分散共分散行列の固有値から主成分を求める

特徴量の分散共分散行列の固有値を求めることで、前節の1~4をスキップできる計算方法。そうなりそうとは思っていたけど100%理解していなかったケース。式を追いながら確認する

主成分1はz = a_1x_1 + a_2x_2、めんどくさいのでzの下付きは省略しています。バー付きは平均。

主成分の分散をV_zと置くと、主成分の分散はこう書けそう


V_z = \cfrac{i=1}{n}\Sigma_1^n(z_i-\bar{z})^2

z = a_1x_1 + a_2x_2なので展開して整理する


V_z = \cfrac{i=1}{n}\Sigma_{i=1}^n(a_1x_1+a_2x_2 - a_1\bar{x_1}-a_2\bar{x_2})^2 \\
= \cfrac{1}{n}\Sigma_{i=1}^n\{a_1(x_1-\bar{x_1})  + a_2(x_2-\bar{x_2})\}^2 \\
= \cfrac{1}{n}\Sigma_{i=1}^n\{a_1^2(x_1-\bar{x_1})^2 +2a_1a_2(x_1-\bar{x_1}(x_2-\bar{x_2})) +a_2^2(x_2-\bar{x_2})^2 \} \\
= a_1^2\cfrac{1}{n}\Sigma(x_1-\bar{x_1})^2 + 2a_1a_2\cfrac{1}{n}\Sigma(x_1-\bar{x_1})(x_2-\bar{x_2}) + a_2^2\cfrac{1}{n}\Sigma(x_2-\bar{x_2})^2

分散の式が出現しているのでs_{ij}^2で置き換える


V_z = a_1^2s_{11}^2 + 2a_1a_2s_{12}^2 + a_2^2s_{22}^2

でこれを最大化するには、[tex:a_12 + a_22=1](aのそれぞれの比率が分かればいいので=1の制約でよい)

このような制約がある状態の関数の最大値はラグランジュの未定乗数法を用いる。式はこう


L(a_1, a_2, \lambda) =  (a_1^2s_{11}^2 + 2a_1a_2s_{12}^2 + a_2^2s_{22}^2) - (a_1^2+a_2^2 -1)

で各変数で偏微分するとこう


\cfrac{\partial L}{\partial a_1} = 2s_{11}^2a_1 + 2s_{12}^2a_2-2\lambda a_1 \\
\cfrac{\partial L}{\partial a_2} = 2s_{12}^2a_1 + 2s_{22}^2a_2 -2\lambda a_2 \\
\cfrac{\partial L}{\partial \lambda}= -a_1^2-a_2^2-1

第一式と第二式を=0として連立方程式を解くことを考えて行列表記にする。


\begin{bmatrix}
   s_{11}^2 & s_{12}^2 \\
   s_{12}^2 & s_{22}^2
\end{bmatrix}
\begin{bmatrix}
   a_1 \\
   a_2
\end{bmatrix}
= \lambda \begin{bmatrix}
   a_1 \\
   a_2
\end{bmatrix}

ここで左辺に着目すると、分散共分散行列に対する固有値を求める問題になる。つまり、実用上は元データxの共分散分散行列を何かしらで計算して、さらに何かしらで固有値を求めればいいことになる。

おわりに

おそらく、表記も考えかたも結構ミスがあるんだろうけど思い出す手がかりを作っているだけなんだという強い気持ちで書いた。あまり参考にしないでください。