主成分分析(PCA)と特異値分解の数理
高次元データを少ない軸へ圧縮する原理を、分散最大化と再構成誤差最小化が同値であること、そしてSVDとの一致まで導出。寄与率・白色化・線形の限界まで腑に落とせます。
- 1.PCA は中心化したデータの共分散行列を固有分解し、固有値の大きい順に固有ベクトル(主成分)を選ぶ。固有値=その軸方向の分散。
- 2.「分散を最大化する軸を取る」ことと「低次元へ射影したときの再構成二乗誤差を最小化する」ことは同じ最適化で、解はどちらも共分散行列の上位固有ベクトル。
- 3.データ行列の SVD を取れば共分散の固有分解を計算でき、右特異ベクトルが主成分、特異値の二乗が分散に対応。寄与率で次元数を決め、白色化で各軸の分散を1にそろえられる。
PCA は「分散の大きい向き」を順に取り出す
PCA(主成分分析)は、高次元のデータを情報の損失を最小に抑えつつ少数の軸へ圧縮する手法です。出発点はデータの中心化です。サンプルを n 個、各サンプルが d 次元ベクトル x_i だとし、まず平均 μ = (1/n)Σ x_i を全サンプルから引いて中心化します。中心化済みデータを行に並べた行列を X(形状 n × d)と書きます。
中心化したデータの共分散行列は次の d × d 対称行列です。
C = (1/n) · Xᵀ · X (形状 d × d、対称かつ半正定値)
C の対角成分は各特徴の分散、非対角成分は特徴間の共分散です。PCA の目標は、「データの散らばり(分散)を最もよく説明する方向」を順番に見つけることに帰着します。
分散最大化として定式化する
単位ベクトル w(wᵀw = 1)への射影 Xw の分散は wᵀ C w で表せます。最も分散を稼ぐ第1主成分は、この値を最大化する w です。
maximize wᵀ C w subject to wᵀ w = 1
制約付き最大化なのでラグランジュ未定乗数 λ を導入し wᵀ C w - λ(wᵀ w - 1) を w で微分してゼロと置くと、固有値方程式が現れます。
C w = λ w
つまり最適な w は C の固有ベクトルで、そのときの目的関数値は wᵀ C w = λ、すなわちその軸方向の分散がちょうど固有値 λ に等しい。よって分散を最大にする第1主成分は最大固有値に対応する固有ベクトルです。第2主成分は「第1主成分と直交する」制約のもとで同じ最大化を解くと、2番目に大きい固有値の固有ベクトルになります。C は対称なので固有ベクトルは互いに直交し、固有値は非負(半正定値)です。
固有値を大きい順に λ1 ≥ λ2 ≥ … ≥ λd と並べると、第 k 主成分が捉える分散はちょうど λk。全分散は固有値の総和(=C のトレース=各特徴の分散の合計)に等しく、上位 k 個を足し合わせた割合が「どれだけ情報を残せたか」を表します。
再構成誤差最小化と同値であること
PCA にはもう一つの顔があります。上位 k 本の主成分が張る部分空間 W(列が正規直交ベクトル、形状 d × k)へデータを射影し、また戻したときの再構成二乗誤差を最小化する問題です。
minimize Σ_i || x_i - W Wᵀ x_i ||²
ここで W Wᵀ は部分空間への直交射影行列です。各サンプルについて「元のノルムの二乗 = 射影成分の二乗 + 残差の二乗」(ピタゴラスの定理)が成り立つので、データ全体では次が成立します。
(全分散・固定)=(射影が捉える分散)+(再構成誤差)
左辺はデータで決まる定数なので、再構成誤差を最小化することは射影が捉える分散を最大化することと完全に同じです。したがって両者の最適解は一致し、どちらも C の上位 k 個の固有ベクトルになります。「情報を最大限残す軸」と「最も忠実に復元できる軸」が同じものだ、という事実が PCA の数理的な核心です。
SVD との関係と次元削減の幾何
実務では共分散行列 C を作らず、データ行列 X を直接**特異値分解(SVD)**します。
X = U Σ Vᵀ
U(n × n)と V(d × d)は直交行列、Σ は非負の特異値 σ1 ≥ σ2 ≥ … を対角に並べた行列です。これを共分散に代入すると関係が見えます。
C = (1/n) Xᵀ X = (1/n) V Σᵀ Σ Vᵀ
これは C の固有分解そのもので、V の列(右特異ベクトル)がそのまま主成分、固有値は λk = σk² / n です。つまり特異値の二乗がその軸の分散に比例します。Xᵀ X を明示的に作ると数値誤差が増幅されやすい(条件数が二乗になる)ため、X を直接 SVD する方が安定で、これが標準実装の理由です。低次元への射影(スコア)は X V_k = U_k Σ_k で得られます。
幾何的には、SVD はデータ雲を**回転(V による軸の取り直し)→ 軸ごとの伸縮(Σ)→ 回転(U)**に分解しています。PCA はこのうち「最も伸びている軸」から順に k 本だけ残し、薄い方向を捨てる操作にあたります。U Σ の座標は、向きで似たものが近くに来るという点で 埋め込み(Embedding) と同じ発想の低次元表現であり、得られた低次元ベクトルは ベクトルデータベース での検索インデックスの軽量化にも使われます。
寄与率・白色化・限界
寄与率(explained variance ratio) は λk / Σλ、その累積で「上位 k 軸で全分散の何割を説明できるか」を測り、次元数 k の決定に使います。累積寄与率が 0.9 を超える最小の k、あるいは固有値が急に小さくなる肘(エルボー)を選ぶのが定石です。
白色化(whitening) は各主成分のスコアを対応する √λk で割り、すべての軸の分散を1にそろえる前処理です。Z = X V Σ⁻¹·√n のような変換で、軸間が無相関かつ等分散になり、後段モデルの学習が安定します。役割としては特徴間のスケール差を均す 正規化レイヤー と通じますが、白色化は軸の相関まで除去する点が異なります。
PCA は線形変換しか扱えず、曲がった多様体(スイスロールのような構造)はうまく展開できません。また分散の大きさを情報量とみなすため、スケールの大きい特徴に引っ張られます。単位の異なる特徴を混ぜるときは事前の標準化(各特徴を平均0・分散1)が事実上必須です。さらに「分散が大きい=有用」とは限らず、分類に効く軸が分散の小さい方向に潜むこともあります。
| 観点 | PCA(線形) | 非線形手法(例) |
|---|---|---|
| 扱える構造 | 線形の相関・直線的な散らばり | 曲がった多様体(t-SNE / UMAP / カーネルPCA) |
| 目的関数 | 分散最大化=再構成誤差最小化 | 近傍関係や尤度の保存など手法ごとに異なる |
| 逆変換 | 射影行列で明示的に復元できる | 一般に逆変換は困難・近似的 |
| 主な用途 | 前処理・白色化・圧縮・ノイズ除去 | 可視化・クラスタ構造の探索 |
(1)主成分は共分散行列の固有ベクトル、固有値=その軸の分散。(2)分散最大化と再構成二乗誤差最小化は同値で同じ解を持つ。(3)データ行列の SVD の右特異ベクトルが主成分、特異値の二乗が分散に対応し、共分散を作らず直接 SVD する方が数値的に安定。この3点を式の流れで言えれば十分です。
PCA は「分散の大きい向きを順に残す」という一文に集約できますが、その背後では分散最大化・再構成誤差最小化・SVD という三つの見方が一点で交わります。線形・分散偏重という前提を理解したうえで使えば、次元削減・白色化・ノイズ除去の確実な土台になります。生成モデルの潜在空間圧縮を学ぶ橋渡しとしては VAE と ELBO も合わせて読むと、線形圧縮から確率的な潜在表現への発展が見えてきます。
AI/機械学習 Article
主成分分析(PCA)と特異値分解の数理を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
PCA
比較で見る軸
難易度: advanced / カテゴリ: AI/機械学習 / タグ数: 5
導入後に効く点
「分散を最大化する軸を取る」ことと「低次元へ射影したときの再構成二乗誤差を最小化する」ことは同じ最適化で、解はどちらも共分散行列の上位固有ベクトル。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- AI/機械学習
- タグ数
- 5
判断チェックリスト
- 自社の用途が「PCA / SVD」に近いか確認する。
- 強みである「PCA は中心化したデータの共分散行列を固有分解し、固有値の大きい順に固有ベクトル(主成分)を選ぶ。固有値=その軸方向の分散。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。