どの行列も回転・伸縮・回転の合成
固有分解は正方行列が必要で、それでも失敗することがあります。特異値分解はどんな行列(長方形でも)にも使えます。A=UΣVT で、U と V は直交行列、Σ は非負の対角成分 σ1≥σ2≥⋯≥0(特異値)を持つ対角行列です。幾何学的には、A はまず VT で回転し、各軸 i を σi 倍し、最後に U で回転します。単位円は、特異値を半軸とする楕円になります。
A=UΣVT,σi=λi(ATA),∥A∥F2=i∑σi2,κ(A)=σminσ1(1) V の列は ATA の固有ベクトル、U の列は AAT の固有ベクトルで、固有値は σi2 です。つまりSVDは ATA に対するスペクトル定理ですが、その積を実際に作らずに計算します。積を作ると条件数が2乗になり、桁の半分を失うからです。事実は簡単に読み取れます。ランクは非零の特異値の個数、∥A∥2=σ1 は最大の伸び、フロベニウスノルムの2乗は特異値の2乗和、正方行列では ∣detA∣=∏σi、条件数 σ1/σmin は A が誤差をどれだけ増幅しうるかを表します。m≥n の m×n データ行列では、完全な U は m×m、Σ は m×n、V は n×n です。
2×2の例A=(3405) を考えます。
ATA=(25202025) の固有値は45と5なので、特異値は
σ1=45≈6.708、
σ2=5≈2.236 です。検算:
σ12+σ22=50=9+16+25=∥A∥F2、
σ1σ2=15=∣detA∣。条件数は
σ1/σ2=3 です。もし
σ2 が
0.001 なら条件数は約6700となり、
Ax=b を解くと4桁近く失われます。
- SVD:どの行列も直交行列 U, V と非負で降順の特異値により UΣVT と書ける。
- 事実:ランクは非零の σi の個数、∥A∥F2=∑σi2、∣detA∣=∏σi。
- 条件数:σ1/σmin。大きいと解が不安定で逆行列も信頼できない。
リターンから成分までを1回の呼び出しでX が平均を引いた T×N のリターン行列なら、その共分散は XTX/(T−1) なので、X の右特異ベクトルが主方向、σi2/(T−1) がその方向の分散です。X に直接SVDを施す方が、共分散行列を固有分解するよりPCAを正確に求められ、N>T でも動作します。 ラボ:採点される内容
- 最大の特異値20点
- フロベニウスの恒等式10点
- 特異値の積10点
- 完全SVDのサイズ15点
- 特異値と固有値15点
- 条件数15点
- なぜAᵀAを固有分解しないのか15点