-
2018-09-11 15:18:32
实验证明无论是opencv还是Eigen,通过特征值分解求最小二乘解都不准确,他们的比较小的特征值的估计特不靠谱,而最小二乘解是最小特征值对应的特征向量。只有matlab的分解结果足够准确,可以用于最小二乘解求解。
安装
下载解压
把其中的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>
求矩阵特征值
参考
更多相关内容 -
【线性代数】详解正定矩阵、实对称矩阵、矩阵特征值分解、矩阵 SVD 分解
2020-09-11 00:29:22本文主要针对线性代数中的正定矩阵、实对称矩阵、矩阵特征值分解以及矩阵 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 xTAx≥0 恒成立,则矩阵 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=a−bi, 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 (λ−λ)∥x∥22=0,由于 ∥ x ∥ 2 2 > 0 \left\|\textbf{x}\right\|_2^2>0 ∥x∥22>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=xi−j=1∑i−1yjTyjxiTyjyj
- 由于新的正交向量都是原来线性无关向量的线性组合,而原先的线性无关向量对应的特征值均相同,因此新的正交向量也均为该相同特征值对应的特征向量
性质4:
任何一个实对称矩阵,都可以正交对角化。- 正交对角化,即存在一个正交矩阵 Q ( Q T = Q − 1 ) \textbf{\textit{Q}}(\textbf{\textit{Q}}^T=\textbf{\textit{Q}}^{-1}) Q(QT=Q−1) 使得 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}} P−1AP=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} (A−1)T=(AT)−1=A−1
矩阵特征值分解
1. 概念
n ∗ n n*n n∗n 的方阵 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ΛV−1
- 其中矩阵 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 Am∗n=Um∗mΣm∗nVn∗nT
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|| ∣∣A−B∣∣≥∣∣A−Ak∣∣ 对如下三个矩阵范数成立:
- ∣ ∣ A ∣ ∣ 2 = σ 1 ||A||_2=\sigma_1 ∣∣A∣∣2=σ1,即最大的奇异值
- ∣ ∣ A ∣ ∣ N u c l e a r = ∑ i = 1 r σ i ||A||_{Nuclear}=\sum\limits_{i=1}^r\sigma_i ∣∣A∣∣Nuclear=i=1∑rσ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} =∣∣A∣∣2,1=∣∣A∣∣F=(tr(ATA))1/2=(i=1∑mj=1∑naij2)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=1∑rσiuiviTAk=UkΣkVkT=i=1∑kσiuiviT需要注意,矩阵乘上一个正交矩阵,其奇异值不会发生变化,即上述涉及的矩阵范数不会改变。
7. LSI
计算不同 q u e r y query query 之间的相似程度,常用于推荐系统。
更多 SVD 的应用: -
浮点厄米特矩阵特征值分解的FPGA实现.pdf
2020-06-05 18:39:56浮点厄米特矩阵特征值分解的FPGA实现.pdf -
基于矩阵特征值分解谱分析(music等等)
2011-09-30 09:15:45基于矩阵特征值分解谱分析(music等等) -
对矩阵特征值分解和SVD奇异值分解的理解
2022-01-06 21:43:23矩阵分解是非常常见的操作矩阵方式。尤其是在推荐系统里,我们往往会有一个用户-物品矩阵,这个矩阵非常大,比如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分解的话,有一个存放特征值的中间矩阵充当桥梁作用,可以帮助我们提取特征值最大的特征向量进而提取主要信息~
-
矩阵特征值分解与奇异值分解
2017-09-14 13:20:05矩阵特征值分解与奇异值分解,非常适合入门学习,中文版讲解。--为什么还是达不到摘要字数上限啊。难道要我整个内容说一遍。 -
矩阵特征值分解(EVD)和奇异值分解(SVD)总结
2020-07-23 11:43:46在理角奇异值分解之前,需要先回顾一下特征值分解,如果矩阵 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…………⋱…………λm⎦⎥⎥⎤QT
其中 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} U∈Rm×m, Σ ∈ R m × n \Sigma \in R^{m \times n} Σ∈Rm×n, V ∈ R n × n V \in R^{n \times n} V∈Rn×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σ20000⋱0000⋱⎦⎥⎥⎤m×n2. 奇异值分解
我们可以利用下面的方法求解 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} ΣΣT∈Rm×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σ220000⋱0000⋱⎦⎥⎥⎤m×mΣTΣ=⎣⎢⎢⎡σ120000σ220000⋱0000⋱⎦⎥⎥⎤n×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. 求解步骤
- 先分别求解矩阵 A A T AA^T AAT 和 A T A A^TA ATA ;
- 利用
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; - 对2中求得的矩阵 Σ Σ T \Sigma \Sigma^T ΣΣT 或 Σ T Σ \Sigma^T \Sigma ΣTΣ 的特征值开方,最终得到所有的奇异值。
参考
-
基于CORDIC算法的高精度浮点对称矩阵特征值分解的FPGA实现.pdf
2021-07-13 13:56:25基于CORDIC算法的高精度浮点对称矩阵特征值分解的FPGA实现.pdf -
对称特征值分解和 SVD:对称矩阵的特征分解或任意矩阵的奇异值分解-matlab开发
2021-05-30 17:23:12此提交包含用于通过基于频谱分而治之的高效稳定算法计算对称矩阵 (QDWHEIG.M) 的特征值分解和奇异值分解 (QDWHSVD.M) 的函数。 计算结果往往比 MATLAB 的内置函数 EIG.M 和 SVD.M 给出的结果更准确。 函数 TEST.M ... -
复数矩阵的特征值分解
2015-09-13 20:57:49复数矩阵的特征值分解,使用了GSL科学计算函数库,使得特征值分解时间大大减少。 -
矩阵的特征值分解
2020-07-06 11:22:43特征值分解 物理意义: 矩阵可以表示一种变换; 特征向量表示矩阵变换的方向; 特征值表示矩阵变换在对应特征向量方向上的变换速度; 特征值与特征向量 如下一个二维向量,这个二维空间的基向量是; 将向量左... -
矩阵特征值分解与奇异值分解含义解析及应用
2014-11-14 14:28:10特征值与特征向量的几何意义矩阵的乘法是什么,别只告诉我只是“前一个矩阵的行乘以后一个矩阵的列”,还会一点的可能还会说“前一个矩阵的列数等于后一个矩阵的行数才能相乘”,然而,这里却会和你说——那都是表象... -
矩阵分解:特征值分解、SVD分解、舒尔分解、谱分解
2022-02-19 10:52:55matlab矩阵及其基本运算—特征值分解和奇异值分解_huangxy10的专栏-CSDN博客_matlab矩阵特征值分解 得知特征值分解的MATLAB 使用方法。 舒尔分解 Matlab学习 矩阵分解,特征值, 特征向量 可知舒尔分解的基本概念及... -
【机器学习中的数学基础】矩阵特征值、特征向量和特征值分解的几何意义
2022-04-24 10:38:43【机器学习中的数学基础】矩阵特征值、特征向量和特征值分解的几何意义 在《机器学习》西瓜书中的第十章提到了“多维缩放”(简称MDS)方法,该方法是一种经典的的降维方法。此方法的目标是获得样本在d′d^{'}d′维... -
特征值分解和奇异值分解
2020-12-09 07:42:33特征值分解特征值分解是将一个方阵A分解为如下形式: 其中,Q是方阵A的特征向量组成的矩阵, 是一个对角矩阵,对角线元素是特征值。通过特征值分解得到的前N个特征向量,表示矩阵A最主要的N个变化方向。利用这前N个... -
PCA方法的分解过程_协方差矩阵+特征值分解+降维投影
2021-11-15 04:34:13同时,更直观的,我们把协方差矩阵可视化: 图1)鸢尾花数据集的样本协方差矩阵,绘制代码可参考附录资料2 3.2 特征值分解 对于一个对称矩阵来说,对应于不同特征值的特征向量,必定彼此具有正交性。如果再将这一组... -
QR分解求矩阵特征值和特征向量
2019-11-04 12:50:06颜庆津版数值分析编程作业,C语言(少量C++语法)实现矩阵的QR分解法迭代求矩阵的全部复数格式特征值,先对矩阵进行拟上三角化再迭代,迭代求出全部特征值后使用列主元素高斯消元法求出所有实特征值对应的特征向量。 -
Numpy 矩阵的特征值分解
2018-10-27 12:29:59python 矩阵的特征值分解,挑选前k大的特征值及对应的特征向量。 -
特征值分解:特征值,特征向量,特征向量矩阵
2019-01-19 09:57:26矩阵的特征值分解目的就是提取出一个矩阵最重要的特征。 分解得到的Σ矩阵是一个对角阵,里面的特征值是由大到小排列的,这些特征值所对应的特征向量就是描述这个矩阵变化方向(从主要的变化到次要的变化排列)。... -
矩阵特征值和特征向量求解——特征值分解(EVD)
2018-11-12 16:21:04特征分解(Eigen decomposition),又称谱分解(Spectral decomposition)是将矩阵分解为由其特征值和特征向量表示的矩阵之积的方法。 只有对可对角化矩阵才可以施以特征分解。 -
矩阵特征值和特征向量求解——特征值分解
2017-04-27 16:48:10工程数学中,非常关键的一个地方,充分的理解矩阵值、矩阵向量的概念和物理意义对于理解机器学习中的,比如主成分分析算法的矩阵向量运算有很好的的帮助作用。 -
矩阵分解之: 特征值分解(EVD)、奇异值分解(SVD)、SVD++
2020-01-15 22:17:38目录: 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)是将矩阵分解为由其特征值和特征向量表示的矩阵之积的方法。需要注意只有对... -
线性代数之 矩阵的特征值,特征向量,特征分解
2021-11-13 15:07:03线性代数之 矩阵的特征值,特征向量和特征分解前言特征值和特征向量求矩阵特征值矩阵的特征分解补充:实对称矩阵后记 前言 矩阵的特征分解是比较基础的知识了,但是应用却十分广泛,比如主成分分析、矩阵分解之类的... -
Matlab学习 矩阵分解,特征值, 特征向量
2019-08-20 21:56:33文章目录1. 对称正定矩阵的Cholesky分解2. 一般方阵的高斯消去法分解(LU分解)3. 舒尔分解4. 矩形矩阵的正交分解 矩阵分解是把一个矩阵分解为多个矩阵连乘的形式 ...e=eig(a) % 返回由a的特征值构成的向量 b=ch... -
矩阵的特征分解和奇异值(SVD)分解——求法和意义
2018-12-06 21:35:27一、特征分解(特征值、特征向量) 二、正定、半正定、负定 三、奇异值(SVD)分解 一、特征分解(特征值、特征向量) 许多数学对象可以通过将它们分解成多个组成部分或者找到它们的一些属性以便更好地理解,... -
使用特征值分解和SVD分解处理图片矩阵并还原重构矩阵
2020-05-24 12:14:54使用特征值分解和SVD分解处理图片矩阵并还原重构矩阵 1. 模块导入和图片预处理 1.1 导入模块 1.2 加载和处理图片 1.3 查看图片数组和显示图片 2. 小型矩阵测试 2.1 使用特征值分解 2.2 使用奇异值分解 3. 正式图片... -
特征值分解
2021-03-23 18:39:39文章目录特征值和特征向量的几何意义数学语言描述特征值和特征向量特征值分解特征值分解的过程参考资料 特征值和特征向量的几何意义 矩阵和向量作乘法,向量会变成另一个方向或长度的新向量,主要会发生旋转、伸缩的...