美文网首页
线代-矩阵的SVD分解-矩阵压缩降噪降维

线代-矩阵的SVD分解-矩阵压缩降噪降维

作者: 倪桦 | 来源:发表于2023-01-18 19:46 被阅读0次

    矩阵的SVD分解- Singular Value Decomposition【矩阵的奇异值分解】
    优点:适用于任意形状的矩阵

    分解形式
    A = U\Sigma V^T
    A = \begin{bmatrix} |&|& &| \\ \vec u_1&\vec u_2&...&\vec u_m \\ |&|& &| \end{bmatrix} \begin{bmatrix} \sigma _1&&&& \\ &\sigma _2&&&0 \\ &&...&& \\ 0&&&\sigma _r& \\ &0&&&0 \end{bmatrix}\begin{bmatrix} - & \vec v_1 & - \\ - & \vec v_2 & - \\ \\ - & \vec v_n & - \end{bmatrix}
    对于m*nA矩阵,则Um*m的方阵;\Sigmam*n的长方阵;Vn*n的方阵

    VA^TA的标准化特征向量矩阵,是一个标准正交矩阵,V = V^{T}

    UA的列空间的一组标准正交基构成的矩阵 U = \begin{bmatrix} |&|& &| \\ \vec u_1&\vec u_2&...&\vec u_m \\ |&|& &| \end{bmatrix} \由前r个从大到小排列的奇异值且不为零的奇异值对应的\vec u向量从左到右排列构成,根据矩阵的列空间定义(r \le m)\vec u_i=\frac {A\vec v_i}{\sigma _i} \ \sigma_i \ne 0;所以当r \lt m的时候要构造一个m*m的方阵U需要补充到m\vec u向量,缺失的\vec u向量可以通过Gram-Schmidt方法找到m-r个向量,使得这m\vec u向量两两互相垂直。所以U矩阵也是一个标准正交矩阵

    \Sigma矩阵是一个m*n奇异值矩阵,对角线由从大到小排列的奇异值按从上到小的顺序填充而成,由于r \le m,缺失行由零向量填充,其左上角是一个r*r对角矩阵
    \Sigma = \begin{bmatrix} \sigma _1&&&& \\ &\sigma _2&&&0 \\ &&...&& \\ 0&&&\sigma _r& \\ &0&&&0 \end{bmatrix} \ = \begin{bmatrix} D&0 \\ 0&0\end{bmatrix}

    证明

    对于 A = U\Sigma V^T
    左乘V则有AV = U\Sigma V^TV,标准正交矩阵中V^TV = I \rightarrow AV = U\Sigma
    \because \vec v_iA^TA的标准特征向量 ,AV =A \begin{bmatrix} |&|& &| \\ \vec v_1&\vec v_2&...&\vec v_n \\ |&|& &| \end{bmatrix} = \begin{bmatrix} |&|& &| \\ A\vec v_1&A\vec v_2&...&A\vec v_n \\ |&|& &| \end{bmatrix}

    \vec u_i = \frac {A\vec v_i}{\sigma _i},其中\sigma _i = \sqrt { \|A \cdot \vec v_i\|^{2} } = \sqrt {\lambda _i},当存在\sigma = 0 \rightarrow \sigma \vec u = 0,从而
    AV = \begin{bmatrix} |&|& &| \\ A\vec v_1&A\vec v_2&...&A\vec v_n \\ |&|& &| \end{bmatrix} = \begin{bmatrix} |&|& &| \\ \sigma_1\vec u_1& \sigma_2\vec u_2&...& \sigma_r\vec u_r&...&0 \\ |&|& &| \end{bmatrix}

    U\Sigma = \begin{bmatrix} |&|& &| \\ \vec u_1&\vec u_2&...&\vec u_m \\ |&|& &| \end{bmatrix} \begin{bmatrix} \sigma _1&&&& \\ &\sigma _2&&&0 \\ &&...&& \\ 0&&&\sigma _r& \\ &0&&&0 \end{bmatrix} = \begin{bmatrix} |&|& &| \\ \sigma_1\vec u_1& \sigma_2\vec u_2&...& \sigma_r\vec u_r&...&0 \\ |&|& &| \end{bmatrix}

    \therefore AV = U\Sigma \rightarrow A = U\Sigma V^T

    算法过程

    对于任意一个矩阵A,求解U\Sigma V^T
    step.1 求解A^TA的特征值和特征向量;
    step.2A^TA的非零特征值\lambda 进行开根得到奇异值\sigma,顺序填充成m*n的奇异值矩阵\Sigma;
    step.3 A^TA的特征向量标准化处理后,这些标准特征向量按从大到小的特征值对应关系按列填充成n*nV,取V^T;
    step.4 \vec u_i = \frac {A\vec v_i}{\sigma _i}在经过Gram-Schmidt扩展填充成U

    SVD应用

    1.几何坐标变换

    A = U\Sigma V^T 若A是m*n的矩阵 A将对一个n维向量转换成m维的向量;

    Vn维空间的一组标准正交基,从而n维空间中的任意向量\vec x可以被V中的列向量所组合表示\vec x = k_1\vec v_1 + k_2\vec v_2 + ... + k_n\vec v_n=V\vec k ,这里V\vec k中的向量\vec kV坐标系下每个维度上的坐标值。

    n维空间的向量\vec xA变换将得到:
    A\vec x = U\Sigma V^T \vec x = U\Sigma V^T \cdot V\vec k = U\Sigma \vec k = U\begin{bmatrix} \sigma_1k_1 \\ ... \\ \sigma_rk_r \\ 0\end{bmatrix}
    在这里变换后表明在U坐标系下,原来V坐标系下的向量\vec x坐标值将被拉伸\sigma倍。

    2.数据压缩去噪降维

    展开A = U\Sigma V^T

    \begin{bmatrix} |&|& &| \\ \sigma_1\vec u_1& \sigma_2\vec u_2&...& \sigma_r\vec u_r&...&0 \\ |&|& &| \end{bmatrix} \begin{bmatrix} - & \vec v_1 & - \\ - & \vec v_2 & - \\ \\ - & \vec v_n & - \end{bmatrix} = \sigma_1 \vec u_1 \vec v_1^T + \sigma_2 \vec u_2 \vec v_2^T +...+\sigma_r \vec u_r \vec v_r^T + 0 +...0

    从而A 矩阵被表示为系列由\sigma _i \vec u_i \vec v_i^T组成的m*n矩阵的加和的结果,奇异值\sigma在这里成为子矩阵\vec u \vec v^T的权重(weight 权值),其中第一个\sigma _1权值最大,次之\sigma _2,以此类推。所以可知小奇异值对应的子矩阵对A矩阵的影响是很小的,舍去这些小奇异值对应的子矩阵可以做到对A矩阵的压缩、降噪和降维

    相关文章

      网友评论

          本文标题:线代-矩阵的SVD分解-矩阵压缩降噪降维

          本文链接:https://www.haomeiwen.com/subject/ushfhdtx.html