[转] 矩阵分解介绍

from: https://www.cnblogs.com/marsggbo/p/10152644.html#autoid-4-0-0

https://www.cnblogs.com/marsggbo/p/10156077.html

 

1|0I. 行列式(Determinants)和迹(Trace)


1|11. 行列式(Determinants)


为避免和绝对值符号混淆,本文一般使用𝑑𝑒𝑡(𝐴)det(A)来表示矩阵𝐴A的行列式。另外这里的𝐴𝑅𝑛×𝑛A∈Rn×n默认是方阵,因为只有方阵才能计算行列式。

行列式如何计算的就不在这里赘述了,下面简要给出行列式的各种性质和定理。

定理1:当且仅当一个方阵的行列式不为0,则该方阵可逆。
定理2:方阵𝐴A的行列式可沿着某一行或某一列的元素展开,形式如下:

  • 沿着第𝑖i行展开:
    𝑑𝑒𝑡(𝐴)=𝑘=1𝑛(1)𝑘+𝑖𝑎𝑖𝑘𝑑𝑒𝑡(𝐴𝑖,𝑘)det(A)=∑k=1n(−1)k+iaikdet(Ai,k)
  • 沿着第𝑖i列展开:
    𝑑𝑒𝑡(𝐴)=𝑘=1𝑛(1)𝑘+𝑖𝑎𝑘𝑖𝑑𝑒𝑡(𝐴𝑘,𝑖)det(A)=∑k=1n(−1)k+iakidet(Ak,i)

    定理3:当且仅当一个方阵为满秩时,该方阵行列式不为0,即可逆。

1|22. 迹(Trace)


矩阵的迹是矩阵对角元素之和,即

𝑡𝑟(𝐴)=𝑖=1𝑛𝑎𝑖𝑖tr(A)=∑i=1naii

 

有如下性质:

  • 𝑡𝑟(𝐴+𝐵)=𝑡𝑟(𝐴)+𝑡𝑟(𝐵)tr(A+B)=tr(A)+tr(B)
  • 𝑡𝑟(α𝐴)=𝛼𝑡𝑟(𝐴),𝛼𝑅tr(αA)=αtr(A),α∈R
  • 𝑡𝑟(𝐼𝑛)=𝑛tr(In)=n
  • 𝑡𝑟(𝐴𝐵𝐶)=𝑡𝑟(𝐵𝐶𝐴)=𝑡𝑟(=𝐶𝐴𝐵)tr(ABC)=tr(BCA)=tr(=CAB)
  • 𝑡𝑟(𝐴𝐵)=𝑡𝑟(𝐵𝐴),𝐴𝑅𝑛×𝑚,𝐵𝑅𝑚×𝑛tr(AB)=tr(BA),A∈Rn×m,B∈Rm×n

2|0II. 特征值(Eigenvalue)&特征向量(Eigenvector)


2|11. 特征值与特征向量定义:


对于一个给定的矩阵 𝐴𝑅𝑛×𝑛A∈Rn×n,它的特征向量𝑣v 经过这个线性变换之后,得到的新向量仍然与原来的 𝑣v保持在同一条直线上,但其长度或方向也许会改变。即

𝐴𝑣=𝜆𝑣Av=λv

𝜆𝑅λ∈R是矩阵𝐴A的特征值𝑣v是对应的特征向量

 

λ=λ𝑖λ=λi是矩阵𝐴A的一个特征值,则有方程(𝐴λ𝑖𝑣)𝑥=0(A−λiv)x=0,可求得非零解𝑥=𝑝𝑖x=pi即为λ𝑖λi对应的特征向量。(若λ𝑖λi为实数,则𝑝𝑖pi可取实向量;λ𝑖λi为复数,则𝑝𝑖pi可取复向量)

  • 推论
    设n阶矩阵𝐴=(𝑎𝑖𝑗)A=(aij)的特征值为λ1,...,λ𝑛λ1,...,λn,不难证明:
    • 1)λ1+..+λ𝑛=𝑎11+...+𝑎𝑛𝑛λ1+..+λn=a11+...+ann
    • 2)λ1λ2...λ𝑛=|𝐴|λ1λ2...λn=|A|

    由2)可知𝐴A是可逆矩阵的充要条件是它的n个特征值全不为0.

  • 定理

    λ1,...,λ𝑛λ1,...,λn是方阵𝐴A的n个特征值,𝑝1,...,𝑝𝑛p1,...,pn依次是对应的特征向量,如果λ1,...,λ𝑛λ1,...,λn各不相等,则𝑝1,...,𝑝𝑛p1,...,pn线性无关。

