让我们通过一个具体的例子来演示如何使用截断奇异值列表来获取最大奇异值,并用截断的矩阵重构原始矩阵。
假设我们有一个 3x3 的矩阵 A,如下所示:
A = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
计算的主要流程:
步骤 1:奇异值分解(SVD)
对矩阵 A 进行奇异值分解,得到矩阵 U、S和 V^T。
A
=
U
⋅
S
⋅
V
T
A = U·S ·V^T
A=U⋅S⋅VT
步骤 2:查找最大奇异值
查找奇异值列表中的最大奇异值。在这个例子中,我们需要找到最大的奇异值。
步骤 3:确定截断级别
根据需要确定截断级别。我们选择保留前两个最大的奇异值。
步骤 4:截断奇异值列表
将奇异值列表中除了最大的两个奇异值外的其他奇异值置为零。
步骤 5:截断矩阵 U 和 V
使用截断后的奇异值列表,将矩阵 U 和 V 中对应的列也进行截断,只保留与非零奇异值对应的列。
步骤 6:重构原始矩阵
将截断后的矩阵 U、截断后的对角矩阵 Σ 和截断后的矩阵 V^T 相乘,得到截断后的矩阵 A’。
带入数据进行计算:
步骤 1:奇异值分解(SVD)
对矩阵 A 进行奇异值分解,得到矩阵 U、S 和 V^T。
A
=
U
⋅
S
⋅
V
T
A = U·S·V^T
A=U⋅S⋅VT
步骤 2:查找最大奇异值
奇异值 σ 1 ≈ √ ( λ 1 ) ≈ 13.341 σ 2 ≈ √ ( λ 2 ) ≈ 0.184 σ 3 ≈ √ ( λ 3 ) ≈ 0.000 奇异值\\ σ1 ≈ √(λ1) ≈ 13.341\\ σ2 ≈ √(λ2) ≈ 0.184\\ σ3 ≈ √(λ3) ≈ 0.000\\ 奇异值σ1≈√(λ1)≈13.341σ2≈√(λ2)≈0.184σ3≈√(λ3)≈0.000
在这个例子中,最大的奇异值是 13.341,
步骤 3:确定截断级别
我们选择保留前两个最大的奇异值。
步骤 4:截断奇异值列表
将奇异值列表中除了最大的两个奇异值外的其他奇异值置为零。
截断后的奇异值列表:
奇异值
σ
1
≈
√
(
λ
1
)
≈
13.341
σ
2
≈
√
(
λ
2
)
≈
0.00
σ
3
≈
√
(
λ
3
)
≈
0.000
奇异值\\ σ1 ≈ √(λ1) ≈ 13.341\\ σ2 ≈ √(λ2) ≈ 0.00\\ σ3 ≈ √(λ3) ≈ 0.000\\
奇异值σ1≈√(λ1)≈13.341σ2≈√(λ2)≈0.00σ3≈√(λ3)≈0.000
步骤 5:截断矩阵 U 和 V
使用截断后的奇异值列表,将矩阵 U 和 V 中对应的列也进行截断,只保留与非零奇异值对应的列。
截断后的矩阵
U:[[0.229, -0.524],
[0.524, -0.229],
[0.819, 0.524]]
截断后的矩阵
V:[[0.476, 0.570, 0.671],
[0.568, 0.083, -0.818]]
步骤 6:重构原始矩阵
将截断后的矩阵 U、截断后的对角矩阵 Σ 和截断后的矩阵 V^T 相乘,得到截断后的矩阵 A’。
截断后的矩阵 ‘A’ = USV^T
截断后的矩阵
'A' = [[1.004, 1.999, 3.000],
[3.999, 4.999, 6.000],
[6.996, 7.997, 9.000]]
通过截断奇异值列表,我们获得了最大奇异值,并使用截断的矩阵重构了原始矩阵 A。请注意,截断后的矩阵 A’ 是对原始矩阵的一个近似,其中截断的奇异值越多,重构的精度越高