主成分分析
主成分分析(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° は第一列だけを残す方向です。
- 生データ。 平均は
(6,5)、原点は群から離れています。 - 中心化。 各行から
(6,5)を引きます。平均に一致する一点は原点へ来て、主座標もゼロになります。 - 水平射影。 保持分散は
9.27 cm²。 - 予算。
(11,9)は(5,4)となり、投影座標 5、垂直残差 4、‖x‖²=25+16=41。線を回しても斜辺は不変です。十二点を合計して 11 で割ると保持約9.27、残り約5.27、合計約14.55 cm²。個別の丸めで表示値の和に 0.01 の差が出ます。 - 20° 刻み。 九方向を記録します。20° は
88.25%、40° は94.86%、60° は80.47%、80° は51.83%、120° は5.78%、160° は32.81%。180° 後は同じ投影線です。120° は標本角の底であり、厳密な直交主方向ではありません。 - 共分散。
C≈[[9.27,6.27],[6.27,5.27]]。左上は 0° の分散です。 - 連続曲線。
v(θ)=trace(C)/2+a cos(2(θ−θ₁))、a=(λ₁−λ₂)/2。九点はこの上に乗り、行列は試さなかった角度も含みます。 - 固有分解。 最適角は 36.16°、
λ₁≈13.86、95.26%。残るλ₂≈0.69。40° の試行は約 0.4 パーセントポイント低く、解は走査ではなく分解から得ます。 - 座標変更。 世界を
−36.16°回し、第一方向を水平にします。点間距離は同じで、座標を(z₁,z₂)に変えます。 - 削減。 z₂ をゼロにし z₁ 一数だけを保持、分散は
95.26%。平均点は元からゼロです。 - 再構成。
x̂=z₁u₁+mean。全再構成点が一本の線に乗り、誤差は捨てた座標です。標本正規化の残差尺度は√λ₂≈0.83 cm。一点当たり RMSE は√((n−1)λ₂/n)で少し小さく、同じ値とは呼べません。 - 比較。 第二列を捨てる尺度は約
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、逐次・ランダム化法は省略します。白色化は射影後に標準偏差でさらに割り、回転と削減だけの場合とは異なります。
続けて学ぶ
同じ手法につながるレッスンや、次の概念への入口です。
誤りや気になる点を見つけましたか? フィードバックを送る。