特征值分解:

特征值分解(Eigen decomposition),又称谱分解(Spectral decomposition)是将矩阵分解为由其特征值和特征向量表示的矩阵之积的方法。需要注意只有方阵才可以施以特征分解

N 维非零向量 v 是 N×N 的矩阵 A 的特征向量,当且仅当下式成立:

其中 λ 为一标量,称为 v 对应的特征值。也称 v 为特征值 λ 对应的特征向量​​​​​​​。也即特征向量被施以线性变换 A 只会使向量伸长或缩短而其方向不被改变。因此这里只考虑单位特征向量。

假设矩阵A有n个特征无关的特征向量{V1,V 2, …V n},对应的特征值为{λ1,λ2,…λn}。

我们将特征向量连接成一个矩阵,使得每一列是一个特征向量:V={V1, V2…V n}。同

样的,我们将特征值连接成一个向量λ=[λ1,λ2,…λn]。因此我们可以得到下式:

AV = Vdiag(λ)

其中diag(λ)是向量入对应的对角矩阵。

此时,矩阵A便可以分解为特征值和特征向量的乘积,称为特征分解。

一般我们会把V的这n个特征向量标准化,即满足||vi||2=1或者说viTvi=1,此时V的n个特征向量为标准正交基,满足viTvi=I,即viT=vi-1, 也就是说V为酉矩阵

这样我们的特征分解表达式可以写成

Eigen decomposition举例:

已知

求A的特征值及其对应的特征向量

当λ1=16.1168时,

当λ2=-1.1168时,

当λ3=0时,

最终得到,特征值为

特征向量为,

程序实现:

Python:a*v = v*d

a= np.array([[1,2,3],[4,5,6],[7,8,9]])
d,v=np.linalg.eig(a)

Matlab:a*v = v*d

a=[[1,2,3];[4,5,6];[7,8,9]]
[v,d]=eig(a)

奇异值分解svd

奇异值分解(Singular Value Decomposition)是线性代数中一种重要的矩阵分解,奇异值分解则是特征分解在任意矩阵上的推广。在信号统计、统计学等领域有重要应用。svd分解不要求矩阵必须是方阵

假设M是一个m×n阶矩阵,其中的元素全部属于域 K,也就是实数域或复数域。如此则存在一个分解使得

其中U是m×m阶酉矩阵;Σ是半正定m×n阶对角矩阵;而V*,即V的共轭转置,是n×n阶酉矩阵​​​​​​​。这样的分解就称作M的奇异值分解。Σ对角线上的元素Σi,其中Σi即为M的奇异值。

常见的做法是为了奇异值由大而小排列。如此Σ便能由M唯一确定了。(虽然U和V仍然不能确定)

那么我们如何求出SVD分解后的U,Σ,V这三个矩阵呢?

如果我们将M的转置和M做矩阵乘法,那么会得到n×n的一个方阵MTM。既然MTM是方阵,那么我们就可以进行特征值分解,得到的特征值和特征向量满足下式:

这样我们就可以得到矩阵MTM的n个特征值和对应的n个特征向量v了。将MTM的所有特征向量张成一个n×n的矩阵V,就是我们SVD公式里面的V矩阵了。一般我们将V中的每个特征向量叫做M的右奇异向量。

如果我们将M和M的转置做矩阵乘法,那么会得到m×m的一个方阵MMT。既然MMT是方阵,那么我们就可以进行特征分解,得到的特征值和特征向量满足下式:

这样我们就可以得到矩阵MMT的m个特征值和对应的m个特征向量u了。将MMT的所有特征向量张成一个m×m的矩阵U,就是我们SVD公式里面的U矩阵了。一般我们将U中的每个特征向量叫做M的左奇异向量。

U和V我们都求出来了,现在就剩下奇异值矩阵Σ没有求出了。由于Σ除了对角线上是奇异值其他位置都是0,那我们只需要求出每个奇异值σ就可以了。

我们注意到:

这样我们可以求出我们的每个奇异值,进而求出奇异值矩阵Σ。

上面还有一个问题没有讲,就是我们说MTM的特征向量组成的就是我们SVD中的V矩阵,而MMT的特征向量组成的就是我们SVD中的U矩阵,这有什么根据吗?这个其实很容易证明,我们以V矩阵的证明为例。

上式证明使用了:

可以看出MTM的特征向量组成的的确就是我们SVD中的V矩阵。类似的方法可以得到MMT的特征向量组成的就是我们SVD中的U矩阵。

进一步我们还可以看出我们的特征值矩阵等于奇异值矩阵的平方,也就是说特征值和奇异值满足如下关系:

σi=sqrt(λi)

这样也就是说,我们可以不用σi=Mvi/ui来计算奇异值,也可以通过求出MTM的特征值取平方根来求奇异值。

svd性质:

对于奇异值,它跟我们特征分解中的特征值类似,在奇异值矩阵中也是按照从大到小排列,而且奇异值的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上的比例。也就是说,我们也可以用最大的k个的奇异值和对应的左右奇异向量来近似描述矩阵。也就是说:

其中k要比n小很多,也就是一个大的矩阵A可以用三个小的矩阵Um*k,Σk*k,V*k*n来表示。如下图所示,现在我们的矩阵A只需要灰色的部分的三个小矩阵就可以近似描述了。

由于这个重要的性质,SVD可以用于PCA降维,来做数据压缩和去噪。也可以用于推荐算法,将用户和喜好对应的矩阵做特征分解,进而得到隐含的用户需求来做推荐。同时也可以用于NLP中的算法,比如潜在语义索引(LSI)。

