Math World Lab

特異値分解(SVD)と次元圧縮

データの「本当に重要な方向」を数値で取り出す万能の行列分解

この単元の発見をシェア
3行要約(Key Takeaways / AIOサマリー)
1
特異値分解(SVD)は任意の行列 AA を A=UΣV⊤A = U\Sigma V^\top という「回転 → 軸ごとの伸縮 → 回転」の3段階に分解する手法
2
Σ\Sigma の対角成分(特異値)は大きい順に並び、最大の特異値に対応する方向がデータのばらつき(分散)が最も大きい方向を示す
3
上位いくつかの特異値・特異ベクトルだけを残して残りを捨てることで、情報損失を抑えながらデータを低次元に圧縮できる(画像圧縮・推薦システムの次元圧縮)

なぜこれを学ぶのか? — 現実社会とテクノロジーでの価値

Purpose & Motivation

なぜ生まれたのか?

特異値分解(SVD)は任意の行列 $A$ を $A = U\Sigma V^\top$ という「回転 → 軸ごとの伸縮 → 回転」の3段階に分解する手法

身につく武器・思考力

$\Sigma$ の対角成分(特異値)は大きい順に並び、最大の特異値に対応する方向がデータのばらつき(分散)が最も大きい方向を示す

実社会・ITでの活躍現場

  • •画像圧縮とレコメンドシステムにおける低ランク近似
  • •ITシステム・アルゴリズム実装における論理設計
  • •データ分析やシミュレーションにおける数理モデリング

Layer 1 — 直感・シミュレーター

散布図として与えられた2次元の点群データに対し、回転スライダーで「射影軸」の角度を変えてみよう。軸を回転させると、その軸上に点を射影したときの広がり(分散)がリアルタイムに表示される。分散が最大になる角度こそが第1特異値の方向であり、直交するもう一方の軸に沿った情報は次元圧縮の際に真っ先に捨てられる成分であることが体感できる。

✨ このあたりが第1特異値の方向(分散最大)です!
軸方向(青)の分散: 1.304
直交方向(赤・点線)の分散: 0.056

↑ 灰色の点群データに対し、青い軸(射影方向)を回転させてみよう。軸上の濃い青い点は、各データ点をその軸に射影した位置。分散が最大になる角度(約30°付近)が、この点群の第1特異値・第1特異ベクトルの方向であり、次元圧縮の際に「最も情報を保持する軸」として最初に選ばれる。

直感チェック!ミニクイズ

2次元の点群データにSVD(または主成分分析)を適用したとき、第1特異値に対応する方向はどのような性質を持つか?

Layer 2 — 定義・受験・証明

定義

任意の m×nm\times n 実行列 AA は、直交行列 U (m×m)U\ (m\times m)、対角行列 Σ (m×n)\Sigma\ (m\times n)、直交行列 V (n×n)V\ (n\times n) を用いて次のように分解できる(特異値分解)。

A=UΣV⊤A = U\Sigma V^\top

Σ\Sigma の対角成分 σ1≥σ2≥⋯≥0\sigma_1 \geq \sigma_2 \geq \cdots \geq 0 を「特異値」と呼び、UU の列を「左特異ベクトル」、VV の列を「右特異ベクトル」と呼ぶ。kk 個の特異値だけを残した近似 Ak=∑i=1kσiuivi⊤A_k = \sum_{i=1}^k \sigma_i u_i v_i^\top は、階数 kk の行列の中で AA に最もよく近似する(低ランク近似)。

公式・数理モデル

A=UΣV⊤=∑i=1rσi uivi⊤,A⊤A vi=σi2viA = U\Sigma V^\top = \sum_{i=1}^{r} \sigma_i\, u_i v_i^\top, \qquad A^\top A\, v_i = \sigma_i^2 v_i

証明・導出

特異値と固有値の関係の導出: 対称行列 A⊤AA^\top A(n×nn\times n)は半正定値であるため、固有値はすべて非負の実数であり、直交する固有ベクトル v1,…,vnv_1,\dots,v_n が存在する(A⊤A vi=λivi, λi≥0A^\top A\, v_i = \lambda_i v_i,\ \lambda_i \geq 0)。 この固有値の平方根を特異値と定義する:σi=λi\sigma_i = \sqrt{\lambda_i}。 σi>0\sigma_i > 0 のとき、ui=1σiAviu_i = \dfrac{1}{\sigma_i} A v_i とおくと、

ui⊤uj=1σiσjvi⊤A⊤Avj=λjσiσjvi⊤vj=δiju_i^\top u_j = \frac{1}{\sigma_i \sigma_j} v_i^\top A^\top A v_j = \frac{\lambda_j}{\sigma_i \sigma_j} v_i^\top v_j = \delta_{ij}

より {ui}\{u_i\} も正規直交系をなす。 このとき Avi=σiuiA v_i = \sigma_i u_i が成り立つので、V=[v1,…,vn]V=[v_1,\dots,v_n]、U=[u1,…,um]U=[u_1,\dots,u_m](不足分は直交補完)とすれば AV=UΣAV = U\Sigma、すなわち A=UΣV⊤A = U\Sigma V^\top が得られる。 また、データ行列 AA の各行を中心化(平均0)しておけば、A⊤AA^\top A は共分散行列に比例するため、右特異ベクトル v1v_1 は主成分分析(PCA)の第1主成分の方向と一致し、σ12\sigma_1^2 はその方向の分散(の定数倍)を表す。

