《矩阵论》学习笔记(四):第四章 矩阵分解
文章目录
一、矩阵的三角分解
详见:矩阵的三角分解
二、矩阵的QR分解
详见:矩阵的QR分解
三、矩阵的满秩分解
- 提出的目的:
将非零矩阵分解成行满秩矩阵与列满秩矩阵的乘积。
3.1. 基本原理
对任意矩阵 A ∈ C r m ∗ n A∈C^{m*n}_r A∈Crm∗n,若存在行满秩矩阵 F ∈ C r m ∗ r F∈C^{m*r}_r F∈Crm∗r和列满秩矩阵 G ∈ C r r ∗ n G∈C^{r*n}_r G∈Crr∗n,
使得: A = F G A=FG A=FG,称做A的满秩分解。
- 列满秩矩阵G:
是从A经过初等行变换得到的行阶梯型矩阵B中得到的。
A → B = [ G — O ] A \to B=\left[ \begin{matrix}G\\—\\ O\end{matrix}\right] A→B=⎣⎡G—O⎦⎤ - 行满秩矩阵F:
把A变换得到B的一系列初等行变换的乘积记做P,使得PA=B。
P − 1 = [ F ∣ S ] , F ∈ C r m ∗ r , S ∈ C ( m − r ) m ∗ ( m − r ) P^{-1}= \left[ \begin{matrix}F|S\end{matrix}\right],F∈C^{m*r}_r,S∈C^{m*(m-r)}_{(m-r)} P−1=[F∣S],F∈Crm∗r,S∈C(m−r)m∗(m−r)
- 列满秩矩阵G: |
---|
是从A经过初等行变换得到的行阶梯型矩阵B中得到的。 A → B = [ G — O ] A \to B=\left[ \begin{matrix}G\\—\\ O\end{matrix}\right] A→B=⎣⎡G—O⎦⎤ |
- 行满秩矩阵F: |
把A变换得到B的一系列初等行变换的乘积记做P,使得PA=B。 P − 1 = [ F / S ] , ( F ∈ C r m ∗ r , S ∈ C ( m − r ) m ∗ ( m − r ) ) P^{-1}= \left[ \begin{matrix}F/S\end{matrix}\right],(F∈C^{m*r}_r,S∈C^{m*(m-r)}_{(m-r)}) P−1=[F/S],(F∈Crm∗r,S∈C(m−r)m∗(m−r)) |
-
存在性与唯一性:
存在性:任意矩阵A的满秩分解一定存在。
唯一性:不唯一。 -
矩阵满秩分解的一般方法:
1- [ A I ] → [ B ∣ P ] [A I] \to [B|P] [AI]→[B∣P];
2- B → G ; P → P − 1 → F B \to G;P \to P^{-1} \to F B→G;P→P−1→F
- 矩阵满秩分解的一般方法: |
---|
1- [ A I ] → [ B P ] [A I] \to [B P] [AI]→[BP]; |
2- B → G ; P → P − 1 → F B \to G;P \to P^{-1} \to F B→G;P→P−1→F |
3.2. Hermite标准型方法
Hermite标准型方法 | |
---|---|
1- Hermite标准型 | |
2- 拟Hermite标准型 |
Hermite标准型方法求解步骤 A=FG |
---|
1. B:行化简矩阵A m ∗ n _{m*n} m∗n得到B m ∗ n _{m*n} m∗n; |
2. F:从B的m列中找到属于单位阵 I m ∗ m I_{m*m} Im∗m的r列,从原始矩阵A中把这些列提出来,组合得到矩阵F m ∗ r _{m*r} m∗r; |
3. G:B的前r行不为0的行构成G r ∗ n _{r*n} r∗n. |
四、矩阵的奇异值分解
4.1. 矩阵的正交对角分解
A n ∗ n A_{n*n} An∗n为可逆方阵,则存在正交矩阵P和Q,使得:
- P T A Q = d i a g ( σ 1 , σ 2 , . . . , σ n ) P^TAQ=diag(\sigma_1,\sigma_2,...,\sigma_n) PTAQ=diag(σ1,σ2,...,σn),其中, σ i = λ i , λ i \sigma_i=\sqrt[]\lambda_i,\lambda_i σi=λi,λi为 A T A A^TA ATA的特征值。
- Q T ( A T A ) Q = d i a g ( λ 1 , λ 2 , . . . , λ n ) . Q^T(A^TA)Q=diag(\lambda_1,\lambda_2,...,\lambda_n). QT(ATA)Q=diag(λ1,λ2,...,λn).
即, A = P ∗ d i a g ( σ 1 , σ 2 , . . . , σ n ) ∗ Q T A=P*diag(\sigma_1,\sigma_2,...,\sigma_n)*Q^T A=P∗diag(σ1,σ2,...,σn)∗QT称作矩阵的正交对角分解。
4.2. 矩阵的奇异值分解
-
提出的意义:
对方阵 A n ∗ n A_{n*n} An∗n,可分解成正交矩阵×特征值组成的对角矩阵的形式,那么对一般矩阵 A m ∗ n A_{m*n} Am∗n是否存在这样的分解呢? -
矩阵的奇异值:
设 A ∈ C r m ∗ n A∈C^{m*n}_r A∈Crm∗n,A^TA$的特征值为:
λ 1 ≥ λ 2 , . . . , ≥ λ r > λ r + 1 = . . . = λ n = 0 \lambda_1≥\lambda_2,...,≥\lambda_r>\lambda_{r+1}=...=\lambda_n=0 λ1≥λ2,...,≥λr>λr+1=...=λn=0,称 σ i = λ i \sigma_i=\sqrt[]\lambda_i σi=λi为 A A A的奇异值。
- 奇异值个数=A的列数n,非零奇异值个数=rank(A).
- 矩阵的奇异值分解:
A = U [ ∑ O O O ] V H A=U\left[ \begin{matrix}∑&O\\O&O\end{matrix}\right]V^H A=U[∑OOO]VH
其中, ∑ = d i a g ( σ 1 , σ 2 , . . . , σ n ) ∑=diag(\sigma_1,\sigma_2,...,\sigma_n) ∑=diag(σ1,σ2,...,σn).
U m ∗ m U_{m*m} Um∗m的列向量是 A H A A^HA AHA的特征向量, V n ∗ n V_{n*n} Vn∗n的列向量是 A A H AA^H AAH的特征向量。
如下图:
- 求矩阵A的SVD分解步骤: |
---|
1. 求Hermite矩阵 A H A A^HA AHA的特征值 λ i \lambda_i λi |
2. 求矩阵A的秩(=非零奇异值个数) |
3. 求A的奇异值 σ i = λ i \sigma_i=\sqrt[]\lambda_i σi=λi |
4. 求酉矩阵 V n ∗ n V_{n*n} Vn∗n [V是使得 V T ( A H A ) V = I V^T(A^HA)V=I VT(AHA)V=I的正交矩阵] |
5. 求酉矩阵 U = [ U 1 / U 2 ] , U 1 = A V 1 ∑ − 1 U=[U_1/U_2],U_1=AV_1∑^{-1} U=[U1/U2],U1=AV1∑−1 |
6. 得到A的SVD分解. |
- | 奇异值分解的存在性与唯一性 |
---|---|
存在性: | 一定存在 |
唯一性: | 矩阵A的奇异值唯一: ∑ ∑ ∑ 唯一,但奇异分解不唯一: U和V不唯一 |
- 奇异值分解的几何意义:
奇异值分解就是在低维空间中寻找最接近原矩阵A的低维矩阵M,也即是数据降维过程。
奇异值分解就是在寻找数据分布的主要维度,将原始的高维数据映射到低维子空间中实现数据降维。
4.3. 矩阵的正交相抵
正交相抵是对“矩阵相似”概念的推广。
- 正交相抵的定义:
A , B ∈ R m ∗ n A,B∈R^{m*n} A,B∈Rm∗n,若存在正交矩阵 U m ∗ m U_{m*m} Um∗m和 V n ∗ n V_{n*n} Vn∗n,使得 B = U − 1 A V B=U^{-1}AV B=U−1AV,则称A和B相抵。
- 正交相抵的性质:
- | 矩阵的正交相抵的性质 |
---|---|
1. | 同一正交相抵等价类中的所有矩阵有相同的特征值。 |
2. | 同一正交相抵等价类中的所有矩阵的奇异值分解 A = U D V T A=UDV^T A=UDVT的矩阵D相同。 |
4.4. 矩阵奇异值分解的应用
- SVD的应用:
- 可以用于PCA降维,来做数据压缩(图像压缩)和去噪。
- 可以用于推荐算法,将用户和喜好对应的矩阵做特征分解,进而得到隐含的用户需求来做推荐。
- 可以用于NLP中的算法,比如潜在语义索引(LSI)。
- SVD用于PCA降维:
-
背景及原因:
通常情况下高维数据分布并不是雨露均沾的,而往往是厚此薄彼,集中分布在某些维度上,如下左图。
可以看到:原始数据确是二维数据,但其主要集中分布在直线L(一维空间)附近,SVD(奇异值分解)就是在寻找直线L,然后将数据映射到直线L上,实现数据降维的过程,如下右图。
-
具体用法:
具有大量特征的数据(样本集矩阵特征数/列数多于观察数/行数),通过SVD分解,将特征维度降低,归约成与所涉预测问题最相关的更小特征子集。
其结果是一个秩更低的矩阵,接近原始矩阵。
为了做到这一点,我们可以在原来的数据上执行一次SVD分解操作并选择矩阵D中前k个最大的奇异值,作为降维后数据的特征。
如下图:原图 vs k=10 vs k=50 vs k=80,当k=80跟原图已经几乎没有差别,但是存储消耗只有原图的一半。