特異値分解(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$です。