2|22. 特征空间(Eigenspace)和特征谱(Eigenspectrum) 定义


由特征值𝜆λ及其对应的特征向量𝑣v所span的空间称为特征空间 ,用𝐸𝜆Eλ表示。矩阵𝐴A的特征值集合称为特征谱。

下面给出两个定理,后面内容很多都是基于它们推导出来的。

  • (Hogben(2006)): 一个n阶方阵𝐴A如果有n个不同的特征值,那么对应的n个特征向量互相线性独立。
  • (Meyer(2000)): 任何n阶对称矩阵都有n个独立且正交的特征向量

2|33. 图解特征向量和特征值


下面使用二维图像的变换来帮助我们直观理解特征值和特征向量的意义。一共给出了两个示例,最左边表示原数据,中间表示不同特征值对应的特征向量方向(红色表示λ1λ1对应的特征向量,蓝色表示λ2λ2对应的特征向量),最右边表示经过矩阵变换后得到的新的矩阵,该矩阵反应了特征向量和特征值是如何影响变换的。

  • 第一个例子

 

𝐴1=[0.5002]A1=[0.5002]

 

简单计算后可求出特征值和与之对应的特征向量分别为:

  • λ1=0.5:𝑝1=[1,0]𝑇λ1=0.5:p1=[1,0]T
  • λ2=2:𝑝2=[0,1]𝑇λ2=2:p2=[0,1]T
  • 𝑡𝑟(𝐴)=𝑛𝑖=1𝜆𝑖tr(A)=∑i=1nλi

可以看到最后得到的新的矩阵𝐴1𝑥A1x沿着特征矩阵的方向伸缩,伸缩比例恰巧等于对应特征值大小。

image.png

 

𝐴4=[1111]A4=[1−1−11]

 

简单计算后可求出特征值和与之对应的特征向量分别为:

  • λ1=0:𝑝1=[1,1]𝑇λ1=0:p1=[1,1]T
  • λ2=2:𝑝2=[1,1]𝑇λ2=2:p2=[−1,1]T

可以看到最后得到的新的矩阵𝐴1𝑥A1x沿着特征矩阵的方向伸缩,伸缩比例恰巧等于对应特征值大小。

image.png

关于特征值,特征矩阵等概念更直观,更透彻的理解可以参看文末【理解矩阵】系列文章,这系列文章用非常浅显易懂的语言解释了什么是矩阵,行列式和向量。

3|0III. 平方根法(Cholesky decomposition)


一种矩阵运算方法,又叫Cholesky分解。所谓平方根法,就是利用对称正定矩阵的三角分解得到的求解对称正定方程组的一种有效方法。它是把一个对称正定的矩阵表示成一个下三角矩阵L和其转置的乘积的分解。它要求矩阵的所有特征值必须大于零,故分解的下三角矩阵的对角元也是大于零的。公式如下:

𝐴⎡⎣⎢⎢⎢𝑎11𝑎𝑛1𝑎1𝑛𝑎𝑛𝑛⎤⎦⎥⎥⎥=𝐿𝐿𝑇=⎡⎣⎢⎢⎢𝑙11𝑙𝑛10𝑙𝑛𝑛⎤⎦⎥⎥⎥⎡⎣⎢⎢⎢𝑙110𝑙𝑛1𝑙𝑛𝑛⎤⎦⎥⎥⎥A=LLT⇔[a11⋯a1n⋮⋱⋮an1…ann]=[l11⋯0⋮⋱⋮ln1…lnn][l11⋯ln1⋮⋱⋮0…lnn]

其中𝐿L又称为Cholesky因子。

 

这里不会详细介绍该方法的计算方法,简单说明一下该方法会带来哪些好处。

1.求逆矩阵

我们都知道求一个矩阵的逆矩阵是一个非常耗时的过程,而对于一个上(下)三角矩阵而言,求逆矩阵就简单很多。假设我们已经将矩阵𝐴A分解,那么有

