精华内容
下载资源
问答
  • Eigen库-求矩阵特征值分解
    千次阅读
    2018-09-11 15:18:32

    实验证明无论是opencv还是Eigen,通过特征值分解求最小二乘解都不准确,他们的比较小的特征值的估计特不靠谱,而最小二乘解是最小特征值对应的特征向量。只有matlab的分解结果足够准确,可以用于最小二乘解求解。

    安装 

    下载解压 

    http://bitbucket.org/eigen/eigen/get/3.3.5.tar.bz2

    把其中的Eigen文件夹放到 VC下 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\Eigen


    调用

    #include <Eigen/Cholesky>
    #include <Eigen/CholmodSupport>
    #include <Eigen/Core>
    #include <Eigen/Dense>
    #include <Eigen/Eigen>
    #include <Eigen/Eigenvalues>
    #include <Eigen/Geometry>
    #include <Eigen/Householder>
    #include <Eigen/IterativeLinearSolvers>
    #include <Eigen/Jacobi>
    #include <Eigen/LU>
    #include <Eigen/MetisSupport>
    #include <Eigen/OrderingMethods>
    #include <Eigen/PardisoSupport>
    #include <Eigen/PaStiXSupport>
    #include <Eigen/QR>
    #include <Eigen/QtAlignedMalloc>
    #include <Eigen/Sparse>
    #include <Eigen/SparseCholesky>
    #include <Eigen/SparseCore>
    #include <Eigen/SparseLU>
    #include <Eigen/SparseQR>
    #include <Eigen/SPQRSupport>
    #include <Eigen/StdDeque>
    #include <Eigen/StdList>
    #include <Eigen/StdVector>
    #include <Eigen/SuperLUSupport>
    #include <Eigen/SVD>
    #include <Eigen/UmfPackSupport>

    求矩阵特征值

    参考

    https://blog.csdn.net/liningeasy/article/details/17303071

    更多相关内容
  • 本文主要针对线性代数中的正定矩阵、实对称矩阵、矩阵特征值分解以及矩阵 SVD 分解进行总结。 如果你对这篇文章可感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应...

    前言

    本文主要针对线性代数中的正定矩阵、实对称矩阵、矩阵特征值分解以及矩阵 SVD 分解进行总结。

    如果你对这篇文章可感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。


    正定矩阵

    1. 概念

    首先正定矩阵是定义在对称矩阵的基础上,其次对于任意非零向量 x \textbf{x} x,若 x T A x > 0 \textbf{x}^T\textbf{\textit{A}}\textbf{x}>0 xTAx>0 恒成立,则矩阵 A \textbf{\textit{A}} A 为正定矩阵;若 x T A x ≥ 0 \textbf{x}^T\textbf{\textit{A}}\textbf{x}\geq 0 xTAx0 恒成立,则矩阵 A \textbf{\textit{A}} A 为半正定矩阵。

    2. 物理意义

    任意非零向量 x \textbf{x} x 经过矩阵 A A A 线性变换后,与原先向量的夹角 ≤ 90 \leq 90 90 度。

    3. 其他充要条件

    • 充要条件1: 矩阵 A \textbf{\textit{A}} A 的全部特征值都是正数
      • 推论: A \textbf{\textit{A}} A 正定,则 ∣ A ∣ > 0 |\textbf{\textit{A}}|>0 A>0,即 A \textbf{\textit{A}} A 可逆(有时会根据矩阵正定来判断是否可逆)
      • 推论: A \textbf{\textit{A}} A 正定,则 A \textbf{\textit{A}} A 与单位阵合同,即存在可逆阵 C \textbf{\textit{C}} C,使得 C T AC = E \textbf{\textit{C}}^T\textbf{\textit{A}}\textbf{\textit{C}}=\textbf{\textit{E}} CTAC=E 成立
    • 充要条件2: 矩阵 A \textbf{\textit{A}} A 的各阶顺序主子式都是正数,即 Δ i > 0 \Delta_i>0 Δi>0
      • 其中 Δ i \Delta_i Δi 表示矩阵 A \textbf{\textit{A}} A i i i 行与前 i i i 列组成的子矩阵的行列式的值
      • 推论: ∣ A ∣ > 0 |A|>0 A>0 A A A 一定可逆

    实对称矩阵

    1. 概念

    矩阵为方阵,其中元素均为实数,且 A = A T \textbf{\textit{A}}=\textbf{\textit{A}}^T A=AT

    2. 性质

    • 性质1: 实对称矩阵的特征值都是实数。
      • 假设 λ \lambda λ x \textbf{x} x 分别为矩阵 A \textbf{\textit{A}} A 的特征值、特征向量,即 A x = λ x \textbf{\textit{A}}\textbf{x}=\lambda \textbf{x} Ax=λx
      • 等式两边取共轭,即 a + b i ‾ = a − b i \overline{a+bi}=a-bi a+bi=abi A ‾ x ‾ = λ ‾ x ‾ \overline{\textbf{\textit{A}}}\overline{\textbf{x}}=\overline{\lambda} \overline{\textbf{x}} Ax=λx A \textbf{\textit{A}} A 是实对称矩阵,因此 A = A T = A ‾ \textbf{\textit{A}}=\textbf{\textit{A}}^T=\overline{\textbf{\textit{A}}} A=AT=A,即 A x ‾ = λ ‾ x ‾ \textbf{\textit{A}}\overline{\textbf{x}}=\overline{\lambda} \overline{\textbf{x}} Ax=λx
      • 等式两边取转置,则 x T A = λ x T \textbf{x}^T\textbf{\textit{A}}=\lambda \textbf{x}^T xTA=λxT
      • x T A x ‾ = λ ‾ x T x ‾ = λ x T x ‾ \textbf{x}^T\textbf{\textit{A}}\overline{x}=\overline{\lambda}\textbf{x}^T\overline{\textbf{x}}=\lambda \textbf{x}^T\overline{\textbf{x}} xTAx=λxTx=λxTx
      • ( λ − λ ‾ ) ∥ x ∥ 2 2 = 0 (\lambda-\overline{\lambda})\left\|\textbf{x}\right\|_2^2=0 (λλ)x22=0,由于 ∥ x ∥ 2 2 > 0 \left\|\textbf{x}\right\|_2^2>0 x22>0,因此 λ = λ ‾ \lambda=\overline{\lambda} λ=λ λ \lambda λ 为实数
    • 性质2: 实对称矩阵不同特征值所对应的特征向量必定正交。
      • 假设 A x 1 = λ 1 x 1 \textbf{\textit{A}}\textbf{x}_1=\lambda_1 \textbf{x}_1 Ax1=λ1x1 A x 2 = λ 2 x 2 \textbf{\textit{A}}\textbf{x}_2=\lambda_2 \textbf{x}_2 Ax2=λ2x2 成立
      • x 1 T A = λ 1 x 1 T \textbf{x}_1^T\textbf{\textit{A}}=\lambda_1 \textbf{x}_1^T x1TA=λ1x1T
      • x 1 T A x 2 = λ 1 x 1 T x 2 = λ 2 x 1 T x 2 \textbf{x}_1^T\textbf{\textit{A}}\textbf{x}_2=\lambda_1 \textbf{x}_1^T\textbf{x}_2=\lambda_2\textbf{x}_1^T\textbf{x}_2 x1TAx2=λ1x1Tx2=λ2x1Tx2
      • ( λ 1 − λ 2 ) x 1 T x 2 = 0 (\lambda_1-\lambda_2)\textbf{x}_1^T\textbf{x}_2=0 (λ1λ2)x1Tx2=0,因此 x 1 \textbf{x}_1 x1 x 2 \textbf{x}_2 x2 正交
    • 性质3: 实对称矩阵相同特征值所对应的特征向量必定线性无关。
      • 证明较繁琐,不详细展开
      • 线性无关的向量可以通过施密特正交化转为正交向量
        • 对于线性无关向量组 x 1 , x 2 , . . . , x n \textbf{x}_1,\textbf{x}_2,...,\textbf{x}_n x1,x2,...,xn,转为正交向量组 y 1 , y 2 , . . . , y n \textbf{y}_1,\textbf{y}_2,...,\textbf{y}_n y1,y2,...,yn
        • y 1 = x 1 \textbf{y}_1=\textbf{x}_1 y1=x1
        • y i = x i − ∑ j = 1 i − 1 x i T y j y j T y j y j \textbf{y}_i=\textbf{x}_i-\sum\limits_{j=1}^{i-1}\displaystyle\frac{\textbf{x}_i^T\textbf{y}_j}{\textbf{y}_j^T\textbf{y}_j}\textbf{y}_j yi=xij=1i1yjTyjxiTyjyj
      • 由于新的正交向量都是原来线性无关向量的线性组合,而原先的线性无关向量对应的特征值均相同,因此新的正交向量也均为该相同特征值对应的特征向量
    • 性质4: 任何一个实对称矩阵,都可以正交对角化。
      • 正交对角化,即存在一个正交矩阵 Q ( Q T = Q − 1 ) \textbf{\textit{Q}}(\textbf{\textit{Q}}^T=\textbf{\textit{Q}}^{-1}) Q(QT=Q1) 使得 Q T AQ = D \textbf{\textit{Q}}^T\textbf{\textit{A}}\textbf{\textit{Q}}=\textbf{\textit{D}} QTAQ=D,其中 D \textbf{\textit{D}} D 是一个对角矩阵
      • 实对称矩阵,一定有 n n n 个解,因为实对称矩阵特征值都是实数,因此一共有 n n n 个实特征值(包括重特征值)—— 性质 1 1 1
      • 不同特征值对应的特征向量正交,相同特征值也一定存在对应的正交向量 —— 性质 2 , 3 2,3 2,3
      • 实对称矩阵,一定有 n n n 个正交特征向量,因此可以特征值分解,即该性质成立
    • 性质5: 实对称矩阵的非零特征值个数等于矩阵的秩
      • 矩阵 A \textbf{\textit{A}} A 相似于对角矩阵, P − 1 AP = D \textbf{\textit{P}}^{-1}\textbf{\textit{A}}\textbf{\textit{P}}=\textbf{\textit{D}} P1AP=D
      • 对角矩阵 D \textbf{\textit{D}} D 的秩 = 矩阵 A \textbf{\textit{A}} A 的秩 = D \textbf{\textit{D}} D 非零特征值个数
      • 矩阵 A \textbf{\textit{A}} A 与 矩阵 D \textbf{\textit{D}} D 相似,则特征值相同
    • 性质6:实对称矩阵不一定可逆,但若可逆,则一定是实对称矩阵
      • 0 矩阵对称不可逆
      • ( A − 1 ) T = ( A T ) − 1 = A − 1 (A^{-1})^T=(A^T)^{-1}=A^{-1} (A1)T=(AT)1=A1

    矩阵特征值分解

    1. 概念

    n ∗ n n*n nn 的方阵 A \textbf{\textit{A}} A,由 A x = λ x \textbf{\textit{A}}\textbf{x}=\lambda \textbf{x} Ax=λx 可以得到 AV = V Λ \textbf{\textit{A}}\textbf{\textit{V}}=\textbf{\textit{V}}\Lambda AV=VΛ

    • 如果方阵 A \textbf{\textit{A}} A n n n 个线性无关的特征向量,则 V \textbf{\textit{V}} V 可逆
    • A = V Λ V − 1 \textbf{\textit{A}}=\textbf{\textit{V}}\Lambda\textbf{\textit{V}}^{-1} A=VΛV1
    • 其中矩阵 V \textbf{\textit{V}} V 的列为方阵 A \textbf{\textit{A}} A 的特征向量, Λ = d i a g ( λ 1 , λ 2 , . . . , λ n ) , λ i ≥ λ i + 1 \Lambda=diag(\lambda_1,\lambda_2,...,\lambda_n),\lambda_i\geq \lambda_{i+1} Λ=diag(λ1,λ2,...,λn),λiλi+1

    矩阵 SVD 分解

    1. 概念

    任意一个矩阵 A \textbf{\textit{A}} A 都可以分解为 A = U Σ V T \textbf{\textit{A}}=\textbf{\textit{U}}\Sigma\textbf{\textit{V}}^T A=UΣVT,其中 U , V \textbf{\textit{U}},\textbf{\textit{V}} U,V 均为正交单位矩阵, Σ \Sigma Σ 为对角矩阵。

    2. 证明

    • A T A = ( U Σ V T ) T U Σ V T = V Σ 2 V T \textbf{\textit{A}}^T\textbf{\textit{A}}=(\textbf{\textit{U}}\Sigma\textbf{\textit{V}}^T)^T\textbf{\textit{U}}\Sigma\textbf{\textit{V}}^T=\textbf{\textit{V}}\Sigma^2\textbf{\textit{V}}^T ATA=(UΣVT)TUΣVT=VΣ2VT,由于 A T A \textbf{\textit{A}}^T\textbf{\textit{A}} ATA 为实对称矩阵,因此 V \textbf{\textit{V}} V 为矩阵 A T A \textbf{\textit{A}}^T\textbf{\textit{A}} ATA 对应特征向量组成的正交单位阵。
    • A A T = U Σ V T ( U Σ V T ) T = U Σ 2 U T \textbf{\textit{A}}\textbf{\textit{A}}^T=\textbf{\textit{U}}\Sigma\textbf{\textit{V}}^T(\textbf{\textit{U}}\Sigma\textbf{\textit{V}}^T)^T=\textbf{\textit{U}}\Sigma^2\textbf{\textit{U}}^T AAT=UΣVT(UΣVT)T=UΣ2UT,由于 A A T \textbf{\textit{A}}\textbf{\textit{A}}^T AAT 为实对称矩阵,因此 U \textbf{\textit{U}} U 矩阵 A A T \textbf{\textit{A}}\textbf{\textit{A}}^T AAT 对应特征向量组成的正交单位阵。
    • AV = U Σ \textbf{\textit{A}}\textbf{\textit{V}}=\textbf{\textit{U}}\Sigma AV=UΣ,其中 Σ \Sigma Σ 为对角阵,因此 A v i = σ i u i \textbf{\textit{A}}\textbf{v}_i=\sigma_i\textbf{u}_i Avi=σiui,由此可以得到对角矩阵 Σ \Sigma Σ,其中 σ i \sigma_i σi 就是奇异值。
    • A m ∗ n = U m ∗ m Σ m ∗ n V n ∗ n T \textbf{\textit{A}}_{m*n}=\textbf{\textit{U}}_{m*m}\Sigma_{m*n}\textbf{\textit{V}}_{n*n}^T Amn=UmmΣmnVnnT

    3. 几何角度

    矩阵 U , V U,V U,V 仅负责旋转, Σ \Sigma Σ 负责放缩,具体示意图如下:
    在这里插入图片描述

    4. SVD 压缩

    如下所示,仅选取前 r r r 个不为零的奇异值,可以实现无损压缩。注意非零奇异值的个数等于矩阵 A A A 的秩。

    在这里插入图片描述

    5. 计算伪逆

    在这里插入图片描述

    6. Eckart-Young Theorem

    如果矩阵 B \mathbf{B} B 的秩为 k k k,则 ∣ ∣ A − B ∣ ∣ ≥ ∣ ∣ A − A k ∣ ∣ ||A-B||\geq||A-A_k|| ABAAk 对如下三个矩阵范数成立:

    • ∣ ∣ A ∣ ∣ 2 = σ 1 ||A||_2=\sigma_1 A2=σ1,即最大的奇异值
    • ∣ ∣ A ∣ ∣ N u c l e a r = ∑ i = 1 r σ i ||A||_{Nuclear}=\sum\limits_{i=1}^r\sigma_i ANuclear=i=1rσi
    • Frobenius norm = ∣ ∣ A ∣ ∣ 2 , 1 = ∣ ∣ A ∣ ∣ F = ( t r ( A T A ) ) 1 / 2 = ( ∑ i = 1 m ∑ j = 1 n a i j 2 ) 1 / 2 =||A||_{2,1}=||A||_F=(tr(A^TA))^{1/2}=(\sum\limits_{i=1}^m\sum\limits_{j=1}^na_{ij}^2)^{1/2} =A2,1=AF=(tr(ATA))1/2=(i=1mj=1naij2)1/2

    其中 A \mathbf{A} A A k \mathbf{A_k} Ak 定义如下:
    A = U Σ V T = ∑ i = 1 r σ i u i v i T A k = U k Σ k V k T = ∑ i = 1 k σ i u i v i T \begin{aligned} & \mathbf{A}=\mathbf{U}\Sigma\mathbf{V}^T=\sum\limits_{i=1}^r \sigma_i\mathbf{u}_i\mathbf{v}_i^T\\ & \mathbf{A}_k=\mathbf{U}_k\Sigma_k\mathbf{V}_k^T=\sum\limits_{i=1}^k \sigma_i\mathbf{u}_i\mathbf{v}_i^T \end{aligned} A=UΣVT=i=1rσiuiviTAk=UkΣkVkT=i=1kσiuiviT

    需要注意,矩阵乘上一个正交矩阵,其奇异值不会发生变化,即上述涉及的矩阵范数不会改变。

    7. LSI

    计算不同 q u e r y query query 之间的相似程度,常用于推荐系统。
    在这里插入图片描述
    更多 SVD 的应用:

    展开全文
  • 浮点厄米特矩阵特征值分解的FPGA实现.pdf
  • 基于矩阵特征值分解谱分析(music等等)
  • 矩阵分解是非常常见的操作矩阵方式。尤其是在推荐系统里,我们往往会有一个用户-物品矩阵,这个矩阵非常大,比如100w个用户*1000w个物品矩阵,这个时候我们可以通过矩阵分解一方面降低矩阵的维度,另一方面提取用户...

      矩阵分解是非常常见的操作矩阵方式。尤其是在推荐系统里,我们往往会有一个用户-物品矩阵,这个矩阵非常大,比如100w个用户*1000w个物品矩阵,这个时候我们可以通过矩阵分解一方面降低矩阵的维度,另一方面提取用户和物品各自的信息

      举个例子,对于100w*1000w的用户-物品矩阵,我们可以得到100w*10的用户矩阵和10*1000w物品矩阵。这样子其中的10维向量就是我们提取的主要特征。一般来说我们会把矩阵先分成三块再得到其中的这两块,具体原因看完这两种分解方式就懂了~

      下面没有涉及公式推导,主要是想整理两者的主要区别和记录一下对基本道理的理解。

    特征值分解

      对于维度为n*n并且有n个线性无关的特征向量的矩阵A,按特征值分解,可以分解为:

    (下面为了方便打我把中间的符号打成V) 

      其中U是由矩阵的特征向量组成的,V是由矩阵的特征值组成的对角阵。

      这就是特征值分解。

      我感觉特征值分解就是帮助我们我们得到矩阵A的特征向量和特征值的。这样子我们就可以在特征向值V中再选取较大的前几个,再提取它们对应的特征向量进一步提取矩阵的主要特征。

      但很显然特征值分解的条件很苛刻:需要n*n的方阵,并且要求有n个线性无关的特征向量,所以用的并不多。

    奇异值分解(SVD)

      特征值分解对矩阵的限制是很大的,需要是一个方阵。如果对于一个m*n的矩阵,则更多用的是svd矩阵分解。

      对于一个m*n的矩阵A,按SVD分解,可以分解为:

      其中分解出的三项分为 m*m矩阵×m*n矩阵×n*n矩阵

      比如对于一个100w用户*1000w物品的矩阵,通过SVD矩阵分解,我们就得到了:

    100w*100w的矩阵,和100w*1000w的矩阵以及1000w*1000w的矩阵。乍一看,好像这分解之后的维度并没有减少,并且还多了几个矩阵出来!?好像没什么用呀?

      实际上,和上面的特征值分解类似,中间的m*n的矩阵也同样是由原矩阵的特征值组成的对角矩阵!因此我们可以只取前k大的特征值(往往这k个特征值对应的特征向量就可以代表矩阵95%甚至99%的信息!)。这样一来,原矩阵A就可以被分解为:m*k的矩阵、k*k的矩阵以及k*n的矩阵了。这样分解,一方面减少了维度和计算量,另一方面提取了主要信息。

      现在对于100w用户*1000w物品的矩阵A,我们得到了100w*k的矩阵U,k*k的矩阵2以及k*1000w的矩阵V的转置(即1000w*k的矩阵V)。这里矩阵U其实就是用户信息,每个用户用k维向量来表示;矩阵V就是物品信息,每个商品的向量也是k维。

      最后对开头问题表达我自己的理解:为什么对于100w*1000w用户-物品矩阵,不直接分解成100w*k和k*1000w的两个矩阵呢?还需要这么麻烦分解出三个?(原来我学推荐系统的时候经常想这个问题,后来也一直是不了了之,一知半解。)现在我认为原因是这样分解并不能通过中间的特征值提取关键信息!就算分出来,也是没有使用意义的,分解出来的k维向量基本就是等于随机抽取而已。

      而通过特征值分解或者奇异值SVD分解的话,有一个存放特征值的中间矩阵充当桥梁作用,可以帮助我们提取特征值最大的特征向量进而提取主要信息~

    展开全文
  • 矩阵特征值分解与奇异值分解,非常适合入门学习,中文版讲解。--为什么还是达不到摘要字数上限啊。难道要我整个内容说一遍。
  • 在理角奇异值分解之前,需要先回顾一下特征值分解,如果矩阵 AAA 是一个 m×mm \times mm×m 的实对称矩阵(即 A=ATA = A^TA=AT),那么它可以被分解成如下的形式 A=QΣQT=Q[λ1…………λ2…………⋱…………λm]QT...

    1. 特征值分解(EVD)

    实对称矩阵

    在理角奇异值分解之前,需要先回顾一下特征值分解,如果矩阵 A A A 是一个 m × m m \times m m×m 的实对称矩阵(即 A = A T A = A^T A=AT),那么它可以被分解成如下的形式
    A = Q Σ Q T = Q [ λ 1 … … … … λ 2 … … … … ⋱ … … … … λ m ] Q T A = Q \Sigma Q^T = Q{ \left[ \begin{array}{ccc} \lambda_1 & \ldots & \ldots & \ldots \\ \ldots & \lambda_2 & \ldots & \ldots \\ \ldots & \ldots & \ddots & \ldots \\ \ldots & \ldots & \ldots & \lambda_m \end{array} \right ]} Q^T A=QΣQT=Qλ1λ2λmQT
    其中 Q Q Q 为标准正交阵,有 Q Q T = I QQ^T = I QQT=I Σ \Sigma Σ为对角矩阵,上面的矩阵维度均为 m × m m \times m m×m λ i \lambda_i λi 称为特征值, q i q_i qi Q Q Q(特征矩阵)中的列向量,称为特征向量。它们之间的关系有 A q i = λ i q i Aq_i = \lambda_i q_i Aqi=λiqi q i T q j = 0 ( i ≠ j ) q_i^Tq_j = 0 (i \neq j) qiTqj=0(i=j)
    这里的特征值分解需要被分解的矩阵 A A A为实对称矩阵,但是现实中,我们所遇到的问题一般不是实对称矩阵。那么当我们碰到一般的矩阵,即有一个 m × n m \times n m×n 的矩阵 A A A,它是否能被分解成上面的形式呢?当然是可以的,这就是我们下面要讨论的内容。

    2. 奇异值分解(SVD)

    1. 定义

    一个 m × n m \times n m×n的实数矩阵 A A A,我们需要把它分解成如下的形式
    A = U Σ V T A = U \Sigma V^T A=UΣVT
    其中 U U U V V V 均为单位正交阵,有 U U T = I UU^T = I UUT=I V V T = I VV^T = I VVT=I U U U 称为左奇异矩阵, V V V 称为右奇异矩阵, Σ \Sigma Σ 仅在主对角线上有值,称为奇异值,其他元素均为0。上面矩阵的维度分别为 U ∈ R m × m U \in R^{m \times m} URm×m Σ ∈ R m × n \Sigma \in R^{m \times n} ΣRm×n V ∈ R n × n V \in R^{n \times n} VRn×n
    那么 Σ \Sigma Σ有如下形式
    Σ = [ σ 1 0 0 0 0 σ 2 0 0 0 0 ⋱ 0 0 0 0 ⋱ ] m × n \Sigma = { \left[ \begin{array}{ccc} \sigma_1 & 0 & 0 & 0 \\ 0 & \sigma_2 & 0 & 0 \\ 0 & 0 & \ddots & 0 \\ 0 & 0 & 0 & \ddots \end{array} \right ]}_{m \times n} Σ=σ10000σ200000000m×n

    2. 奇异值分解

    我们可以利用下面的方法求解 U , V , Σ U,V,\Sigma U,V,Σ
    A A T = U Σ V T V Σ T U T = U Σ Σ T U T A T A = V Σ U T U Σ T V T = V Σ T Σ V T AA^T = U \Sigma V^T V \Sigma^T U^T = U \Sigma \Sigma^T U^T \\ A^TA = V \Sigma U^T U \Sigma^T V^T = V \Sigma^T \Sigma V^T AAT=UΣVTVΣTUT=UΣΣTUTATA=VΣUTUΣTVT=VΣTΣVT
    这里 Σ Σ T \Sigma \Sigma^T ΣΣT Σ T Σ \Sigma^T \Sigma ΣTΣ 是不相等的,因为它们的维数不同, Σ Σ T ∈ R m × m \Sigma \Sigma^T \in R^{m \times m} ΣΣTRm×m Σ T Σ ∈ R n × n \Sigma^T \Sigma \in R^{n \times n} ΣTΣRn×n,但是它们在主对角线上的奇异值是相等的,即
    Σ Σ T = [ σ 1 2 0 0 0 0 σ 2 2 0 0 0 0 ⋱ 0 0 0 0 ⋱ ] m × m Σ T Σ = [ σ 1 2 0 0 0 0 σ 2 2 0 0 0 0 ⋱ 0 0 0 0 ⋱ ] n × n \Sigma \Sigma^T = { \left[ \begin{array}{ccc} \sigma_1^2 & 0 & 0 & 0\\ 0 & \sigma_2^2 & 0 & 0\\ 0 & 0 & \ddots & 0\\ 0 & 0 & 0 & \ddots \end{array} \right ]}_{m \times m} \qquad \Sigma^T \Sigma = { \left[ \begin{array}{ccc} \sigma_1^2 & 0 & 0 & 0\\ 0 & \sigma_2^2 & 0 & 0\\ 0 & 0 & \ddots & 0\\ 0 & 0 & 0 & \ddots \end{array} \right ]}_{n \times n} ΣΣT=σ120000σ2200000000m×mΣTΣ=σ120000σ2200000000n×n
    我们知道 A A T AA^T AAT A T A A^TA ATA 都是对称矩阵,那么就可以对它们做特征值分解,分别得到矩阵 U U U V V V,对 Σ Σ T \Sigma \Sigma^T ΣΣT Σ T Σ \Sigma^T \Sigma ΣTΣ 中的特征值开方,就可以得到所有的奇异值。

    3. 求解步骤

    1. 先分别求解矩阵 A A T AA^T AAT A T A A^TA ATA
    2. 利用
      A A T = U Σ V T V Σ T U T = U Σ Σ T U T A T A = V Σ U T U Σ T V T = V Σ T Σ V T AA^T = U \Sigma V^T V \Sigma^T U^T = U \Sigma \Sigma^T U^T \\ A^TA = V \Sigma U^T U \Sigma^T V^T = V \Sigma^T \Sigma V^T AAT=UΣVTVΣTUT=UΣΣTUTATA=VΣUTUΣTVT=VΣTΣVT
      进行特征值分解,得到矩阵 U U U V V V
    3. 对2中求得的矩阵 Σ Σ T \Sigma \Sigma^T ΣΣT Σ T Σ \Sigma^T \Sigma ΣTΣ 的特征值开方,最终得到所有的奇异值。

    参考

    SVD(奇异值分解)小结

    展开全文
  • 基于CORDIC算法的高精度浮点对称矩阵特征值分解的FPGA实现.pdf
  • 此提交包含用于通过基于频谱分而治之的高效稳定算法计算对称矩阵 (QDWHEIG.M) 的特征值分解和奇异值分解 (QDWHSVD.M) 的函数。 计算结果往往比 MATLAB 的内置函数 EIG.M 和 SVD.M 给出的结果更准确。 函数 TEST.M ...
  • 复数矩阵特征值分解,使用了GSL科学计算函数库,使得特征值分解时间大大减少。
  • 矩阵特征值分解

    千次阅读 2020-07-06 11:22:43
    特征值分解 物理意义: 矩阵可以表示一种变换; 特征向量表示矩阵变换的方向; 特征值表示矩阵变换在对应特征向量方向上的变换速度; 特征值与特征向量 如下一个二维向量,这个二维空间的基向量是; 将向量左...
  • 矩阵特征值分解与奇异值分解含义解析及应用

    万次阅读 多人点赞 2014-11-14 14:28:10
    特征值与特征向量的几何意义矩阵的乘法是什么,别只告诉我只是“前一个矩阵的行乘以后一个矩阵的列”,还会一点的可能还会说“前一个矩阵的列数等于后一个矩阵的行数才能相乘”,然而,这里却会和你说——那都是表象...
  • matlab矩阵及其基本运算—特征值分解和奇异值分解_huangxy10的专栏-CSDN博客_matlab矩阵特征值分解 得知特征值分解的MATLAB 使用方法。 舒尔分解 Matlab学习 矩阵分解,特征值, 特征向量 可知舒尔分解的基本概念及...
  • 【机器学习中的数学基础】矩阵特征值、特征向量和特征值分解的几何意义 在《机器学习》西瓜书中的第十章提到了“多维缩放”(简称MDS)方法,该方法是一种经典的的降维方法。此方法的目标是获得样本在d′d^{'}d′维...
  • 特征值分解和奇异值分解

    千次阅读 2020-12-09 07:42:33
    特征值分解特征值分解是将一个方阵A分解为如下形式: 其中,Q是方阵A的特征向量组成的矩阵, 是一个对角矩阵,对角线元素是特征值。通过特征值分解得到的前N个特征向量,表示矩阵A最主要的N个变化方向。利用这前N个...
  • 同时,更直观的,我们把协方差矩阵可视化: 图1)鸢尾花数据集的样本协方差矩阵,绘制代码可参考附录资料2 3.2 特征值分解 对于一个对称矩阵来说,对应于不同特征值的特征向量,必定彼此具有正交性。如果再将这一组...
  • 颜庆津版数值分析编程作业,C语言(少量C++语法)实现矩阵的QR分解法迭代求矩阵的全部复数格式特征值,先对矩阵进行拟上三角化再迭代,迭代求出全部特征值后使用列主元素高斯消元法求出所有实特征值对应的特征向量。
  • Numpy 矩阵特征值分解

    万次阅读 2018-10-27 12:29:59
    python 矩阵特征值分解,挑选前k大的特征值及对应的特征向量。
  • 特征值分解:特征值,特征向量,特征向量矩阵

    千次阅读 多人点赞 2019-01-19 09:57:26
    矩阵特征值分解目的就是提取出一个矩阵最重要的特征。 分解得到的Σ矩阵是一个对角阵,里面的特征值是由大到小排列的,这些特征值所对应的特征向量就是描述这个矩阵变化方向(从主要的变化到次要的变化排列)。...
  • 特征分解(Eigen decomposition),又称谱分解(Spectral decomposition)是将矩阵分解为由其特征值和特征向量表示的矩阵之积的方法。 只有对可对角化矩阵才可以施以特征分解
  • 矩阵特征值和特征向量求解——特征值分解

    万次阅读 多人点赞 2017-04-27 16:48:10
    工程数学中,非常关键的一个地方,充分的理解矩阵值矩阵向量的概念和物理意义对于理解机器学习中的,比如主成分分析算法的矩阵向量运算有很好的的帮助作用。
  • 目录: 1.矩阵分解 ...2. 特征值分解(EVD) 3. 奇异值分解(SVD) 4.SVD++ 5.SVD/SVD++在协同过滤中的应用 1. 矩阵分解 1.1 矩阵分解的产生原因 在介绍矩阵分解之前,先让我们明确下推荐系...
  • 矩阵特征值分解与奇异值分解

    千次阅读 2018-03-19 16:13:28
    部分转自http://blog.csdn.net/lipengcn/article/details/51992766特征分解(Eigendecomposition),又称谱分解(Spectral decomposition)是将矩阵分解为由其特征值和特征向量表示的矩阵之积的方法。需要注意只有对...
  • 线性代数之 矩阵的特征值,特征向量和特征分解前言特征值和特征向量求矩阵特征值矩阵的特征分解补充:实对称矩阵后记 前言 矩阵的特征分解是比较基础的知识了,但是应用却十分广泛,比如主成分分析、矩阵分解之类的...
  • 文章目录1. 对称正定矩阵的Cholesky分解2. 一般方阵的高斯消去法分解(LU分解)3. 舒尔分解4. 矩形矩阵的正交分解 矩阵分解是把一个矩阵分解为多个矩阵连乘的形式 ...e=eig(a) % 返回由a的特征值构成的向量 b=ch...
  • 一、特征分解特征值、特征向量) 二、正定、半正定、负定 三、奇异值(SVD)分解 一、特征分解特征值、特征向量) 许多数学对象可以通过将它们分解成多个组成部分或者找到它们的一些属性以便更好地理解,...
  • 使用特征值分解和SVD分解处理图片矩阵并还原重构矩阵 1. 模块导入和图片预处理 1.1 导入模块 1.2 加载和处理图片 1.3 查看图片数组和显示图片 2. 小型矩阵测试 2.1 使用特征值分解 2.2 使用奇异值分解 3. 正式图片...
  • 特征值分解

    千次阅读 2021-03-23 18:39:39
    文章目录特征值和特征向量的几何意义数学语言描述特征值和特征向量特征值分解特征值分解的过程参考资料 特征值和特征向量的几何意义 矩阵和向量作乘法,向量会变成另一个方向或长度的新向量,主要会发生旋转、伸缩的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 52,018
精华内容 20,807
关键字:

矩阵特征值分解

友情链接: MIL-HDBK-694A.zip