矩阵分解

参考文章:http://redstonewill.com/1529/
1. 普通方阵的矩阵分解(EVD)
我们知道如果一个矩阵 A 是方阵,即行列维度相同(mxm),一般来说可以对 A 进行特征分解:
在这里插入图片描述

其中,U 的列向量是 A 的特征向量,Λ 是对角矩阵,Λ对角元素是对应特征向量的特征值。

举个简单的例子,例如方阵 A 为:
在这里插入图片描述
那么对其进行特征分解,相应的 Python 代码为:

import numpy as np
A=np.array([[2,2],[1,2]])
lamda,U=np.linalg.eig(A)
print('方阵A: ',A)
print('特征值 lamda: ',lamda)
print('特征向量U: ',U)
运行输出:方阵A:  [[2 2]
 [1 2]]
特征值 lamda:  [3.41421356 0.58578644]
特征向量U:  [[ 0.81649658 -0.81649658]
 [ 0.57735027  0.57735027]]

特征分解就是把 A 拆分,如下所示:
在这里插入图片描述
其中,
特征值 λ1=3.41421356,对应的特征向量 u1=[0.81649658 0.57735027];
特征值 λ2=0.58578644,对应的特征向量 u2=[-0.81649658 0.57735027],
特征向量均为列向量。

值得注意的是,特征向量都是单位矩阵,相互之间是线性无关的,但是并不正交。得出的结论是*对于任意方阵,不同特征值对应的特征向量必然线性无关,但是不一定正交。

2.对称矩阵的矩阵分解(EVD)
如果方阵 A 是对称矩阵,例如:
在这里插入图片描述
对称矩阵特征分解满足以下公式:
在这里插入图片描述
那么对其进行特征分解,相应的 Python 代码为:`

import numpy as np
A=np.array([[2,1],[1,1]])
lamda,U=np.linalg.eig(A)
print('方阵A: ',A)
print('特征值 lamda: ',lamda)
print('特征向量U: ',U)
运行输出:方阵A:  [[2 1]
 [1 1]]
特征值 lamda:  [2.61803399 0.38196601]
特征向量U:  [[ 0.85065081 -0.52573111]
 [ 0.52573111  0.85065081]]

特征分解就是把 A 拆分,如下所示:
在这里插入图片描述
其中,
特征值 λ1=2.61803399,对应的特征向量 u1=[0.85065081 0.52573111];
特征值 λ2=0.38196601,对应的特征向量 u2=[-0.52573111 0.85065081],
特征向量均为列向量。

注意,我们发现对阵矩阵的分解和非对称矩阵的分解除了公式不同之外,特征向量也有不同的特性。对称矩阵的不同特征值对应的特征向量不仅线性无关,而且是相互正交的。
什么是正交呢?就是特征向量内积为零。验证如下:
0.85065081∗−0.52573111+0.52573111∗0.85065081=0
重点来了,对称矩阵 A 经过矩阵分解之后,可以写成以下形式:
在这里插入图片描述
对上式进行验证:
在这里插入图片描述
3. 奇异值分解(SVD)
我们发现,在矩阵分解里的 A 是方阵或者是对称矩阵,行列维度都是相同的。但是实际应用中,很多矩阵都是非方阵、非对称的。那么如何对这类矩阵进行分解呢?因此,我们就引入了针对维度为 mxn 矩阵的分解方法,称之为奇异值分解(Singular Value Decomposition)。

假设矩阵 A 的维度为 mxn,虽然 A 不是方阵,但是下面的矩阵却是方阵,且维度分别为 mxm、nxn。
在这里插入图片描述
因此,我们就可以分别对上面的方阵进行分解:
在这里插入图片描述
其中,Λ1 和 Λ2 是对角矩阵,且对角线上非零元素均相同,即两个方阵具有相同的非零特征值,特征值令为 σ1, σ2, … , σk。值得注意的是,k<=m 且 k<=n。

根据 σ1, σ2, … , σk 就可以得到矩阵 A 的特征值为:
在这里插入图片描述
接下来,我们就能够得到奇异值分解的公式:
在这里插入图片描述
其中,P 称为左奇异矩阵,维度是 mxm,Q 称为右奇异矩阵,维度是 nxn。Λ 并不是方阵,其维度为 mxn,Λ 对角线上的非零元素就是 A 的特征值 λ1, λ2, … , λk。图形化表示奇异值分解如下图所示:
在这里插入图片描述
举个简单的例子来说明,令 A 为 3×2 的矩阵:
在这里插入图片描述
则有:
在这里插入图片描述
计算得到特征向量 P 和对应的特征值 σ 为:
在这里插入图片描述
然后,有:
在这里插入图片描述
计算得到特征向量 Q 和对应的特征值 σ 为:
在这里插入图片描述
则我们看可以得到 A 的特征值为:
在这里插入图片描述
最后,整合矩阵相乘结果,满足奇异值分解公式。

奇异值分解可以写成以下和的形式:
在这里插入图片描述
其中,p1 和 q1 分别为左奇异矩阵和右奇异矩阵的特征向量。

奇异性分解可以将一个矩阵分解成3个矩阵、、,其中U、VT都是单式矩阵(unitary matrix),Σ是一个对角矩阵,也就是说只有对角线有值。对角元素称为奇异值,它们对应了原始矩阵Data的奇异值,如下:

[[2 0 0]
[0 3 0]
[0 0 4]
[0 0 0]]

一般来说,我们只需保留矩阵中90%的能量信息即可。
如何确定保留多少个奇异值个数可以包含原矩阵大部分信息,通常情况下,我们将所有的奇异值求其平方和,将奇异值的平方和累加到总值的90%为止。

在这里插入图片描述
变为
在这里插入图片描述
实现降维的效果

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值