奇异值分解
SVD(Singular Value Decomposition,奇异值分解)
numpy.linalg模块中的svd函数可以对矩阵进行奇异值分解。
分解的目标:
- 是一种因子分解运算,将一个矩阵分解为3个矩阵的乘积
- 3个矩阵: U, Σ \Sigma Σ 和 V,其中U和V是正交矩阵,分别称为左奇异值、右奇异值, Σ \Sigma Σ为奇异值。
numpy的实现
numpy.linalg.svd(A,full_matrices=1,compute_uv=1)
参数:
- A是一个形如(m,n)矩阵
- full_matrices的取值是为0或者1,默认值为1,表示输出的U和V是否为全矩阵。
- compute_uv的取值是为0或者1,默认值为1,表示输出3个矩阵。为0的时候只输出 Σ \Sigma Σ。
返回值:
返回3个矩阵U、 Σ \Sigma Σ、V
- full_matrices=1时:U大小为(m,m), Σ \Sigma Σ大小为(k),k=min(m,n),V大小为(n,n)。 A ( m , n ) = U ( m , m ) Σ k V ( n , n ) A_{(m,n)} = U_{(m,m)}\Sigma_{k}V_{(n,n)} A(m,n)=U(m,m)ΣkV