zoukankan      html  css  js  c++  java
  • 对SVD奇异值分解的理解

      首先推荐一篇博客,奇异值分解(SVD)原理详解及推导 - CSDN博客 ,讲解的很清楚。这里我谈谈自己的理解,方便以后回顾。

      如果把向量理解为空间中的一个元素,那么矩阵可以理解为两个空间上的映射。在线性代数中我们常见的是正交变换,这种变换不会改变向量之间的夹角,可以用坐标系的平移旋转来直观理解。但是对一般的方阵,甚至对更一般的非对称矩阵,这种变化的几何含义又该怎么理解,一直都没有搞清楚。通过奇异值分解能说明这些变化 的实际含义。
      首先我们来看一般的方阵(M(n*n)),可以找到一对向量(x_1,x_2),在变换前后都是正交的。很明显M的特征向量正好具有这样的性质。至于特征向量有多少则要看矩阵的M的秩。我们设置M的秩为(k(k<n)),那么就可以找到k个特征向量((x_1,x_2,...,x_k)),采用Gram_Smit方法可以将这k个正交基增广为n个正交基,即n维空间中的一组基底X。然后对空间中任意向量(vec{a})用X来表示:(vec{a}={a_1vec{x_1}+a_2vec{x_2}+...+a_nvec{x_n}}),然后我们看一下(Ma)的分解:

    (Ma={x_1,x_2,...,x_n}*egin{bmatrix}lambda_1&&&&&&\&lambda_2&&&&&\&&ddots&&&&\&&&lambda_k&&&\&&&&0&&\&&&&&ddots&\&&&&&&0end{bmatrix}*egin{bmatrix}x_1^T\x_2^T\vdots\x_n^Tend{bmatrix}*(a_1x_1+a_2x_2+...+a_nx_n))
    其中(x_i^Tx_j=egin{cases}1 ext{ if }i=j \ 0 ext{ if }i eq j end{cases})
    (Ma={x_1,x_2,...,x_n}*egin{bmatrix}lambda_1&&&&&&\&lambda_2&&&&&\&&ddots&&&&\&&&lambda_k&&&\&&&&0&&\&&&&&ddots&\&&&&&&0end{bmatrix}*egin{bmatrix}a_1\a_2\vdots\a_nend{bmatrix})
    (Ma={x_1,x_2,...,x_n}*egin{bmatrix}lambda_1a_1&&&&&&\&lambda_2a_2&&&&&\&&ddots&&&&\&&&lambda_ka_k&&&\&&&&0&&\&&&&&ddots&\&&&&&&0end{bmatrix})
    (Ma=lambda_1a_1x_1+lambda_2a_2x_2+...+lambda_ka_kx_k)
    从中我们可以看出这种不满秩的方阵所对应的几何变换就是原始向量在特征向量上的分量缩放之后再重组,至于与特征向量垂直的分量直接舍弃了。
    大家要注意这里就是一种SVD分解,而不是特征值分解,因为秩小于维度的方阵奇异,不能做特征值分解。但特征值分解也可以看做是满秩的特殊SVD分解,也就是不舍弃任何一个维度上的信息。至于更一般的SVD分解,即矩阵非对称,其含义也是相似的,只不过此时的左奇异矩阵和右奇异矩阵不是对称关系,而且右奇异矩阵中的特征向量是(M^TM)的特征向量增广之后的结果,而左奇异矩阵中的特征向量是(MM^T)中的特征向量增广之后的。
    虽然一般的SVD分解复杂,但本质也是将原空间的向量在特征向量方向上伸缩变换后重组,同时舍弃与特征向量垂直部分的分量。
    如果换个角度去想,为什么不满秩的矩阵不可逆,因为非满秩矩阵在变换的过程中丢失了原本的一部分信息,不可逆也是必然的。
    这就是我对SVD的理解,也是我第一次用markdown来写博客,感觉挺方便的,特别是对公式的书写。

  • 相关阅读:
    SharePoint REST API
    线程同步
    win32
    win32
    win32
    win32
    win32
    win32
    win32
    解决CentOS被wbew挖矿程序入侵的方法
  • 原文地址:https://www.cnblogs.com/sgdd123/p/7868163.html
Copyright © 2011-2022 走看看