为了学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这组正交基向量空间, 并对每个方向进行了一定的缩放,缩放因子就是各个奇异值。如果维度比大,则表示还进行了投影。可以说奇异值分解将一个矩阵原本混合在一起的三种作用效果,分解出来了。