首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于奇异值分解的低阶逼近

基于奇异值分解的低阶逼近
EN

Stack Overflow用户
提问于 2022-10-11 15:37:55
回答 1查看 75关注 0票数 -1

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

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

请解释研究论文中提到的方法。

EN

回答 1

Stack Overflow用户

发布于 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))

代码语言:javascript
复制
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]相乘,将投影值转化为原始基。

代码语言:javascript
复制
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)))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74030676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档