𝐴1=(𝐿𝐿𝑇)1=(𝐿1)𝑇(𝐿1)A−1=(LLT)−1=(L−1)T(L−1)

 

2.求行列式

 

𝑑𝑒𝑡(𝐴)=𝑑𝑒𝑡(𝐿)2=𝑖𝑙2𝑖𝑖det(A)=det(L)2=∏ilii2

 

4|0IV. 特征分解(Eigendecomposition)&对角化(Diagonalization)


4|11. 对角矩阵&相似矩阵


常见的对角矩阵形式如下:

𝐷=⎡⎣⎢⎢⎢𝑐100𝑐𝑛⎤⎦⎥⎥⎥D=[c1⋯0⋮⋱⋮0⋯cn]

 

注意:对角矩阵不一定是方阵,但是为了方便解释默认用对角方阵来说明。

很明显对角矩阵相对于其他形式的矩阵天然有很多计算上的优势,例如计算逆矩阵,行列式时都非常简单,所以如果能把一个矩阵对角化,那么很多问题就可以解决了。

在介绍矩阵对角化之前简单回复一下相似矩阵(similar matrix) 的概念,即

如果存在一个可逆矩阵𝑃P使得两个矩阵𝐴,𝐷A,D满足𝐷=𝑃1𝐴𝑃D=P−1AP,那么则称𝐴,𝐷A,D相似。

4|22. 可对角化(Diagnolizable)


  • 定义
    所以可对角化(Diagnolizable) 可定义如下:

    如果一个矩阵𝐴A和一个对角矩阵相似,则称𝐴A可对角化。也就是说如果存在一个可逆矩阵𝑃P使得两个矩阵𝐴,𝐷A,D满足𝐷=𝑃1𝐴𝑃D=P−1AP,且𝐷D为对角矩阵,那么则称𝐴A可对角化。

  • 对角化条件
    那么什么时候才能对角化呢?答案在下面的特征值分解/对角化定理中:

    当且仅当方阵𝐴𝑅𝑛×𝑛A∈Rn×n满秩(即有n个独立的特征向量)时,有

    𝐴=𝑃𝐷𝑃1A=PDP−1

    其中𝑃P是由𝐴A的特征矩阵组成的可逆矩阵,𝐷D是由𝐴A的特征值组成的对角矩阵。

     

  • 亏损矩阵
    基于上面的介绍,很自然地给出亏损矩阵(defective matrix) 的定义:

    n阶矩阵𝐴A若有n个线性无关的特征向量(n个特征值也要各不相同),称𝐴A为非亏损矩阵,即𝐴A有完备的线性无关的特征向量系。反之称𝐴A为亏损矩阵

  • 对称矩阵对角化

任何对称矩阵都可以对角化,即

𝑆=𝑃𝐷𝑃1=𝑃𝐷𝑃𝑇S=PDP−1=PDPT

其中𝑃P是由n个正交特征向量组成的矩阵(此时有𝑃1=𝑃𝑇P−1=PT,证明略),𝐷D是特征值组成的对角矩阵

 

下图直观地给出了对称矩阵对角化的过程:

上图可划分成四个部分,按顺时针顺序分别简称为LT(Left-Top),RT(Right-Top),LB(Left-Bottom),RB(Right-Bottom)。

LT𝑝1,𝑝2p1,p2表示矩阵𝐴𝑅2×2A∈R2×2的单位特征向量(长度为1)。

  • LT→RT:单位圆按照𝐴A特征向量的方向伸缩,伸缩比例等于𝐴A的特征值大小。因为𝐴A的对称矩阵,所以其特征向量是互相独立且正交的,由图可以清楚地看到𝑝1𝑝2p1⊥p2;
  • LT→LB: 因为𝐴A的对称矩阵,所以有𝑃𝑇=𝑃1PT=P−1,所以可以𝑃𝑇PT理解成将坐标轴体系由𝑝1,𝑝2p1,p2坐标体系逆向还原成传统的𝑒1,𝑒2e1,e2坐标体系。所以矩阵的本质其实也可以理解成对坐标轴的变换,这个观点相信你在看了文末给出的【理解矩阵】系列文章后会有更深刻的理解。
  • LB→RB: 如果上面的介绍你理解了,那么这一过程也就很自然地能够理解了。没错,该步骤就表示在将坐标轴还原到传统意义上的坐标轴后对LB的单位圆按照特征值大小进行伸缩。
  • RB→LT: 对坐标轴进行变换。

