主成分分析

経理と機械学習

情報の縮約、次元削減のため、データのばらつきを、主成分により、低次元で情報をなるべく落とさずに、表現します。

ポイント
・主成分の分散最大化
・主成分間の無相関化(直交化)

相関行列から出発する方法

多変量解析法入門 (ライブラリ新数学大系) [ 永田靖 ]

「第9章主成分分析」をまとめています。

変数が\(x_1,x_2\)の2つで、サンプルサイズ\(n\)とします。

標準化
\(u_1=\frac{x_1-\bar{x_1}}{s_1},\quad u_2=\frac{x_2-\bar{x_2}}{s_2}\)

主成分
\(z_1=a_1 u_1 + a_2 u_2\)
\(\bar{z_1}=0 \quad (\bar{u_1}=\bar{u_2}=0)\)|平均は0

主成分の分散
\(V_{z_1}=\frac{1}{n-1} \sum_{i=1}^{n}(z_{i1} -\bar{z_1})^2=\frac{1}{n-1} \sum_{i=1}^{n}z_{i1} ^2\)
\(=\frac{1}{n-1} \sum_{i=1}^{n}(a_1 u_{i1}+a_2 u_{i2})^2\)
\(=\frac{1}{n-1} (a_1^2\sum u_{i1}^2 + 2a_1 a_2 \sum u_{i1}u_{i2} +a_2^2 \sum u_{i2}^2)\)

\(=a_1^2+a_2^2+2r_{x_1 x_2}a_1 a_2\)

主成分の分散最大化
制約条件ありの極値問題(最大問題)はラグランジュの未定乗数法を使います。
「ラグランジュの未定乗数法」の偏微分の結果、λが固有値となるように、係数の2乗の和が定数になるように制約条件を設定します。定数は固有ベクトルが直交ベクトルとなるように1に設定します。固有ベクトルが主成分の係数になります。
\(a_1^2+a_2^2=1\)
ラグランジュの乗数を\(\lambda\)とすると、
\(f(a_1,a_2,\lambda)=a_1^2+a_2^2+2r_{x_1 x_2}a_1 a_2-\lambda(a_1^2+a_2^2-1)\)
\(a_1,a_2\)をそれぞれ偏微分してゼロとおく
\(2a_1+2r_{x_1 x_2}a_2 – 2\lambda a_1=0\)
\(2r_{x_1 x_2}a_1 + 2a_2 -2\lambda a_2=0\)
行列表現
\( \begin{bmatrix}
1 & r_{x_1 x_2} \\
r_{x_1 x_2} & 1
\end{bmatrix}
\begin{bmatrix}
a_1 \\
a_2 \end{bmatrix}
=\lambda
\begin{bmatrix}
a_1 \\
a_2 \end{bmatrix}\)
ここで
\(R=\begin{bmatrix}
1 & r_{x_1 x_2} \\
r_{x_1 x_2} & 1
\end{bmatrix}\) 相関行列
\(\boldsymbol{a}=
\begin{bmatrix}
a_1 \\
a_2 \end{bmatrix}
\)
とおくと
\(R\boldsymbol{a}=\lambda \boldsymbol{a}\)
\(\lambda\)は行列\(R\)の固有値であり、主成分の係数\(a_1,a_2\)は固有ベクトルとなります
左から\(\boldsymbol{a}^T\)をかけます
\(a_1^2+a_2^2+2r_{x_1 x_2}a_1 a_2=\lambda(a_1^2+a_2^2)\)
つまり
\(V_{z1}=\lambda\)
相関行列\(R\)の固有値を解く
⇒最大固有値\(\lambda\)に属する固有ベクトル\(\boldsymbol{a}\)が第1主成分の係数

主成分の分散はλと等しくなるので、互いに直交化された固有ベクトルのうち、分散が最大となる固有ベクトルがわかります。

ラグランジュの未定乗数法
条件付き極値問題:\(g(x,y)=0\) のもとで \(f(x,y)\)を最大化したい
\(L(x,y,\lambda)=f(x,y)-\lambda g(x,y)\)
とおくと極値があるならば
\(\frac{\partial L}{\partial x}=\frac{\partial L}{\partial y}=\frac{\partial L}{\partial\lambda}=0\) の解:\(\nabla f=\lambda \nabla g\)・・・ベクトルが平行
または
\(\frac{\partial g}{\partial x}=\frac{\partial g}{\partial y}​=0\)の解:勾配 \(\nabla g=(\frac{\partial g}{\partial x},\frac{\partial g}{\partial y}​)=0\) ・・・特異点
参考:高校数学の美しい物語 
   ラグランジュの未定乗数法の気持ち(ヨビノリ)
   制約付き最適化問題(KKT条件/ラグランジュ未定乗数法)(ヨビノリ)