svd举例:

首先定义M,

利用Mvi=σiui,i=1,i=1,2求奇异值:

当然,我们也可以用σi=sqrt(λi)直接求出奇异值为sqrt(3)和1。

最终得到M的奇异值分解为:

程序实现:

Python

a=np.array([[0,1],[1,1],[1,0]])
u,s,v=np.linalg.svd(a)

Matlab:

a=[[0,1];[1,1];[1,0]]
[u,s,v]=svd(a)

特征值分解,奇异值分解svd相关推荐

  1. 矩阵理论(二)特征值分解和SVD分解

    特征值分解和SVD分解是两种将矩阵进行分解的经典方法,两者在机器学习的各类算法中被广泛使用(如PCA降维.文本LSI.推荐算法等等). 一.特征值分解 定义:对于方阵A\boldsymbol AA,若 ...

  2. 基于PCA的降维中,进行特征值分解和SVD分解相关笔记

    降维原理 原矩阵X,变换矩阵W,变换后,进入新空间下的WTXW^TXWTX. 想要进入新空间时,各特征之间的差异大分得开,也就是新空间下矩阵的方差越大越好,即WTXXTWW^TXX^TWWTXXTW越 ...

  3. matlab矩阵及其基本运算—特征值分解和svd奇异值分解

    特征值分解 函数 eig eig: Find eigenvalues and eigenvectors 格式 d = eig(A)         %求矩阵A的特征值d,以向量形式存放d. d = e ...

  4. 主成分分析中特征值分解与SVD(奇异值分解)的比较及其相关R语言的实现

    2019独角兽企业重金招聘Python工程师标准>>> >pca <- read.csv("D:/pca.csv") >pca     x1  ...

  5. 特征值分解和SVD分解

    一.特征值与特征向量的几何意义 1.     矩阵乘法 在介绍特征值与特征向量的几何意义之前,先介绍矩阵乘法的几何意义. 矩阵乘法对应了一个变换,是把任意一个向量变成另一个方向或长度的新向量.在这个变 ...

  6. 矩阵的终极分解-奇异值分解 SVD

    https://www.toutiao.com/a6698191532752634376/ 说到一个矩阵,怎么才算是真正掌握它? 一个完美分解的方法就是SVD分解.什么是SVD?全称是 singula ...

  7. 矩阵分解之特征值分解(EVD)、奇异值分解(SVD)、SVD++

    矩阵分解之: 特征值分解(EVD).奇异值分解(SVD).SVD++_人鱼线的博客-CSDN博客_evd分解 矩阵的特征分解和奇异值(SVD)分解--求法和意义_奔跑的Yancy的博客-CSDN博客_ ...

  8. 线性代数基础(矩阵、范数、正交、特征值分解、奇异值分解、迹运算)

    目录 基础概念 矩阵转置 对角矩阵 线性相关 范数 正交 特征值分解 奇异值分解 Moore-Penrose 伪逆 迹运算 行列式 如果这篇文章对你有一点小小的帮助,请给个关注喔~我会非常开心的~ 基 ...

  9. 机器学习(十五)SVD(特征值分解和奇异值分解的区别)

    首先从意义上理解: 数学解释:https://blog.csdn.net/u010099080/article/details/68060274 相关概念 参考自维基百科. 正交矩阵:若一个方阵其行与 ...

  10. 矩阵分解 (特征值/奇异值分解+SVD+解齐次/非齐次线性方程组)

    ,#1. 用途# 1.1 应用领域 最优化问题:最小二乘问题 (求取最小二乘解的方法一般使用SVD) 统计分析:信号与图像处理 求解线性方程组: Ax=0或Ax=b Ax = 0 或 Ax =b 奇异 ...

最新文章

  1. DNS浅析-Bind软件的使用及搭建一个简单的DNS缓存服务器
  2. zookeeper 客户端_zookeeper进阶-客户端源码详解
  3. Thinkpad x230设置启动顺序
  4. python强制可读吗_python 中的强制类型转换
  5. 45岁的 SQL 语言要被淘汰了?
  6. 14、剑指offer--链表中倒数第k个结点
  7. 拥塞控制中的开环和闭环控制
  8. tshark 操作后保存为pcap数据包
  9. Android 性能优化---(7)布局优化
  10. 【ElasticSearch】Es 源码之 LicenseService 源码解读
  11. QTP的飞机登录描述性编程
  12. javaee7实现websocket_websocket协议,tcp分包与粘包解决
  13. bitcoin 源码解析 - 交易 Transaction(三) - Script
  14. NOIP 2005 等价表达式 (TYVJ P1060)
  15. Oracle启动报错ORA-03113解决
  16. 调试 STM32F429 + USB3300
  17. 如何在word 里插入代码?
  18. 视频号计划,撑得起微博下一个十年?
  19. pc端点击按钮下载app
  20. 华为OD机试题:身高体重排序

热门文章

  1. 使用Git下载指定分支
  2. 用 Python 实现模拟登录正方教务系统抢课
  3. jquery flexslider轮播
  4. Java11新特性笔记
  5. MATLAB Signal Rrocessing(13)视频和音频
  6. 信号的产生——方波函数:矩形波square
  7. 毕业后考FRM vs 毕业后工作,差别很大吗?
  8. 下载官方 windows 系统镜像
  9. 云服务器装操作系统吗,腾讯云服务器如何重装操作系统
  10. oracle11g的g什么意思,oracle11g到底是什么