5|0参考



 

 

1|0I. 奇异值分解(Singular Value Decomposition)


1|11. 定义


Singular Value Decomposition (SVD)是线性代数中十分重要的矩阵分解方法,被称为“线性代数的基本理论”,因为它不仅可以运用于所有矩阵(不像特征值分解只能用于方阵),而且奇异值总是存在的。

  • SVD定理

    设一个矩阵𝐴𝑚×𝑛Am×n的秩为𝑟[0,𝑚𝑖𝑛(𝑚,𝑛)]r∈[0,min(m,n)],矩阵𝐴A的奇异值分解形式如下:

    𝐴=𝑈Σ𝑉𝑇(1.1.1)(1.1.1)A=UΣVT

     


    其中𝑈𝑅𝑚×𝑚U∈Rm×m是一个正交矩阵(即列向量𝑢𝑖,𝑖=1,...,𝑚ui,i=1,...,m互相正交),𝑉𝑅𝑛×𝑛V∈Rn×n也是一个正交矩阵(即列向量𝑣𝑖,𝑖=1,...,𝑛vi,i=1,...,n互相正交),ΣΣ是一个𝑚×𝑛m×n的矩阵,且满足

    Σ𝑖𝑖=𝜎𝑖0Σ𝑖𝑗=0,𝑖𝑗Σii=σi≥0Σij=0,i≠j

     

上面的𝜎𝑖σi称为奇异值(singular values),𝑢𝑖ui称为左奇异值(left-singular values),𝑣𝑖vi称为右奇异值(right-singular values)。另外通常默认有𝜎1...𝜎𝑟0σ1≥...≥σr≥0 。

注意:矩阵𝐴A是一个长方形矩阵,不一定是方阵,另外ΣΣ和矩阵𝐴A的维度相同,并且其包含一个对角子矩阵(diagonal submatrix)。

1|22. 图解SVD


对于奇异值分解可以从两个角度进行理解:一是将SVD视为对基向量组(bases),即坐标系的一顺序变换,二是将SVD视为对于数据点的变换。

一般来说要让矩阵𝐴A作用于另一个矩阵,都是左乘𝐴A,所以由公式(1)可知道首先是𝑉𝑇VT,然后是ΣΣ,最后是矩阵𝑈U变换。所以矩阵𝐴A的变换实际上是经过了三个步骤,如下图所示(为方便理解使用了二维和三维图像进行说明):

假设左上角的单位圆是在𝑅𝑛Rn空间,其标准基用𝐵=[𝑣1,𝑣2]B=[v1,v2]表示。左下角的圆也在𝑅𝑛Rn空间里,其标准基用𝐵̃ =[𝑒1,𝑒2]B~=[e1,e2]表示,右下角的圆在𝑅𝑚Rm空间里,其标准基用𝐶̃ C~表示。右上角的圆在𝑅𝑚Rm空间里。

  • 由左上角到左下角:可以很清楚的看到𝑉𝑇𝑅𝑛×𝑛VT∈Rn×n的作用是对最开始的坐标轴(或标准基)(𝐵B)还原成canonical basis(𝐵̃ B~)。所以𝑉𝑇VT的作用是将坐标轴由𝐵B转变成𝐵̃ B~。
  • 由左下角到右下角:经过ΣΣ矩阵变换后从𝑅𝑛Rn空间转换到了𝑅𝑚Rm空间。上图是从二维空间变成了三维空间,即增加了z轴。当然维度也可以减少。此外单位圆还是处在[𝑒1,𝑒2][e1,e2]空间内(即𝑥,𝑦x,y轴组成的空间内),而且还会根据奇异值的大小做相应比例的伸缩。
  • 右下角到右上角: 矩阵𝑈U继续对[𝑒1,𝑒2][e1,e2]基做变换,增加的那个维度(z轴)方向不做变化。

下图更加形象地展示了奇异值分解的作用,变换过程和上面一样,故不再赘述:

1|33. SVD计算


本小节内容不证明SVD的存在性。

在介绍SVD如何计算之前,首先回顾一下【Math for ML】矩阵分解(Matrix Decompositions) (下)中介绍过任何对称矩阵都能对角化,其公式如下:

