大きな画面での利用をおすすめします — アニメーションと操作がより快適になります。
入力

主成分分析

主成分分析(PCA)は分散の大きい方向へ投影して次元を減らします。データを中心化し、共分散行列の固有ベクトルを求めます。最大固有値の方向が第一主成分で、その固有値が保持する標本分散です。

中心化した一点は方向に沿う射影と垂直残差に分かれます。ピタゴラスの定理で二つの平方和は元の長さの平方。全点で同じ分母を使うと、保持分散+残りの分散=全分散という固定予算になります。保持分散の最大化は、同じ尺度での再構成誤差の最小化でもあります。

仕組み

十二個の石の長さと幅をセンチメートルで測ると、点群は右上にあります。平均を引いて原点の周りへ動かし、相対的な形を保ちます。中心化せず二次モーメントを分解すると、平均と原点の隔たりも目的へ入り、群の広がりより平均へ向く方向を選びかねません。

単位方向 u に対する座標は z=x·u、再構成射影は zu です。射影は直線への垂足です。標本共分散の規約では:

C = XᵀX / (n−1)
v(u) = uᵀCu
r(u) = Σ‖xᵢ − (xᵢ·u)u‖² / (n−1)
v(u) + r(u) = trace(C)

X は中心化済みで、r と分散はともに n−1 で割ります。一点当たり MSE の分母 n と混同しません。初期例の全分散は 14.55 cm²。方向は配分だけを変えます。

線形回帰は y を目的として縦の残差を測ります。PCA はどちらの列も正解とせず、正射影の距離を使います。y を x から予測する問題ではありません。

C の対角は各特徴の分散、非対角は共分散です。単位ベクトルの uᵀCu を最大化する解は最大固有値の固有ベクトル。二次元では直交する二方向を得て、固有値の和が trace です。PC1、u₁ は一始まりです。np.linalg.eigh は固有値を昇順で返すので、並べ替えなければ同じ方向は最後の列 vecs[:,-1] です。

ステップごとの例

初期の十二点で試す θ=0° は第一列だけを残す方向です。

  1. 生データ。 平均は (6,5)、原点は群から離れています。
  2. 中心化。 各行から (6,5) を引きます。平均に一致する一点は原点へ来て、主座標もゼロになります。
  3. 水平射影。 保持分散は 9.27 cm²。
  4. 予算。 (11,9) は (5,4) となり、投影座標 5、垂直残差 4、‖x‖²=25+16=41。線を回しても斜辺は不変です。十二点を合計して 11 で割ると保持約 9.27、残り約 5.27、合計約 14.55 cm²。個別の丸めで表示値の和に 0.01 の差が出ます。
  5. 20° 刻み。 九方向を記録します。20° は 88.25%、40° は 94.86%、60° は 80.47%、80° は 51.83%、120° は 5.78%、160° は 32.81%。180° 後は同じ投影線です。120° は標本角の底であり、厳密な直交主方向ではありません。
  6. 共分散。 C≈[[9.27,6.27],[6.27,5.27]]。左上は 0° の分散です。
  7. 連続曲線。 v(θ)=trace(C)/2+a cos(2(θ−θ₁))、a=(λ₁−λ₂)/2。九点はこの上に乗り、行列は試さなかった角度も含みます。
  8. 固有分解。 最適角は 36.16°、λ₁≈13.86、95.26%。残る λ₂≈0.69。40° の試行は約 0.4 パーセントポイント低く、解は走査ではなく分解から得ます。
  9. 座標変更。 世界を −36.16° 回し、第一方向を水平にします。点間距離は同じで、座標を (z₁,z₂) に変えます。
  10. 削減。 z₂ をゼロにし z₁ 一数だけを保持、分散は 95.26%。平均点は元からゼロです。
  11. 再構成。 x̂=z₁u₁+mean。全再構成点が一本の線に乗り、誤差は捨てた座標です。標本正規化の残差尺度は √λ₂≈0.83 cm。一点当たり RMSE は √((n−1)λ₂/n) で少し小さく、同じ値とは呼べません。
  12. 比較。 第二列を捨てる尺度は約 2.30 cm、第二主成分なら約 0.83 cm、比は約 2.8。どちらも一点一数ですが、PCA は方向を選びます。共有の平均と主方向の保存費用も残ります。

