こんにちは。理論編で主成分分析についてはみなさん理解できたと思います。が。本日は少し応用です。 とりあえず復習から始めましょう。

PCAは固有ベクトルへの射影

そうです。たとえば400次元から2次元へのPCAは固有値を大きい方から2つ選び、対応する固有ベクトルに射影です。つまり

軸を新しく定義している

つまり

空間が変わっている

  まさにこの図、3次元のデータ(左)にPCAをかけて2次元データ(右)にしている。軸が異なるどころかその数も変わっていることより空間が変わったことは明らか。 しかし、今回は

次元を保ったまま空間を押しつぶす

をします。

重要なのは次の考え方のみ!

適当に作った例だと

    \[ [1,2,3] \rightarrow [4,-2]  \]

が前回のPCAに対し

    \[ [1,2,3] \rightarrow [4,-2, 0]\in H\]

のように次元を保ったまま平面上の点に置き換える。上の図だとc_1,c_2 \in \mathbb{R}に対し

    \[ a' =  c_1v_1 + c_2 v_2  = c_1 \begin{pmatrix} v_{11} \\ v_{12} \\ v_{13}  \end{pmatrix} + c_2 \begin{pmatrix} v_{21} \\ v_{22} \\ v_{23}  \end{pmatrix} \]

とできる。ただし、a,a',v_1,v_2\in \mathbb{R}^3である。   まとめると、

あるベクトルたちの線型結合で全部書き直そう

ということ。上では3次元ベクトル2本(v_1,v_2)用いて平面を構成した。aを平面H上の点a'としようということ、これを全データ点で行う。計算してみよう。V = [v_1,v_2]とするとVcv_1,v_2が貼る平面状の点を表すことができるので

    \[\|a - Vc\|^2  \]

を最小化するようなcを見つければいい。このときVc=a'となる。ここで

    \[\frac{\partial}{\partial x} x^T A x = (A+A^T)x\]

    \[ \frac{\partial}{\partial x} a^Tx = a^T, \frac{\partial}{\partial x} x^Ta = a\]

これらの公式を用いて

(1)   \begin{align*} \frac{\partial}{\partial c} \|a - Vc\|^2 &= \frac{\partial}{\partial c} (a - Vc)^T(a - Vc) \\ &= \frac{\partial}{\partial c} \left(c^TV^TVc - c^TV^Ta - a^TVc +a^Ta  \right) \\ &= \frac{\partial}{\partial c} \left(c^TV^TVc - 2a^TVc +a^Ta  \right) \end{align*}

微分を0とする。

(2)   \begin{align*} \frac{\partial}{\partial c} \|a - Vc\|^2 &= \frac{\partial}{\partial c} \left(c^TV^TVc - 2a^TVc +a^Ta  \right) \\ &= (V^TV + (V^TV)^T)c - 2V^Ta = 2V^TVc - 2V^Ta = 0 \end{align*}

従って逆行列をかけることで

(3)   \begin{align*} c =  (V^TV)^{-1}V^Ta \end{align*}

つまり!

(4)   \begin{align*} Vc =  V(V^TV)^{-1}V^Ta \end{align*}

a'である。

    \[V(V^TV)^{-1}V^T \]

Vの列ベクトル空間がはる空間への射影行列

という。 では数学の時間です。

データ\in \mathbb{R}^m(m次元)

平面を貼るベクトルをV=[v_1, \cdots, v_n]

ただしv_i \in \mathbb{R}^m , i=1,\cdots,n

とする。目標はVを見つけ出すこと。見つかれば上で導出した射影行列を全データにかければ良い。なんだけど、ちょっと長くなるから次の記事で。   でわ。   READMORE
  1. http://python.astrotech.io/machine-learning/principal-component-analysis.html#id1
  2. http://www.asahi-net.or.jp/~jb2y-bk/NaturalSci/math/daenmen.htm