固有値分解

参考:YouTube 固有値分解(東大・教養・学際B・情報数理科学I)

実対称行列\(A\in R^{n\times n}\)の固有値分解
対称行列とは\(A^T = A\)となる行列\(A\)
\(X\in R^{n\times m}\)のときは対称行列\(X^TX\)を考える

・Aの固有値はたかだかn個
・Aの固有ベクトルは無限(不定)

\(Aq_1=\lambda_1 q_1 \)
\(Aq_2=\lambda_2 q_2 \)
\(\qquad\vdots\)
\(Aq_n=\lambda_n q_n \)
\(Q=[\)列\(q_1 \; q_2 \cdots \; q_n]\in R^{n\times n}\)として
\(AQ=A[q_1 \; q_2 \cdots \; q_n] =[Aq_1 \; Aq_2 \cdots \; Aq_n]=[\lambda_1 q_1 \; \lambda_2 q_2 \cdots \; \lambda_n q_n]=Q \; diag(\lambda)\)
\(A=Q \; diag(\lambda) \; Q^T\)

・実対称行列Aは固有ベクトルを並べた行列Qで対角化される
・Qは直交行列になる
 \(QQ^T=Q^TQ=I\)
実対称行列は適当な(あてはまりのよい)直交行列で対角化される

実対称行列の固有ベクトルは直交する

参考:YouTube 【線形代数#34】対称行列の直交行列による対角化(AKITOの勉強チャンネル)

固有値\(\alpha , \beta\) 固有ベクトル\(x,y\)とおく
直交する⇒内積が0になる なので
固有ベクトルの内積\((x,y)=0\)⇒固有ベクトルは直交する を示す
\(\alpha (x,y)=(\alpha x, y)=(A x, y)\) 行列では\((Ax)^Ty=x^T(A^Ty)\)となる
\(=(x,A^Ty)\) \(A\)は対称行列なので\(A^T=A\)
\(=(x,Ay)=(x,\beta y)=\beta(x,y)\)
\((\alpha – \beta)(x,y)=0 \quad (\alpha \neq \beta)\)
\((x,y)=0\)

・Aを実対称行列とする
・Aの固有値\(\alpha_1,\cdots,\alpha_n\)は実数
・Aの固有ベクトル\(x_1,\cdots,x_n\)は、
 実ベクトル直交する。大きさ1にすると直交ベクトルになる
\(P=(x_1 \quad x_2 \quad \cdots \quad x_n)\) 大きさ1の実直交行列
(直交行列の必要十分条件は、大きさ1、互いに直交=内積0)
\(P^{-1}AP=
\left(
\begin{array}{ccccc}
\alpha_1 & \cdots & 0\\
\vdots & \ddots &\vdots \\
0 & \cdots & \alpha_n
\end{array}
\right)
\)実対称行列は適当な直交行列で対角化できる

実対称行列\(A\)が\(B^TB\)となっている場合の固有値は非負

「統計学実践ワークブック」p.195

\(Au_j=\lambda_j u_j, \quad <u_j,u_k>=\delta_{j,k}\)

内積の定義
ベクトル\(x=(x_1,\cdots,x_p),\quad y=(y_1,\cdots,y_p)\)
\(<x,y>=x^Ty=\sum_{i=1}^{p}x_i y_i\)

\(<u_j,u_k>=\delta_{j,k}
\left\{\begin{array}{}
1\quad (j=k) 大きさ1\\
0\quad (j \neq k) 直交
\end{array}\right.
\)
\(u_j^T u_j=1\)

\(A\)が標本分散共分散行列\(S\)や標本相関行列\(R\)のように、\(B\)を\(n\times p\)行列として\(A=B^T B\)となっている場合には\(A\)の固有値は非負となります。
\(Au_j=\lambda_j u_j\)の両辺に\(u_j^T\)を掛けると、
左辺:\(u_j^T Au_j=u_j^T B^T Bu_j=(Bu_j)^T Bu_j=\begin{Vmatrix}Bu_j\end{Vmatrix}^2\)
右辺:\(u_j^T\lambda_j u_j=\lambda_j u_j^T u_j=\lambda_j\)
\(\lambda_j=\begin{Vmatrix}Bu_j\end{Vmatrix}^2\geq 0\)

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