グラム行列の固有値分解で特徴ベクトルを得るのはkernel PCAをするのと同じこと

前回:

– グラム(カーネル)行列の固有値分解で対応する特徴ベクトルを得る

の続き.前回はグラム行列Kの固有値分解を用いてK=\Phi\Phi^Tを満たす特徴ベクトル(を縦に並べた行列)\Phiを求めてみました.いわゆるlow-rank近似というやつなんですかね.そして,新しい入力に対してその特徴ベクトルが計算できない,という問題がありました.

実はこれ,Kernel PCAと同じことをしているということに気づきました.似ているなぁ,とは思っていたのですが.まず問題を整理しよう.

Kernel PCAは,

\Phi\Phi^Tv_i=\lambda_i v_i, \ \Phi=[\phi(x_1)|\cdots|\phi(x_n)], \ \langle v_i, v_j \rangle=\delta_{ij}

という問題を解く(\Phiの定義が前回と変わっているのでご注意を).

ここでv_i=\Phi \alpha_iと置くと,

K\alpha_i=\lambda_i \alpha_i, \ \langle \alpha_i, \alpha_j \rangle=\delta_{ij}

となり,A=[\alpha_1|\cdots|\alpha_k], \ \lambda_1 \geq \ldots \geq \lambda_kを得る.

ここで,\langle v_i,v_j \rangle=\delta_{ij}であるためには,v_i=\frac{v_i}{\|v_i\|}=\frac{v_i}{\sqrt{\lambda_i}}としてやる必要がある.最終的に,V=[v_1|\cdots|v_k]=\Phi A \Lambda^{-\frac{1}{2}}を得る.

さて,元の空間の元x \in \mathcal{X}z=V^T \phi(x)と変換される.これを現在持っているデータ\Phiに適用すると,V^T \Phi = \Lambda^{-\frac{1}{2}} A^T \Phi^T \Phi = \Lambda^{-\frac{1}{2}} A^T K = \Lambda^{-\frac{1}{2}} \Lambda A^T = \Lambda^{\frac{1}{2}} A^Tとなる.

これは,前回と全く同じ結果である!驚きだ!

ここで,新しい入力x \in \mathcal{X}を考えると,これに対応する特徴ベクトルはz = V^T \phi(x) = \Lambda^{-\frac{1}{2}} A^T \Phi^T \phi(x) = \Lambda^{-\frac{1}{2}} A^T k(x), \ k(x)=[k(x,x_1) \cdots k(x,x_n)]^Tと表される.

これで,out-of-sample問題も解決だ.素晴らしいじゃないか.次はLPPとかについて書きたい.

グラム行列の固有値分解で特徴ベクトルを得るのはkernel PCAをするのと同じこと」への1件のフィードバック

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中