我在研究纸。这份文件提到:


但是,在搜索和引用其他来源后,我发现使用SVD的矩阵的低秩近似如下:

请解释研究论文中提到的方法。
发布于 2022-10-11 18:38:06
它们只需要将SVD分解分解到使用的组件和未使用的组件中,就会稍微复杂一些。
注意A = sum(U[:, i:i+1] * s[i] * V[i:i+1,:] for i in range(len(s)),
import numpy as np
A = np.random.rand(10, 15)
U, s, V = np.linalg.svd(A)
assert np.allclose(A, U @ np.diag(s) @ V.T)
assert np.allclose(A, sum(s[i] * U[:, i:i+1] * V[i:i+1,:]
for i in range(len(s))))注意,U[:, :M].T的左乘法将把矩阵投影到M第一个左奇异向量的子空间。然后将投影值与U[:,:M]相乘,将投影值转化为原始基。
M=6
assert np.allclose(U[:, :M] @ U[:, :M].T @ A,
sum(s[i] * U[:, i:i+1] * V[i:i+1,:] for i in range(M)))https://stackoverflow.com/questions/74030676
复制相似问题