押さえておきたいポイント

  • SVDは正方行列に限らず、任意の長方形行列に対して常に存在する(固有値分解より適用範囲が広い)
  • 第1特異値・特異ベクトルの方向は、データを1次元に射影したときに情報損失(二乗誤差)を最小にする最適な軸である(エッカート・ヤングの定理)
  • 上位 kk 個の特異値だけを使う低ランク近似 AkA_k は、階数 kk の行列の中でフロベニウスノルム誤差 ∥A−Ak∥F\|A-A_k\|_F を最小化する最良近似である
  • 画像圧縮では画素行列にSVDを適用し上位特異値のみ保存、推薦システムでは評価行列(ユーザー×商品)にSVDを適用して潜在的な嗜好パターンを抽出する
参照基準・学習指導要領との対応

本トピックの内容・数理モデルは、文部科学省学習指導要領(算数・数学・情報)および国際標準カリキュラムに準拠し、エンジニアリング現場の実装事例と照らし合わせてMath World Lab編集部により検証・作成されています。

Layer 3 — 工学応用・現場実装

画像圧縮とレコメンドシステムにおける低ランク近似

グレースケール画像は画素値の行列とみなせるため、SVDで分解して上位 kk 個の特異値のみを保持することでデータ量を大幅に削減できる(画像圧縮)。同様に、ユーザーと商品の評価行列にSVDを適用すると、少数の「潜在因子」でユーザーの嗜好と商品の特徴を近似的に表現でき、協調フィルタリング型レコメンドの基礎となる。

1// 簡略化した低ランク近似(実際のSVDはヤコビ法やべき乗法などで計算するが、
2// ここでは概念を示すため、既に得られたU, Σ, V^T から近似行列を再構成する例を示す)
3type Matrix = number[][];
4
5// 上位 k 個の特異値・特異ベクトルのみを使って行列を再構成する
6function reconstructLowRank(
7 U: Matrix, // m x r (左特異ベクトルを列に持つ)
8 singularValues: number[], // 長さ r(降順にソート済み)
9 V: Matrix, // n x r (右特異ベクトルを列に持つ)
10 k: number // 保持する特異値の個数(圧縮率を決める)
11): Matrix {
12 const m = U.length;
13 const n = V.length;
14 const result: Matrix = Array.from({ length: m }, () => new Array(n).fill(0));
15
16 // A_k = Σ_{i=1}^{k} σ_i * u_i * v_i^T (階数kの近似)
17 for (let i = 0; i < k; i++) {
18 const sigma = singularValues[i];
19 for (let row = 0; row < m; row++) {
20 for (let col = 0; col < n; col++) {
21 result[row][col] += sigma * U[row][i] * V[col][i];
22 }
23 }
24 }
25 return result;
26}
27
28// 圧縮率の目安: 元のデータ量 m*n に対し、
29// 階数kの近似に必要なデータ量は k*(m+n+1) 個の数値のみ
30function compressionRatio(m: number, n: number, k: number): number {
31 return (k * (m + n + 1)) / (m * n);
32}
33
34console.log(compressionRatio(512, 512, 20)); // 例: 512x512画像を上位20成分で近似 → 約0.08(約8%のデータ量)

次に学ぶならコレ!おすすめトピック

この単元と深い繋がりを持つ、あわせて学ぶと理解が深まるおすすめ単元

数理モデル・概念が近い関連トピック

関連度高大学数学

固有値・固有ベクトル

行列で変換しても「向きが変わらない」特別な方向

関連度高大学数学

線形変換と基底

行列が空間をどう歪めるか──基底ベクトルの行き先がすべてを決める

関連度高高校数学

行列の基本とアフィン変換

2×2行列で平面の空間を伸縮・回転・せん断させる幾何学

同じレベルで次に挑戦したいトピック

同レベル推薦大学数学

フーリエ変換と周波数分解

どんなに複雑な波も、単純なサイン波の重ね合わせに分解できる

同レベル推薦大学数学

ベイズの定理(条件付き確率と事前・事後確率)

新たな情報や証拠(エビデンス)を得て「確信度」を更新する確率論

同レベル推薦大学数学

正規分布と中心極限定理

あらゆるランダムなばらつきが最終的に収束する「釣鐘型の山」

工学・実社会での応用先でつながるトピック

工学・実践連携工学応用

勾配降下法

谷底を探すAIの基本アルゴリズム

工学・実践連携工学応用

ニューラルネットワークの数学(順伝播と活性化関数)

入力に重みを掛けて足し合わせ、非線形関数で発火させるAIの基本素子

工学・実践連携工学応用

レコメンドの仕組み(コサイン類似度とベクトル検索)

ユーザーの好みと商品の近さを「ベクトルのなす角」で判定するアルゴリズム

あなたの数学力をさらに伸ばす

数学の弱点診断や算数パズルに挑戦してみませんか?

簡単な質問に答えてあなたにぴったりの学習ロードマップを発見したり、直感を試すパズルで数の面白さを体験できます。