用一个简单的小例子说明奇异值分解(SVD)的过程及其含义
时间: 2024-01-24 15:20:28 浏览: 24
假设我们有一个5x3的矩阵A,如下所示:
| 3 | 1 | 4 |
|---|---|---|
| 1 | 5 | 9 |
| 2 | 6 | 5 |
| 3 | 5 | 8 |
| 9 | 7 | 9 |
我们可以将该矩阵进行奇异值分解,得到三个矩阵U、S、V,使得A=USV^T,其中U和V是正交矩阵,S是对角矩阵。具体而言,S的对角线上的元素称为A的奇异值,它们按照从大到小的顺序排列。
现在,让我们一步步来看奇异值分解的过程。
1. 求出A的转置矩阵A^T与A的乘积AA^T,得到一个5x5的矩阵B,如下所示:
| 26 | 37 | 34 | 42 | 78 |
|----|----|----|----|----|
| 37 | 107| 69 | 88 | 144|
| 34 | 69 | 75 | 77 | 117|
| 42 | 88 | 77 | 98 | 170|
| 78 | 144| 117| 170| 319|
2. 求出B的特征值和特征向量。特征向量构成的矩阵为V,特征值按从大到小的顺序排列,构成一个对角矩阵Σ。
3. 求出A的乘积A^TU=US。其中U是由B的特征向量归一化后构成的矩阵。注意,这里的U并不是我们要求的正交矩阵,我们需要对U进行正交化。
4. 对U进行正交化,得到一个正交矩阵U。
5. 将Σ中非零的对角线元素取倒数后,得到一个新的对角矩阵Σ'。然后,将U、Σ'、V相乘,得到A的奇异值分解:A=USV^T。
在这个例子中,我们得到了如下的结果:
U=
|-0.244 |-0.245 | 0.516 |-0.199 | 0.758 |
|-------|-------|-------|-------|-------|
|-0.609 | 0.487 |-0.144 | 0.375 |-0.466 |
|-0.318 |-0.598 |-0.767 |-0.013 | 0.006 |
|-0.454 | 0.459 | 0.344 |-0.779 |-0.005 |
|-0.488 |-0.389 | 0.062 | 0.485 | 0.589 |
Σ=
|37.84 | 0 | 0 |
|------|------|------|
| 0 | 7.26 | 0 |
| 0 | 0 | 3.10 |
| 0 | 0 | 0 |
| 0 | 0 | 0 |
V=
|-0.461 |-0.243 |-0.856 |
|-------|-------|-------|
|-0.817 |-0.392 | 0.424 |
|-0.346 | 0.888 |-0.305 |
因此,A的奇异值分解为:
A =
| 3 | 1 | 4 |
|---|---|---|
| 1 | 5 | 9 |
| 2 | 6 | 5 |
| 3 | 5 | 8 |
| 9 | 7 | 9 |
=
|-0.244 |-0.245 | 0.516 |-0.199 | 0.758 |
|-------|-------|-------|-------|-------|
|-0.609 | 0.487 |-0.144 | 0.375 |-0.466 |
|-0.318 |-0.598 |-0.767 |-0.013 | 0.006 |
|-0.454 | 0.459 | 0.344 |-0.779 |-0.005 |
|-0.488 |-0.389 | 0.062 | 0.485 | 0.589 |
|37.84 | 0 | 0 |
|------|------|------|
| 0 | 7.26 | 0 |
| 0 | 0 | 3.10 |
| 0 | 0 | 0 |
| 0 | 0 | 0 |
|-0.461 |-0.243 |-0.856 |
|-------|-------|-------|
|-0.817 |-0.392 | 0.424 |
|-0.346 | 0.888 |-0.305 |
其中,奇异值分解的结果可以看作是将原矩阵A分解成了三个矩阵的乘积。这三个矩阵的含义如下:
- U:左奇异向量矩阵,包含了A的行空间的正交基。
- S:奇异值矩阵,对角线上的元素表示A的奇异值,其它元素为0。
- V:右奇异向量矩阵,包含了A的列空间的正交基。