特異値分解 (SVD: Singular Value Decomposition)
解説
特異値分解(SVD)とは、ある行列(データ)を、3つの行列の積に分解する線形代数の手法です。これにより、データの中に隠れている「本質的なパターン(潜在的な特徴)」を取り出すことができます。
行列を「ユーザー」「重要度」「アイテム」に分解する
最も有名な応用例は、動画配信サイトなどの「レコメンドシステム(協調フィルタリング)」です。
例えば、「ユーザー × 映画の評価」という巨大な行列 A があるとします。SVDを使うと、これを以下の3つに分解できます。
A = U Σ VT
- U(左特異ベクトル):ユーザーの「潜在的な好み」(例:アクション好き、ロマンス好き…)。
- Σ(特異値行列):そのパターンの「重要度」(対角成分に大きい順に並ぶ)。
- VT(右特異ベクトル):映画の「潜在的な特徴」(例:爆発シーンが多い、感動的…)。
特異値による「次元圧縮」
真ん中の行列(Σ)にある「特異値」は、情報の重要度を表しています。
小さい特異値(重要でない情報=ノイズ)を切り捨てて、「上位の大きな特異値だけ」を残して元の行列を復元すると、データ量は劇的に減りますが、本質的な情報は残ります。これを「低ランク近似」と呼び、画像の圧縮やノイズ除去などに利用されます。

G検定対策
出題ポイント
- 定義:任意の行列を「3つの行列の積」に分解する手法。
- 応用分野:
- 自然言語処理:LSI(潜在的意味インデックス)によるトピック分析。
- 推薦システム:ユーザーとアイテムの潜在的な関係性を見つける。
- 次元削減:主成分分析(PCA)の計算アルゴリズムとしても使われる。
- 特徴:正方行列でなくても(どんな形の行列でも)分解できる。
よくあるひっかけ問題
- × 特異値分解は、正方行列に対してのみ適用可能である
(解説)これが「固有値分解」との最大の違いです。SVDは長方形の行列(ユーザー数とアイテム数が違うなど)でも計算できます。 - × 特異値をすべて使うことで、最も効率的な次元削減ができる
(解説)逆です。小さい特異値を「捨てる(0にする)」ことで、ノイズを除去し、効率的な次元削減(低ランク近似)が可能になります。