𝑆=𝑆𝑇=𝑃𝐷𝑃𝑇S=ST=PDPT

所以一个对称矩阵的奇异值分解是十分相似的,即
𝑆=𝑈Σ𝑉𝑇S=UΣVT

对比之后可知有𝑈=𝑃,𝑉=𝑃,Σ=𝐷U=P,V=P,Σ=D

 

另外我们还需要知道的是对于任意矩阵𝐴𝑅𝑚×𝑛A∈Rm×n,其转置矩阵和其本身相乘之后得到的矩阵都是对称矩阵,即𝐴𝑇𝐴𝑅𝑛×𝑛ATA∈Rn×n和𝐴𝐴𝑇𝑅𝑚×𝑚AAT∈Rm×m均为对称矩阵。(证明略)

接下来结合SVD公式给出对任意矩阵𝐴𝑅𝑚×𝑛A∈Rm×nSVD计算的推导过程:

  • 计算𝑉V

已知𝐴𝑇𝐴ATA可作如下对角化运算,且其特征值λ𝑖0λi≥0

𝐴𝑇𝐴=𝑃𝐷𝑃𝑇=𝑃⎡⎣⎢⎢⎢λ100λ𝑛⎤⎦⎥⎥⎥𝑃𝑇(1.3.1)(1.3.1)ATA=PDPT=P[λ1⋯0⋮⋱⋮0⋯λn]PT

 

因为任何矩阵都可做奇异值分解,故有

𝐴𝑇𝐴=(𝑈Σ𝑉𝑇)𝑇(𝑈Σ𝑉𝑇)=𝑉Σ𝑇𝑈𝑇𝑈Σ𝑉𝑇(1.3.2)(1.3.2)ATA=(UΣVT)T(UΣVT)=VΣTUTUΣVT

 

因为𝑈U为正交矩阵,所以𝑈𝑇𝑈=𝐼UTU=I,所以(1.3.2)式进一步简化可得

𝐴𝑇𝐴=𝑉Σ𝑇Σ𝑉𝑇=𝑉⎡⎣⎢⎢⎢𝜎2100𝜎2𝑛⎤⎦⎥⎥⎥𝑉𝑇(1.3.3)(1.3.3)ATA=VΣTΣVT=V[σ12⋯0⋮⋱⋮0⋯σn2]VT

 

由(1.3.1)和(1.3.3)可得

𝑉=𝑃𝜎2𝑖=𝜆𝑖(1.3.4)(1.3.4)V=Pσi2=λi

 

所以任意矩阵𝐴A的右奇异矩阵𝑉V是𝐴𝑇𝐴ATA的特征矩阵𝑃P。

  • 计算𝑈U

和求𝑉V类似,这里不再赘述。𝑈U即为𝐴𝐴𝑇AAT的特征矩阵。

  • 计算ΣΣ

注意上面两步中已经求出了𝜎2𝑖σi2,接下来要做的就是把上面所求出的𝜎2𝑖σi2从大到小排序并开根号,且ΣΣ要与𝐴A的维度保持一致

具体的SVD计算示例可参见奇异值分解(SVD)计算过程示例

1|44. 特征值分解(EVD) vs. 奇异值分解(SVD)


下面对特征值分解𝐴=𝑃𝐷𝑃1A=PDP−1和奇异值分解𝐴=𝑈Σ𝑉𝑇A=UΣVT作如下总结和对比:

  • SVD对于任意矩阵都存在;而EVD只能在n阶方阵的基础上才能被定义,而且只有当方阵满秩,即有n个独立的特征向量条件下才可以做特征值分解
  • 特征值分解后得到的矩阵𝑃P不必须是正交矩阵,也就是说𝑃P可以起到伸缩和旋转的作用;而SVD中的𝑈,𝑉U,V矩阵都必须是正交矩阵,所以这两个矩阵只能起到旋转变换的作用,起伸缩变换作用的是矩阵ΣΣ。
  • 特征值分解和奇异值分解都由以下三个线性映射步骤组成:
    1.Change of basis in the domain
    2.Independent scaling of each new basis vector and mapping from domain to co-domain
    3.Change of basis in the co-domain

 



MARSGGBO♥原创

posted @ 2019-10-29 08:27  凌波微步_Arborday  阅读(1044)  评论(0编辑  收藏  举报