特異値分解(SVD)の計算
特異値分解は任意の実行列を$\\mathbf{A} = \\mathbf{U}\\mathbf{\\Sigma}\\mathbf{V}^T$の形に分解する重要な行列分解手法です。データ分析、主成分分析、機械学習など様々な分野で活用されています。
特異値分解の理論的基盤
Step 1: 特異値分解の定義
任意の$m \\times n$実行列$\\mathbf{A}$は以下のように分解できます:
$\\mathbf{A} = \\mathbf{U}\\mathbf{\\Sigma}\\mathbf{V}^T$
ここで:
- $\\mathbf{U}$:$m \\times m$直交行列(左特異ベクトル)
- $\\mathbf{\\Sigma}$:$m \\times n$対角行列(特異値)
- $\\mathbf{V}$:$n \\times n$直交行列(右特異ベクトル)
Step 2: 与えられた行列の確認
行列$\\mathbf{A}$:
$\\mathbf{A} = \\begin{pmatrix} 3 & 2 & 2 \\\\ -1 & 0 & 2 \\end{pmatrix}$
この行列は$2 \\times 3$なので、最大で2個の特異値を持ちます。
Step 3: $\\mathbf{A}^T\\mathbf{A}$の計算
特異値は$\\mathbf{A}^T\\mathbf{A}$の固有値の平方根として求められます。
$\\mathbf{A}^T = \\begin{pmatrix} 3 & -1 \\\\ 2 & 0 \\\\ 2 & 2 \\end{pmatrix}$
$\\mathbf{A}^T\\mathbf{A} = \\begin{pmatrix} 3 & -1 \\\\ 2 & 0 \\\\ 2 & 2 \\end{pmatrix} \\begin{pmatrix} 3 & 2 & 2 \\\\ -1 & 0 & 2 \\end{pmatrix}$
要素ごとの計算:
- $(1,1)$要素:$3 \\times 3 + (-1) \\times (-1) = 9 + 1 = 10$
- $(1,2)$要素:$3 \\times 2 + (-1) \\times 0 = 6$
- $(1,3)$要素:$3 \\times 2 + (-1) \\times 2 = 6 - 2 = 4$
- $(2,1)$要素:$2 \\times 3 + 0 \\times (-1) = 6$
- $(2,2)$要素:$2 \\times 2 + 0 \\times 0 = 4$
- $(2,3)$要素:$2 \\times 2 + 0 \\times 2 = 4$
- $(3,1)$要素:$2 \\times 3 + 2 \\times (-1) = 6 - 2 = 4$
- $(3,2)$要素:$2 \\times 2 + 2 \\times 0 = 4$
- $(3,3)$要素:$2 \\times 2 + 2 \\times 2 = 4 + 4 = 8$
$\\mathbf{A}^T\\mathbf{A} = \\begin{pmatrix} 10 & 6 & 4 \\\\ 6 & 4 & 4 \\\\ 4 & 4 & 8 \\end{pmatrix}$
Step 4: $\\mathbf{A}\\mathbf{A}^T$の計算(効率的な方法)
$2 \\times 2$行列の固有値計算の方が簡単なので、$\\mathbf{A}\\mathbf{A}^T$を計算します:
$\\mathbf{A}\\mathbf{A}^T = \\begin{pmatrix} 3 & 2 & 2 \\\\ -1 & 0 & 2 \\end{pmatrix} \\begin{pmatrix} 3 & -1 \\\\ 2 & 0 \\\\ 2 & 2 \\end{pmatrix}$
要素ごとの計算:
- $(1,1)$要素:$3^2 + 2^2 + 2^2 = 9 + 4 + 4 = 17$
- $(1,2)$要素:$3 \\times (-1) + 2 \\times 0 + 2 \\times 2 = -3 + 0 + 4 = 1$
- $(2,1)$要素:$(-1) \\times 3 + 0 \\times 2 + 2 \\times 2 = -3 + 0 + 4 = 1$
- $(2,2)$要素:$(-1)^2 + 0^2 + 2^2 = 1 + 0 + 4 = 5$
$\\mathbf{A}\\mathbf{A}^T = \\begin{pmatrix} 17 & 1 \\\\ 1 & 5 \\end{pmatrix}$
Step 5: 固有値の計算
$2 \\times 2$行列の固有値を求めるため、特性方程式を立てます:
$\\det(\\mathbf{A}\\mathbf{A}^T - \\lambda \\mathbf{I}) = 0$
$\\det\\begin{pmatrix} 17-\\lambda & 1 \\\\ 1 & 5-\\lambda \\end{pmatrix} = 0$
$(17-\\lambda)(5-\\lambda) - 1 \\times 1 = 0$
$85 - 17\\lambda - 5\\lambda + \\lambda^2 - 1 = 0$
$\\lambda^2 - 22\\lambda + 84 = 0$
Step 6: 2次方程式の解
2次方程式$\\lambda^2 - 22\\lambda + 84 = 0$を解きます:
$\\lambda = \\frac{22 \\pm \\sqrt{22^2 - 4 \\times 1 \\times 84}}{2 \\times 1}$
$= \\frac{22 \\pm \\sqrt{484 - 336}}{2}$
$= \\frac{22 \\pm \\sqrt{148}}{2}$
$= \\frac{22 \\pm 2\\sqrt{37}}{2}$
$= 11 \\pm \\sqrt{37}$
$\\sqrt{37}$の計算:
$6^2 = 36$, $6.1^2 = 37.21$なので、$\\sqrt{37} \\approx 6.08$
固有値:
- $\\lambda_1 = 11 + \\sqrt{37} \\approx 11 + 6.08 = 17.08$
- $\\lambda_2 = 11 - \\sqrt{37} \\approx 11 - 6.08 = 4.92$
Step 7: 特異値の計算
特異値は固有値の平方根:
$\\sigma_1 = \\sqrt{\\lambda_1} = \\sqrt{17.08} \\approx 4.13$
$\\sigma_2 = \\sqrt{\\lambda_2} = \\sqrt{4.92} \\approx 2.22$
特異値分解の性質
- 特異値の順序:$\\sigma_1 \\geq \\sigma_2 \\geq \\cdots \\geq 0$
- フロベニウスノルム:$\\|\\mathbf{A}\\|_F^2 = \\sum_i \\sigma_i^2$
- 作用素ノルム:$\\|\\mathbf{A}\\|_2 = \\sigma_1$
- ランク:$\\text{rank}(\\mathbf{A})$は非零特異値の個数
Step 8: 検証計算
フロベニウスノルム:
$\\|\\mathbf{A}\\|_F^2 = 3^2 + 2^2 + 2^2 + (-1)^2 + 0^2 + 2^2 = 9 + 4 + 4 + 1 + 0 + 4 = 22$
特異値による確認:
$\\sigma_1^2 + \\sigma_2^2 = 17.08 + 4.92 = 22.00$ ✓
Step 9: 幾何学的解釈
第1特異値$\\sigma_1 = 4.13$は:
- 行列$\\mathbf{A}$の最大の「伸縮係数」
- 任意の単位ベクトルに$\\mathbf{A}$を作用させたときの最大出力長
- データの主要な変動方向の強度
特異値分解の応用
Step 10: 実用的応用
- 主成分分析:データ行列の特異値分解
- 画像圧縮:低ランク近似による圧縮
- 推薦システム:協調フィルタリング
- 自然言語処理:潜在的意味解析
- 信号処理:ノイズ除去、特徴抽出
低ランク近似:
第1特異値のみを用いた近似:
$\\mathbf{A}_1 = \\sigma_1 \\mathbf{u}_1 \\mathbf{v}_1^T$
これは$\\mathbf{A}$の最良のランク1近似となります。
計算結果のまとめ
項目 | 値 | 意味 |
---|
第1特異値 | $\\sigma_1 = 4.13$ | 最大の伸縮係数 |
第2特異値 | $\\sigma_2 = 2.22$ | 2番目の伸縮係数 |
条件数 | $\\kappa = \\sigma_1/\\sigma_2 = 1.86$ | 数値的安定性 |
行列のランク | 2 | 線形独立な行・列の数 |
したがって、第1特異値は$\\sigma_1 = 4.13$です。