カーネルPCAとは何か?非線形次元削減の理論と実装を徹底解説
カーネルPCAとは — 概要と位置づけ
カーネル主成分分析(Kernel PCA、KPCA)は、線形である従来の主成分分析(PCA)を非線形に拡張した次元削減法です。観測データを高次元(場合によっては無限次元)の特徴空間に写像し、その特徴空間でPCAを行うことで、非線形な構造を捉えることができます。カーネル法の「トリック(kernel trick)」により、特徴空間の座標を明示的に計算せずに内積(カーネル関数)のみで処理できる点が特徴です。
なぜ線形PCAでは不十分なのか
PCAは共分散行列の固有分解によりデータの分散方向を見つけ、低次元表現を与えます。しかしデータが円環や螺旋など非線形な多様体に沿って分布している場合、線形変換のみではその構造を表現できません。こうした場合に、非線形変換でデータを高次元に写し、そこで線形PCAを行うことで、元空間では非線形な主成分を得られるのがカーネルPCAの利点です。
カーネルPCAの基本アイデア(直感)
各入力ベクトル x を非線形写像 Φ(x) により特徴空間 F に移します。F 空間でのPCAを行うには Φ(x) の内積が必要ですが、Φ を明示的に扱うと計算コストや次元の問題が生じます。ここでカーネル関数 k(x, y) = ⟨Φ(x), Φ(y)⟩ を用いれば、Φ を明示せずに内積だけで固有ベクトル問題を解けます。これが「カーネルトリック」の本質です。
数学的定式化(主要な式)
訓練データ {x1, ..., xN} に対してカーネル行列 K を作る:K_ij = k(x_i, x_j)。
特徴空間で中心化(平均を0にする):K を中心化して K~ を得る。成分表示で
K~_ij = K_ij − (1/N) Σ_l K_lj − (1/N) Σ_m K_im + (1/N^2) Σ_{l,m} K_lm。
固有値問題を解く:K~ α = λ α。ここで α は N 次元の固有ベクトル。
特徴空間の主軸(固有ベクトルに対応する方向) u は u = Σ_i α_i Φ(x_i) 。ただし正規化が必要。
新しい点 x の主成分への射影(中心化済みの場合)は
projection = ⟨u, Φ~(x)⟩ = Σ_i α_i k~(x_i, x)
ここで k~(x_i, x) は訓練データとの「中心化された」カーネル値で、成分ごとに
k~(x_i, x) = k(x_i, x) − (1/N) Σ_j k(x_j, x) − (1/N) Σ_j k(x_i, x_j) + (1/N^2) Σ_{j,l} k(x_j, x_l)
と計算されます(中心化は学習時と同じ基準で行う必要があります)。
アルゴリズム(実装上の手順)
入力データを準備し(必要ならスケーリング)、カーネル関数 k を選ぶ(RBF、多項式、線形など)。
訓練データ間のカーネル行列 K を計算する(O(N^2) メモリ)。
K を特徴空間で中心化して K~ を得る。
K~ の固有分解を行い、上位成分(固有値の大きいもの)を選択する(計算は通常 O(N^3))。
新規データを投影する場合、上で示した中心化済みカーネル値 k~(x_i, x) を計算して射影ベクトルを得る。
カーネルの選択とハイパーパラメータ
代表的なカーネル:RBF(ガウス)k(x,y)=exp(−γ||x−y||^2)、多項式 k(x,y)=(α x⋅y + c)^d、シグモイドなど。
RBF のパラメータ γ(または σ)や多項式の次数 d は結果に大きく影響する。一般的な初期値としては「データ間距離の中央値」を基にした γ(median heuristic)が使われることが多い。
過学習防止のために固有値の選択や正則化(低ランク近似、カーネル行列に小さい値を足すなど)を行う。
中心化の注意点
カーネルPCAでは特徴空間での中心化が必須です。訓練時に中心化したカーネル行列を使った場合、新規点の投影でも同じ「中心化基準」を適用する必要があります。上で示した成分ごとの式を用いると実装ミスを防げます。
射影と再構成(pre-image)問題
カーネルPCAは特徴空間での射影値(低次元座標)を与えますが、射影結果から元の入力空間の点を復元する(pre-image)ことは一般には困難です。特徴空間が高次元/非線形なため、対応する元の点が存在しない、または一意でない場合があります。これを解くために近似的最適化(Mikaらの手法、Kwok & Tsang など)や再構成ネットワークを使った手法が提案されていますが、必ずしも厳密解が得られるわけではありません。
計算量とスケーラビリティ
カーネル行列の計算と保存に O(N^2) のメモリが必要。固有分解は O(N^3) の計算量(フル分解)になり、大規模データには不向きです。
スケール対策として、Nystrom 法、部分サンプリング、近似カーネル(ランダムフーリエ特徴量)や不完全コレスキー分解などの近似手法が用いられます。
利点と欠点(まとめ)
利点:非線形な構造を捉えられる、カーネルを変更することで柔軟に表現力を調整できる。PCA と同様に教師なしでの特徴抽出・次元削減に使える。
欠点:計算・メモリコストが高い(大規模データに不向き)、pre-image 問題により再構成が難しい、カーネル/ハイパーパラメータの選択に敏感。
実用上のポイントとおすすめの使い方
データのスケーリング(標準化)は一般に有効。特に RBF カーネルは尺度に敏感。
まずは小さなサンプルでさまざまなカーネル・パラメータを試し、分解能(固有値の減衰)や可視化結果で選ぶ。
大規模データでは Nystrom 法やランダム特徴量による近似を検討する(近似精度と計算コストのトレードオフ)。
scikit-learn の KernelPCA 実装など、既存ライブラリを利用すると実装の手間が省ける。inverse_transform(近似的な pre-image)オプションもある。
応用例
次元削減による可視化(2次元・3次元に落とし込み、クラス構造やクラスタを可視化)
前処理としてのノイズ除去(特定の成分のみを使って再構成する近似的手法)
特徴抽出後に分類器/クラスタリング手法へ入力(非線形特徴の抽出)
画像処理(顔画像の非線形次元圧縮、パターン検出)や異常検知など
まとめ
カーネルPCAは、カーネルトリックを用いて非線形次元削減を実現する強力な手法です。小〜中規模のデータセットで非線形構造を可視化・抽出する際に有用ですが、計算負荷や pre-image 問題、ハイパーパラメータ選びには注意が必要です。大規模データでは近似手法の導入が現実的な選択肢になります。
参考文献
- Bernhard Schölkopf, Alexander Smola, Klaus-Robert Müller (1998) "Nonlinear component analysis as a kernel eigenvalue problem." Neural Computation.
- scikit-learn: KernelPCA — User Guide
- Wikipedia: Kernel principal component analysis
- S. Mika et al. (1999) "Kernel PCA and de-noising in feature space" — 技術報告 / 論文(pre-image 等の議論)
- J. Kwok & I. Tsang (2003) "The Pre-Image Problem in Kernel Methods" — 論文(pre-image の扱い)
- Christopher M. Bishop, "Pattern Recognition and Machine Learning"(参考文献としてのカーネル法の概説)
投稿者プロフィール
最新の投稿
IT2025.11.21Googleトレンド完全ガイド:機能解説と実務での活用術
IT2025.11.21CV率(コンバージョン率)の徹底解説:計算方法・分母の選び方・マクロ/マイクロCV・CRO戦略とA/Bテストの要点
IT2025.11.21LPOとは何か?基本定義から実務フロー・KPI・A/Bテストまで徹底解説
IT2025.11.21CVR最適化の基礎と実務フロー:ROIを最大化する完全ガイド