用途と学習の境界

圧縮は少ない座標と再構成誤差を交換し、可視化は多次元を二次元へ写します。無相関化は標本の主座標の共分散を対角にしますが、統計的独立とは異なります。ノイズ除去は信号が保持方向、ノイズが捨てる方向に主にあるときだけ有効です。

平均、標準偏差、主成分は全てデータから推定します。訓練 fold で StandardScaler と PCA を当てはめ、検証・テスト fold へ適用します。全体で当てはめてから分割すると評価情報が漏れます。保持する k も検証する選択です。

単位と説明分散

幅を cm から mm にして第二列を十倍にすると、石は同じでも PC1 は 83.19° へ回り、説明分散は 99.67% に上がります。数値を拡大した幅をほぼ残すだけです。高い割合は元の用途に適した表現の証明ではありません。

各列を単位分散にすると共分散行列は相関行列になります。この例の正の単位倍率では、標準化座標の 45.00°、94.85% が保たれます。単位選択の影響を除いた証拠であり、全用途で標準化が正解とは限りません。物理的な尺度に意味があるなら目的に沿って決め、定数列は別に扱います。

大きな分散とクラス情報

別の十二点は二クラスが同じ広い方向に延び、少しずれています。PC1 は 86.91% を取りますが、二クラスの投影は混ざります。PC2 の 13.09% が明確に分けます。標準化しても PC1 は 83.23% で混合したままです。

PCA はラベルを見ず、分離を最適化しません。成分を多く残す、目的を変える、教師あり手法を使うのは別の選択です。線形判別分析はクラス間とクラス内の広がりを比べ、異なる問いに答えます。

計算量

n 点 d 特徴の C 構成は O(nd²)、対称 d×d 分解は O(d³)、k 成分への射影は O(ndk)。C の空間は O(d²)、データは O(nd) です。

中心化 X を直接 SVD すれば同じ主方向を得て、C の構成による条件数の二乗を避けられます。速度は行列の形、ソルバー、保持ランク次第です。この良条件な二次元例では表示精度内で一致します。

境界ケース

  • 平均点は中心化後ゼロで、どの削減でも平均へ再構成されます。
  • λ₁=λ₂ なら全方向が同分散で、任意の直交基が有効です。点群が見た目に完全な円である必要はありません。
  • λ₂=0 かつ全分散が正なら共線で、一成分が無損失です。全点同一なら全分散ゼロで説明比自体が未定義です。
  • u₁ と −u₁ は同じ分散を保持します。座標も同時に反転させ、矢印の任意の向きに意味を加えません。画面は角度を [0°,180°) に固定します。
  • 中心化後のランクは最大 min(d,n−1)。非零ランクより多い成分は標本分散を増やさず、微小な値は数値誤差の場合があります。

よくある間違い

  • 分散を距離と読む。0.69 は cm²、平方根が対応尺度で、n と n−1 の規約も示します。
  • 中心化を忘れる。未中心化の分解には平均のずれも入ります。通常の PCA と他の分解の既定動作を区別します。
  • 異なる単位を点検しない。大きな数の列が方向を支配し得ます。
  • 高説明分散を高品質とする。現在の尺度で分散が集中する割合です。
  • 主成分に既存の意味を期待する。幾何のために選ぶ線形結合で、命名や解釈は保証しません。
  • 低分散ならクラス情報も不要と思う。識別情報が末尾にある場合があります。

簡略化の範囲

二次元から一へ減らす最小の非自明な例です。多次元では scree plot、累積分散、下流の検証で k を選びますが、割合は用途の品質に代わりません。本課は 2×2 共分散行列の閉形式解で二分散と一共分散を示します。白色化、カーネル PCA、逐次・ランダム化法は省略します。白色化は射影後に標準偏差でさらに割り、回転と削減だけの場合とは異なります。