SVD分解

研一的时候那会觉得svd分解,好像有点用不着,,到研三的时候才发现这玩意用处可大了,于是就总结一下,便于以后学习。如有不对的地方还望留言,请批评指正哦~

SVD分解

应用领域

SVD最初用于PCA求解中比较多,但随着推荐系统的流行,SVD逐渐在文本领域中发挥其优势。

优缺点

公式推导

实例分析

总结

### SVD算法原理 奇异值分解(Singular Value Decomposition, SVD)是一种能够应用于任意大小矩阵的因式分解方式。对于给定的$m\times n$矩阵$\mathbf{A}$,其SVD可以表达为三个矩阵的乘积: \[ \mathbf{A}=\mathbf{U}\boldsymbol{\Sigma }\mathbf{V}^{*} \] 其中,$\mathbf{U}$是$m\times m$正交矩阵;$\boldsymbol{\Sigma }$是由降序排列的非负实数构成的对角线矩阵,称为奇异值;而$\mathbf{V}^*$代表$n\times n$正交矩阵$\mathbf{V}$的共轭转置[^1]。 为了求解上述分量,通常先计算$\mathbf{A}^\mathrm{T}\mathbf{A}$或者$\mathbf{AA}^\mathrm{T}$这样的方阵来进行特征分解,因为这两个操作产生的结果都是方阵,并且可以通过标准的方法找到它们各自的特征向量和对应的特征值。具体来说,当处理$\mathbf{A}^\mathrm{T}\mathbf{A}$时,所获得的特征向量构成了右奇异向量集$\mathbf{V}$的一部分,而相应的平方根则给出了奇异值[^2]。 ### 应用场景 作为一种强大的工具,SVD广泛用于数据压缩、图像处理等领域。通过保留主要成分并舍弃较小贡献的部分,可以在很大程度上减少存储空间而不明显损失信息质量。此外,在推荐系统中也经常利用SVD来预测用户可能感兴趣的商品或服务,从而提高个性化服务水平[^3]。 值得注意的是,虽然这里讨论了如何针对一般矩形矩阵执行SVD的过程,但对于某些特殊类型的矩阵(比如对称矩阵),还可以采用其他更为高效的分解策略,如特征值分解(Eigenvalue Decomposition),这取决于实际应用场景的需求[^4]。 ```python import numpy as np from scipy.linalg import svd # 定义一个随机矩阵作为例子 np.random.seed(0) matrix = np.random.rand(5, 3) # 执行奇异值分解 u, s, vh = svd(matrix) print("左奇异向量 U:\n", u) print("\n奇异值 Sigma (仅显示对角元素):\n", s) print("\n右奇异向量 V.T:\n", vh) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值