矩阵分解 (特征值/奇异值分解+SVD+解齐次/非齐次线性方程组)
,#1. 用途#
1.1 应用领域
- 最优化问题:最小二乘问题 (求取最小二乘解的方法一般使用SVD)
- 统计分析:信号与图像处理
- 求解线性方程组: Ax=0或Ax=b Ax = 0 或 Ax =b
- 奇异值分解:可以降维,同时可以降低数据存储需求
1.2 矩阵是什么
- 矩阵是什么取决于应用场景
- 矩阵可以是:
- 只是一堆数:如果不对这堆数建立一些运算规则
- 矩阵是一列列向量:如果每一列向量列举了对同一个客观事物的多方面的观察值
- 矩阵是一个图像:它的每个元素代表对应位置的像素值
- 矩阵是一个线性变换:它可以将一些向量变换为另一些向量
1.3 矩阵与线性变换
矩阵的本质:矩阵的本质就是线性变换
基-坐标系:一个基定义了一个坐标系
矩阵-线性变换:在线性空间中,当选定一组基(相当于确定坐标系)之后,不仅可以用一个向量来描述空间中的任何一个对象,而且可以用矩阵来描述此空间中的任何一个运行(变换),即任何一个线性变换, 都可以用一个确定的矩阵来加以描述
向量:向量描述对象(在选定基之后)
- 矩阵:矩阵描述对象的运动(在选定基之后)
- 运动:使某个对象发生要求的运动,就是用描述此运动的矩阵乘以运动对象的向量(运动 * 对象 = 矩阵 * 向量)
- 特征值-变换:同一个线性变换在同的坐标系(基)下的矩阵不同,但其本质相同, 所以特征值相同
- 矩阵可进行哪些线性变换?
- 旋转
- 缩放
- 投影
- 矩阵包含这么多功能,当我们看着一个数据表,对它的功能一无所知,很是迷茫,为了达到我们人类的目的,大神们把它进行分解,从而达到我们人类理解、使用的目标。
- 特征向量:都是正交的,即相互垂直
- 特征值分解和奇异值分解:都是给一个矩阵(线性变换)找一组特殊的基
- 特征值分解:找到了特征向量这一组基,在这组基下该线性变换只有缩放效果
- 奇异值分解(SVD):则是找到两组基,从一组基到另一组的线性变换的旋转、缩放、投影三种功能独立地展示出来了
2. 特征值分解-方阵
只有方阵才能进行特征值分解
奇异值和特征值的重要意义相似,都是为了提取出矩阵的主要特征。
特征值的本质: Ax=λx Ax=\lambda x
特征值分解:把方阵分解为缩放矩阵+特征向量矩阵,没有旋转或旋转角度为0
特征值-变化的主次:如果我们想要描述好一个变换,那我们就描述好这个变换主要的变化方向就好了。反过头来看看之前特征值分解的式子,分解得到的 ∧ \land矩阵是一个对角阵,里面的特征值是由大到小排列的,这些特征值所对应的特征向量就是描述这个矩阵变化方向(从主要的变化到次要的变化排列)
高维线性变换:当矩阵是高维的情况下,那么这个矩阵就是高维空间下的一个线性变换,这个线性变化可能没法通过图片来表示,但是可以想象,这个变换也同样有很多的变换方向,我们通过特征值分解得到的前N个特征向量,那么就对应了这个矩阵最主要的N个变化方向。我们利用这前N个变化方向,就可以近似这个矩阵(变换)。也就是之前说的:提取这个矩阵最重要的特征。
特征值分解总结:特征值分解可以得到:
- 特征值:特征值表示的是这个特征到底有多重要
- 特征向量:而特征向量表示这个特征是什么,可以将每一个特征向量理解为一个线性的子空间,我们可以利用这些线性的子空间干很多的事情。
- 特征值分解的局限:特征值分解也有很多的局限,比如说变换的矩阵必须是方阵。
2.1 方阵的分解
设 A∈Rn×n A \in R^{n \times n},则A可表示为:
A=X∧X−1 A = X \land X^{-1}
X的列:为A的特征向量
- ∧ \land为对角矩阵:对角线上的值为A的特征值,按从大到小的顺序排列
2.2 实对称矩阵的分解
设 S∈Rn×n S \in R^{n \times n},且是对称矩阵,则S可表示为:
S=U∧UT S = U \land U^{T}
U的列:为S的单位正交特征向量,即U是正交矩阵(列/行向量正交性、归一化,且 U−1=UT U^{-1} = U^{T})
- ∧ \land为对角矩阵:对角线上的值为S的特征值,按从大到小的顺序排列
- U就是矩阵A所定义的坐标系:U的n个列向量组成A的一个完备的标准正交特征向量系
- 工
3. 奇异值分解(SVD) - 非方阵
只有非方阵才能进行奇异值分解
SVD分解:把矩阵分解为缩放矩阵+旋转矩阵+特征向量矩阵
A的非0奇异值的个数等于它的秩 r r
3.1 SVD定义
设A∈Rm×nA \in R^{m \times n},且 rank(A) rank(A) = r r (rr > 0),则矩阵A的奇异值分解(SVD)可表示为:
A=UΣVT A=U \Sigma V^T
A=U[Σ000]VT=σ1u1vT1+σ2u2vT2+σrurvTrA = U\begin{bmatrix}\Sigma & 0 \\0 & 0 \\\end{bmatrix}V^T = \sigma_1u_1v_1^T + \sigma_2u_2v_2^T + \sigma_ru_rv_r^T
U U和VV都为正交矩阵
几何含义:
- 表示找到了 U U和VV这样两组基:A矩阵的作用是将一个向量从 V V这组正交基向量的空间旋转到UU这组正交基向量的空间,并对每个方向进行了一定的缩放(由 Σ \Sigma决定),缩放因子就是各个奇异值。如果 V V的维度比UU 大,则表示还进行了投影。
- 奇异值分解:将一个矩阵原本混合在一起的三种作用效果,分解出来了。
SVD分解如下图所示:
U∈Rm×m U \in R^{m \times m}(左奇异向量): U U的列为AATAA^T的正交特征向量
V∈Rn×n V \in R^{n \times n}(右奇异向量): V V的列为ATAA^TA的正交特征向量
AAT AA^T与 ATA A^TA:是实对称正定矩阵,且其特征值为非负实数
rank( AAT AA^T) = rank( ATA A^TA) = rank(A)
AAT AA^T与 ATA A^TA的特征值相同:为 λ1,λ2,...,λr \lambda_1, \lambda_2, ..., \lambda_r,且 λi≥λi+1,λi≥0 \lambda_i \ge \lambda_{i+1}, \lambda_i \ge 0
Σ∈Rm×n \Sigma \in R^{m \times n}: σi=Σii=λi−−√ \sigma_i = \Sigma_{ii} = \sqrt{\lambda_i},其它元素的值为0
Σ \Sigma = diag(σ1,σ2,...,σr) diag(\sigma_1, \sigma_2, ..., \sigma_r)
σi(i=1,2,...,r),σ1≥...≥σr>0 \sigma_i (i=1,2,...,r), \sigma_1 \ge ... \ge \sigma_r > 0:为矩阵A的全部奇异值
- 奇异值σ跟特征值类似,在矩阵Σ中也是从大到小排列,而且σ的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。也就是说,我们也可以用前 k k个大的奇异值来近似描述矩阵,这里定义一下部分奇异值分解:
A_{m \times n} \approx U_{m \times k} \Sigma_{k \times k} V_{k \times n}^T
- 右边的三个矩阵相乘的结果将会是一个接近于A的矩阵,在这儿,k越接近于n,则相乘的结果越接近于A。而这三个矩阵的面积之和(在存储观点来说,矩阵面积越小,存储量就越小)要远远小于原始的矩阵A,我们如果想要压缩空间来表示原矩阵A,我们存下这里的三个矩阵:U、Σ、V就好了。
3.2 SVD特征
奇异值的比例不变性:
即 αA \alpha A的奇异值是A的奇异值的 |α| |\alpha|倍奇异值的旋转不变性:
若 P P是正交矩阵且detA=1detA=1(即 P P为旋转矩阵),PAPA的奇异值与 A A的奇异值相同奇异值的比例和旋转不变性:在数字图像的旋转、镜像、平移、放大、缩小等几何变换方面有很好的应用
容易得到矩阵AA的秩为 k k(k≤rk \le r)的一个最佳逼近矩阵
- 这个特性可以应用于信号的分解和重构, 提取有用信息,消除信号噪声
A=UΣVT=σ1u1vT1+σ2u2vT2+σrurvTrA = U \Sigma V^T = \sigma_1u_1v_1^T + \sigma_2u_2v_2^T + \sigma_ru_rv_r^T
权系数大的哪些项对矩阵 A A的贡献大,因此当舍去权系数小的一些项后,仍然能较好地接近矩阵AA,这一点在数字图像处理方面非常有用。
矩阵 A A的秩kk逼近定义为:
A=σ1u1vT1+σ2u2vT2+σkukvTk(1≤k≤r)A = \sigma_1u_1v_1^T + \sigma_2u_2v_2^T + \sigma_ku_kv_k^T \quad (1 \le k \le r )
- 秩 r r逼近就精确等于AA,而秩 1 1逼近的误差最大
- 这个特性可以应用于信号的分解和重构, 提取有用信息,消除信号噪声
4. 齐次/非齐次线性方程组
- 矩阵Am×nA_{m \times n}:
- 方程组数: m m
- 未知数的数量:nn
- 齐次线性方程组: Ax=0 Ax = 0
- 如果 m<n m (行数小于列数,即未知数的数量大于所给方程组数),则齐次线性方程组有非零解。
- 齐次线性方程组的两个解的和仍是齐次线性方程组的一组解(加法封闭)
- 齐次线性方程组的解的k倍仍然是齐次线性方程组的解(乘法封闭)
- 齐次线性方程组的系数矩阵秩 rank(A)=n(detA≠0) rank(A)=n (detA \neq 0),方程组有唯一零解
- 齐次线性方程组的系数矩阵秩 rank(A)<n(detA=0) rank(A),方程组有无数多解
- 齐次线性方程组有非零解的充要条件是其系数行列式( det det)为零。等价地,方程组有唯一的零解的充要条件是系数矩阵不为零
- 非齐次线性方程组: Ax=b(b≠0) Ax = b \quad (b \neq 0)
- 非齐次线性方程组 有解的充分必要条件是:系数矩阵的秩等于增广矩阵的秩,即 rank(A)=rank(A|b) rank(A)=rank(A \;|\; b)(否则为无解)
- 有唯一解的充要条件是 rank(A)=n rank(A)=n
- 有无穷多解的充要条件是 rank(A)<n rank(A)
- 解的结构:非齐次线性方程组的通解=齐次线性方程组的通解+非齐次线性方程组的一个特解
η=ζ+η∗
η=ζ+η*
5. SVD解优化问题
5.1 SVD解非齐次线性方程组( Ax=b Ax = b)
- 求解非齐次线性方程组 Ax=b Ax=b
Am×n A_{m \times n}
- m<n m: 方程个数小于未知变量个数,无唯一解
- m=n m=n:若A可逆( detA≠0 detA \neq 0 或 rank(A) = n),有唯一解
- m>n m>n:方程个数多于未知变量个数,若 rank(A)=rank(A|b) rank(A)=rank(A \;|\; b),则有解
- 对于 m>n m>n, 有如下几种情况:
1) r(A)<r(A|b) r(A): 方程组无解
2) r(A)=r(A|b)=n r(A)=r(A | b) =n:方程组有唯一解(约束较强)
3) r(A)=r(A|b)<n r(A)=r(A | b) :方程组无穷解(约束不够)
4) r(A)>r(A|b) r(A)>r(A | b): 不可能,因为增广矩阵的秩大于等于系数矩阵的秩(在矩阵中加入一列,其秩只可能增大,不可能变小)
M为正交矩阵, x x为列向量:则有||Mx||2=||x||2或记为:||Mx||=||x||||Mx||_2 = ||x||_2 或记为:||Mx|| = ||x||
- ||x||2=||x||=xTx−−−−√ ||x||_2 = ||x|| = \sqrt{x^Tx}:即向量 x x的长度
以下讨论前提为:m⩾nm \geqslant n
等价于寻找 x x使||Ax−b||2||Ax -b||_2最小化 (向量2范数,转化为最优化问题)
1) 对矩阵A进行SVD分解( Dm×n D_{m \times n}对角阵,且 rank(A)=n rank(A) = n):
A=UDVTA = U D V^T
则优化问题变为:min(||Ax−b||2)=min(||UDVTx−b||2)=min(||DVTx−UTb||2)min(||Ax-b||_2) = min(|| U D V^Tx -b ||_2) = min(|| D V^T x-U^Tb ||_2)
2) 令:
y=VTxb′=UTby=V^Tx \quad b' = U^Tb
则优化问题变为:min(||DVTx−UTb||2)=min(||Dy−b′||2)min(|| D V^T x-U^Tb ||_2) = min(|| D y-b' ||_2)
3) 求解向量 y y:
若Dy−b′=0D y-b' =0,即 Dy=b′ Dy=b',其方程组形式如下图所示:
则有: yi=b′i/di(i=0,1,...,rank(A)) y_i = b_i'/d_i \quad (i=0,1,...,rank(A))
4) 求解向量 x x:
x=Vy
5.1.1 rank(A) = n的求解步骤
5.1.2 rank(A) < n的求解步骤
- λi \lambda _i:是用于参数化的随机值(parametrized by the indeterminate values)
5.2 SVD解齐次线性方程组( Ax=0 Ax = 0)
- 相似的情况,我们把问题转化为最小化 ||Ax||2 || Ax ||_2的非线性优化问题,我们已经知道了 x=0 x = 0是该方程组的一个特解,为了避免 x=0 x = 0这种情况(因为在实际的应用中 x=0 x = 0往往不是我们想要的),我们增加一个约束,比如 ||x||2=1 || x ||_2 = 1,这样,问题就变为(带约束的优化问题 s.t. : subject to):
min||Ax||s.t.:||x||=1
min ||Ax|| \quad s.t. : ||x||=1
min||Ax||=min||UDVTx||=min||DVTx||且||x||=||VTx||min||Ax|| = min||UDV^Tx||=min||DV^Tx|| \quad 且 ||x|| = ||V^Tx||
y=VTx则问题变为:min||Dy||s.t.:||y||=1(因为V为正交矩阵)\quad y=V^Tx \quad 则问题变为:min|| Dy || \quad s.t.: || y || = 1 \; (因为V为正交矩阵)
- 由于D是一个对角矩阵,对角元素按降序排列,因此最优解在 y=(0,0,...,1)T y = (0, 0,..., 1)^T时取得,又因为 x=Vy x = Vy, 所以最优解就是V的最小奇异值对应的列向量,比如,最小奇异值在第6行6列,那么x 为 V的第6个列向量。
- 求解步骤:
矩阵分解 (特征值/奇异值分解+SVD+解齐次/非齐次线性方程组)相关推荐
- 特征值分解,奇异值分解svd
特征值分解: 特征值分解(Eigen decomposition),又称谱分解(Spectral decomposition)是将矩阵分解为由其特征值和特征向量表示的矩阵之积的方法.需要注意只有方阵才 ...
- 解方程AX=b与矩阵分解:奇异值分解(SVD分解) 特征值分解 QR分解 三角分解 LLT分解
文章目录 1. 前言 2. LU三角分解 3. Cholesky分解 - LDLT分解 4. Cholesky分解 - LLT分解 5. QR分解 6. 奇异值分解 7. 特征值分解 1. 前言 本博 ...
- 视觉SLAM中的数学——解方程AX=b与矩阵分解:奇异值分解(SVD分解) 特征值分解 QR分解 三角分解 LLT分解
前言 本博客主要介绍在SLAM问题中常常出现的一些线性代数相关的知识,重点是如何采用矩阵分解的方法,求解线性方程组AX=B.主要参考了<计算机视觉--算法与应用>附录A以及Eigen库的方 ...
- 矩阵特征值分解与奇异值分解(SVD)含义解析及应用
原文链接:http://blog.csdn.net/xiahouzuoxin/article/details/41118351 特征值与特征向量的几何意义 矩阵的乘法是什么,别只告诉我只是" ...
- 线性代数学习笔记10-2:特征值分解EVD/奇异值分解SVD的几何意义
前置知识 矩阵对应于线性变换,并且要明确讨论所依赖的基(坐标系):同一个变换,在不同的基下对应的矩阵不同 具体来说,矩阵中的列向量对应了基变换,而基的变换造成了原空间中所有向量的变换 B = P − ...
- 矩阵分析之 实矩阵分解(1)特征分解与奇异值分解SVD
矩阵分析之 实矩阵分解(1)特征分解与奇异值分解 前言 特征分解(又称谱分解.对角化) 奇异值分解SVD SVD的进一步理解 前言 本篇开始学习记录矩阵分解内容.需要说明的是,目前我所触及的矩阵基本上 ...
- Matlab学习 矩阵分解,特征值, 特征向量
文章目录 矩阵分解 1. 对称正定矩阵的Cholesky分解 2. 一般方阵的高斯消去法分解(LU分解) 3. 舒尔分解 4. 矩形矩阵的正交分解 特征值, 特征向量 矩阵分解 是把一个矩阵分解为多个 ...
- CUR矩阵分解(对比SVD)
CUR矩阵分解 简单回顾一下SVD分解 提到矩阵分解,相信大家最熟悉的一定是SVD分解,但是SVD分解有两个缺点: 可解释性较差:对于SVD分解,大家通常的理解应该是,左奇异向量以及右奇异向量分别张成 ...
- 线性代数03 齐次/非齐次线性方程组的解(行列式与解的关系)
上一篇文章介绍了关于矩阵的秩与线性方程组的解之间的关系.现在我们可以探究另一个非常重要的概念(行列式)与线性方程组的解的情况之间的关系. 1 行列式 首先,我们需要了解什么是行列式. 行列式,是一个相 ...
最新文章
- 实验三 ShellShock 攻击实验
- JS 表单和表单元素
- 边界都是1的最大正方形大小
- 迟到两年,Lu1与Cee合作的经典单曲《自己做决定》终于发布MV了!
- Django框架----Object Relational Mapping(ORM)
- 华为首款鸿蒙系统产品成行业,华为首款鸿蒙系统产品成行业公敌!只因开机无广告:遭十大品牌批评...
- vi中跳到文件的第一行和最后一行
- 主子式大于等于零的矩阵是半正定矩阵的证明方法之二
- linux unzip 解压到当前目录,Linux unzip命令详解
- 【vue】vue中如何实现SPA 单页面应用_09
- [RQNOJ]PID34 / 紧急援救
- C盘系统文件提示损坏怎么办?系统文件损坏怎么修复
- spyder 更改默认工作目录的最优方法
- 瑞利 随机 matlab,matlab产生瑞利分布随机信号
- Python在线办公系统毕业设计源码071116
- 如何下载Hugging Face 模型(pytorch_model.bin, config.json, vocab.txt)以及如何在local使用
- 【C++】栈~~(很详细哦)
- Error contacting service. It is probably not running.
- .npy文件的打开方式
- HEX文件格式解析(转)
热门文章
- uni-app打包h5后chunk-vendors.js文件大导致页面访问缓慢解决方案
- 电脑连不上手机热点问题
- SQL SERVER 2008 R2 清除数据库日志 sql语句
- 分步傅里叶算法_快速分步傅里叶算法,split-step fast Fourier transform,音标,读音,翻译,英文例句,英语词典...
- idea本地项目部署到远程windows服务器
- gdal--矢量求交
- excel多个窗口独立显示_【技巧】35个Excel表格的基本操作技巧!年前最后一次更新!...
- golang testing简介
- 微信微网站的服务器ip地址查询,微信开发之(三)获取微信服务器IP地址
- Postman做web接口自动化测试 一