こんにちは。情報系大学生のゆうき(@engieerblog_Yu)です。
今回は、特異値分解を効率的に実行するために開発されたエコノミーSVDと切り捨てSVDについてまとめていきたいと思います。
特異値分解とは?

特異値分解 (Singular Value Decomposition, SVD) は、行列を3つの行列の積に分解する手法です。
一般的に、特異値分解は、全ての特異値を計算しますが、特に大きな行列の場合、すべての特異値を計算することは計算コストが高いため、効率的な手法が必要とされます。
エコノミーSVDと切り捨てSVDは、特異値分解の効率的な実行を可能にするために開発された手法の一部です。
固有値分解と特異値分解の違いについては、以下の記事で解説しています。
エコノミーSVDについて
エコノミーSVDは、特異値分解の一種で、行列の次元よりも小さい次元の特異値行列を計算します。
エコノミーSVDを計算するためには、元の行列に対して次の手順を実行します。
- 元の行列を M (m×n) とし、M の特異値分解を行います。
- 特異値行列のサイズを確認し、特異値が 0 でないものの数を k とします。つまり、特異値行列のサイズは k×k になります。
- 左特異行列を L (m×k) とし、右特異行列を R (n×k) とします。
- 元の行列を次のように分解します。M = LΣR^T
- Σ は、k×k の対角行列であり、対角要素には特異値が含まれます。残りの対角要素はすべて 0 です。
このように、エコノミーSVDでは、元の行列を特異値行列の次元と同じ次元で分解するのではなく、特異値が 0 でない要素の数と同じ次元で分解するため、計算量を削減することができます。
また、エコノミーSVDは、元の行列を正確に再現するために必要な情報を保持しており、データの圧縮に適しています。
エコノミーSVDでは、元の行列を特異値行列の次元と同じ次元で分解するのではなく、特異値が 0 でない要素の数と同じ次元で分解する
エコノミーSVDはデータの圧縮に適している
切り捨てSVDについて
一方、切り捨てSVDは、特異値分解の一種で、上位の特異値のみを計算し、残りの特異値は無視する手法です。
切り捨てSVDを計算するためには、元の行列を M (m×n) とし、次の手順を実行します。
- 元の行列 M の特異値分解を計算します。このとき、特異値行列のうち、小さな値を切り捨てます。
- 切り捨てた特異値行列を Σ’ (k×k) とします。k は、切り捨てた後の特異値行列のサイズを表します。
- 左特異行列を L (m×k) とし、右特異行列を R (n×k) とします。
- 元の行列を次のように近似します。M ≈ LΣ’R^T
- Σ’ は、切り捨てた特異値が含まれる対角行列です。
切り捨てSVDは、元の行列を近似するため、切り捨てた特異値行列のサイズが小さくなるほど、近似の精度が低下することがあります。
しかし、一般に、特異値行列の大部分は小さな値であるため、適切なサイズの特異値行列を選択することで、元の行列を十分に近似することができます。
切り捨てSVDは、データの圧縮や次元削減に適しているため、機械学習や画像処理などの分野で広く使用されています。
また、切り捨てSVDは、非常に大きなデータセットに対しても、比較的効率的な計算が可能であるため、高速でスケーラブルなデータ解析に適しています。
切り捨てSVDは、元の行列を近似するため、切り捨てた特異値行列のサイズが小さくなるほど、近似の精度が低下することがある
一般に、特異値行列の大部分は小さな値であるため、適切なサイズの特異値行列を選択することで、元の行列を十分に近似できる
まとめ

エコノミーSVDと切り捨てSVDは、特異値分解の効率的な実行を可能にするために開発された手法
エコノミーSVDでは、特異値行列の特異値が 0 でない要素の数と同じ次元で分解する
切り捨てSVDは、特異値行列の特異値が小さい値を切り捨てて分解する
コメント