奇异值分解——matlab中svd函数用法总结

为了学PCA,发现要用到svd就先研究研究。

svd奇异值分解函数声明翻译

%SVD    Singular value decomposition.

SVD奇异值分解

%   [U,S,V] = SVD(X) produces a diagonal matrix S, of the same 
%   dimension as X and with nonnegative diagonal elements in
%   decreasing order, and unitary matrices U and V so that
%   X = U*S*V'.

[U,S,V] = SVD(X) 生成一个对角矩阵S,它的维数与X相同,
对角元素的降序为非负,酉矩阵U和V使 X = USV’

%   S = SVD(X) returns a vector containing the singular values.

S = SVD(X) 返回包含单数值的向量。

%   [U,S,V] = SVD(X,0) produces the "economy size"
%   decomposition. If X is m-by-n with m > n, then only the
%   first n columns of U are computed and S is n-by-n.
%   For m <= n, SVD(X,0) is equivalent to SVD(X).

产生“经济规模”的分解。如果X是m-by-n且m>n,则只计算U的前n列,S是n-by-n。对于m<=n,SVD(X,0)相当于SVD(X)。

%   [U,S,V] = SVD(X,'econ') also produces the "economy size"
%   decomposition. If X is m-by-n with m >= n, then it is
%   equivalent to SVD(X,0). For m < n, only the first m columns 
%   of V are computed and S is m-by-m.

[U,S,V]=SVD(X,‘econ’)也会产生“经济规模”分解。如果X是m-by-n且m>=n,则它等价于SVD(X,0)。对于m<n,只计算V的前m列,S是m-by-m。

自己的理解

看了几个推导没整明白,放弃推到,反正我就是用,我先了解U,S,V是干啥用的就行。
在这里插入图片描述
上诉公式为奇异值分解公式,与matlab中输出的U,S,V相对应。

  • 特点1:奇异值分解可以把一个大矩阵,分解成三个小矩阵相乘。

由于这个重要的性质,SVD可以用于PCA降维,来做数据压缩和去噪。也可以用于推荐算法,将用户和喜好对应的矩阵做特征分解,进而得到隐含的用户需求来做推荐。同时也可以用于NLP中的算法,比如潜在语义索引

  • 特点2:U和V是两组正交单位向量,Σ是对角阵,表示奇异值,它表示我们找到了U和V这样两 A矩阵的作用是将一个向量从V这组正交基向量的空间旋转到U这组正交基向量空间, 并对每个方向进行了一定的缩放,缩放因子就是各个奇异值。如果维度比大,则表示还进行了投影。可以说奇异值分解将一个矩阵原本混合在一起的三种作用效果,分解出来了。
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页