カーネル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 問題、ハイパーパラメータ選びには注意が必要です。大規模データでは近似手法の導入が現実的な選択肢になります。

参考文献