特征值分解和SVD分解是两种将矩阵进行分解的经典方法,两者在机器学习的各类算法中被广泛使用(如PCA降维、文本LSI、推荐算法等等)、

一、特征值分解

定义:对于方阵A\boldsymbol AA,若存在向量ν\nuν,使得线性变换Aν\boldsymbol A\nuAν相当于对ν\nuν进行了伸缩变换:Aν=λν\boldsymbol A\nu=\lambda\nuAν=λν,则将ν\nuν称为方阵A\boldsymbol AA的特征向量,而对应的λ\lambdaλ称为特征值。

若A\boldsymbol AA存在与维度相同的nnn个实数特征值(包括重根),则存在矩阵V\boldsymbol VV(其各列即为各特征向量)和对角矩阵Λ\boldsymbol \LambdaΛ(其对角线值为各特征值,一般从大到小排列)使得AV=VΛ\boldsymbol {AV}= V\LambdaAV=VΛ,上式又可写成A=VΛV−1\boldsymbol {A=V \Lambda V^{-1}}A=VΛV−1。
也就是说A∼Λ\boldsymbol A\sim \LambdaA∼Λ,根据相似矩阵的性质,线性算子A\boldsymbol AA与在V−1\boldsymbol V^{-1}V−1基定义下的线性算子Λ\LambdaΛ作用一样,若V−1\boldsymbol V^{-1}V−1各向量可写为单位正交向量,而Λ\boldsymbol \LambdaΛ为对角阵,这些优势的性质使得矩阵运算更加方便。

若A\boldsymbol AA为对称阵,可证明其不同特征值的特征向量两两正交,其特征向量构成的空间(特征空间)即为A\boldsymbol AA的列空间。此时A=VΛV−1=VΛVT\boldsymbol {A=V \Lambda V^{-1}=V \Lambda V^{T}}A=VΛV−1=VΛVT

假设V−1\boldsymbol V^{-1}V−1中各特征向量的重要性一致,则各特征向量对应的特征值则体现了该方向特征的重要性。通过保留最大的若干个特征方向,可以在减小特征的基础上尽量的保证数据信息。

二、SVD分解

特征分解存在优良的性质,但其缺点是非常明显的——仅适用于方阵。真实的数据环境下,意味着特征维度=数据维度,这个前提过于严苛。而对于更一般的长方形矩阵,能否进行类似的基变换和矩阵分解呢?这就是更普适的SVD分解。

定义:对于长方形矩阵A\boldsymbol AA,若存在向量u\boldsymbol uu和向量v\boldsymbol vv,以及一个标量σ\sigmaσ,使得Av=σu\boldsymbol {Av}=\sigma \boldsymbol uAv=σu且ATu=σv\boldsymbol {A^Tu}=\sigma \boldsymbol vATu=σv,则称u\boldsymbol uu和v\boldsymbol vv分别是A\boldsymbol AA的左奇异向量和右奇异向量,σ\sigmaσ是A\boldsymbol AA的一个奇异值。对于所有这样的列向量构成的左奇异矩阵U\boldsymbol UU和右奇异矩阵V\boldsymbol VV,以及对应奇异值构成的对角阵Σ\boldsymbol \SigmaΣ,其与A\boldsymbol AA满足如下的的奇异值分解:
A=UΣVT\boldsymbol {A=U\Sigma V^T}A=UΣVT
特殊的,如果能否进一步取两组单位正交基分别构成左奇异矩阵U\boldsymbol UU和右奇异矩阵V\boldsymbol VV,从而通过长方形矩阵A\boldsymbol AA及其转置可以实现这两组基之间的相互转换,那就更好不过了。

现假设存在一组单位正交基vi,...,vj\boldsymbol {v_i},...,\boldsymbol {v_j}vi​,...,vj​,要使线性变换后仍为正交基,即ui∗uj=viTATAvj=0\boldsymbol {u_i *u_j=v_i^TA^TAv_j=0}ui​∗uj​=viT​ATAvj​=0,若取vi\boldsymbol{v_i}vi​为ATA\boldsymbol {A^TA}ATA的特征向量,则上式可进一步写成ui∗uj=λjviTvj=0\boldsymbol {u_i *u_j}=\lambda_j \boldsymbol{v_i^Tv_j}=0ui​∗uj​=λj​viT​vj​=0,显然变换后的向量满足正交性。对该向量进行单位化,取ui=Avi∣∣Avi∣∣2=AviviTATAvi=Aviλi\boldsymbol {u_i }=\frac{\boldsymbol {A v_i }}{||\boldsymbol {A v_i }||_2}=\frac{\boldsymbol {A v_i }}{\sqrt{\boldsymbol {v_i^TA^TAv_i}}}=\frac{\boldsymbol {A v_i }}{\sqrt{\lambda_i}}ui​=∣∣Avi​∣∣2​Avi​​=viT​ATAvi​​Avi​​=λi​​Avi​​
称σi=λi\sigma_i=\sqrt{\lambda_i}σi​=λi​​为奇异值,则σiui=Avi\sigma_i\boldsymbol {u_i }=\boldsymbol {Av_i }σi​ui​=Avi​,两边同乘以AT\boldsymbol A^TAT,可得σivi=ATui\sigma_i\boldsymbol {v_i }=\boldsymbol {A^Tu_i}σi​vi​=ATui​,这就是前面所提到两组正交基之间可通过矩阵及其转置相互转换。

值的注意的是:ATA\boldsymbol {A^TA}ATA为对称阵,若为实对称阵,其特征值也为实数。根据Rank(ATA)≤Rank(A)Rank{(\boldsymbol {A^TA})}\leq Rank(\boldsymbol A)Rank(ATA)≤Rank(A),可见对于Am×n\boldsymbol A_{m\times n}Am×n​,特征数nnn一般小于样本数mmm,这也意味着特征值可能会取0,此时对应左奇异向量和右奇异向量又该怎么取?

我们回到奇异值分解的最终目标上:
A=UΣVT\boldsymbol {A=U\Sigma V^T}A=UΣVT
U\boldsymbol UU中的列向量可以视为A\boldsymbol AA中的列空间的单位正交基;V\boldsymbol VV中的列向量可以视为A\boldsymbol AA中的行空间的单位正交基。根据矩阵的4个子空间,A\boldsymbol AA的零空间与行空间向量彼此正交,而左零空间与列空间向量彼此正交。因此,我们可以用A\boldsymbol AA的左零空间补充U\boldsymbol UU中的剩余列向量;而用A\boldsymbol AA的零空间补充V\boldsymbol VV中的剩余列向量。

用分块矩阵可写成:
A=UΣVT=[U1U2][σ10...00σ2...0......σk..00...0][V1V2]T\boldsymbol {A=U\Sigma V^T=\left[\begin{matrix}U_1&U_2\end{matrix}\right]\left [ \begin{matrix}\sigma_1&0&...&0\\0&\sigma_2&...&0\\...&... &\sigma_k&..\\0&0&...&0\end{matrix}\right ]\left[\begin{matrix}V_1&V_2\end{matrix}\right]^T}A=UΣVT=[U1​​U2​​]⎣⎢⎢⎡​σ1​0...0​0σ2​...0​......σk​...​00..0​⎦⎥⎥⎤​[V1​​V2​​]T
其中各向量的意义为:
V1\boldsymbol V_1V1​: A\boldsymbol AA的行空间对于的单位正交基。
V2\boldsymbol V_2V2​:A\boldsymbol AA的零空间对于的单位正交基。
U1\boldsymbol U_1U1​:A\boldsymbol AA的列空间对于的单位正交基。
U2\boldsymbol U_2U2​:A\boldsymbol AA的左零空间对于的单位正交基。

从线性算子的角度来看,奇异值分解可视为将线性算子A\boldsymbol AA分解为三个子线性算子,对应于三个简单的线性变换:
(1)将输入向量投影到右奇异向量上;
(2)将右奇异向量按照对应的奇异值进行拉伸变换;
(3)将拉伸后的结果再投影到左奇异向量上。

通常将奇异值大小从大到小进行有序排列,对应的有序集合叫矩阵的谱,包含了矩阵的大量信息,比如奇异值之间的差异影响着矩阵解的稳定性,最大和最小的奇异值绝对值之间的比 率( 条件数 )影响着一个迭代求解器找到矩阵解的速度。
奇异值往往衰减特别快,因此可以用少量的几个奇异值和对应的奇异值向量去描述高维的空间。即:
Am×n=Um×kΣk×kVk×mT\boldsymbol {A_{m\times n}=U_{m\times k}\Sigma_{k\times k} V^T_{k\times m}}Am×n​=Um×k​Σk×k​Vk×mT​
所以奇异值广泛用于数据降维、噪声过滤、信息提取等领域。

矩阵理论(二)特征值分解和SVD分解相关推荐

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

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

  2. 几种矩阵分解算法: LU分解,Cholesky分解,QR分解,SVD分解,Jordan分解

    目录 1.LU分解 2. LDLT分解法 3. Cholesky分解的形式 4. QR分解 5.SVD分解 5.1 SVD与广义逆矩阵 6. Jordan 分解 参考文章: ---------我只是搬 ...

  3. 特征值分解和SVD分解

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

  4. 【机器学习中的矩阵分解】LU分解、QR分解、SVD分解

    学习总结 文章目录 学习总结 一.三角分解(LU分解) 1.1 高斯消元 1.2 LU分解原理 1.3 LU分解python代码 1.4 LU分解算法 二.QR分解 2.1 Schmid 正交化 2. ...

  5. QR分解,SVD分解以及应用

    %%%QR分解 QR分解--它是将矩阵分解成一个正规正交矩阵Q与上三角形矩阵R 具体的分解方式可以参考QR分解_shushi6969的博客-CSDN博客_qr分解 A = [1,1,2;8,4,4;4 ...

  6. 聊聊特征分解和SVD分解

    矩阵分解 矩阵分解(decomposition,factorization):将矩阵拆分为多个矩阵的乘积的运算.矩阵的分解包括以下几种: 特征分解 SVD分解 PCA QR分解 LU分解 极分解 矩阵 ...

  7. 奇异值(Singular value decomposition SVD)分解

    本文摘自两篇博客,感谢博主分享 一.原文地址:http://blog.csdn.net/wangzhiqing3/article/details/7446444 SVD分解 SVD分解是LSA的数学基 ...

  8. 图像SVD分解与重构

    图像SVD分解与重构 将图像看成一个二维矩阵,三个通道的彩色图像就是3个二维矩阵,对矩阵分别进行svd分解.svd分解是将一个矩阵A写成U∗Σ∗VTU*\Sigma*V^TU∗Σ∗VT的形式,U和V都 ...

  9. QR分解、RQ分解与SVD

    QR分解.RQ分解与SVD分解整理 1.QR分解 QR分解将一个m x m的矩阵A分解为一个正交矩阵Q与一个上三角阵R之积.常常利用Householder变换来进行QR分解的计算. Household ...

最新文章

  1. 西里尔字 - 俄罗斯
  2. Keil uVision2 简介
  3. 涉密服务器虚拟化软件,虚拟化软件解决方案
  4. 命名空间不能直接包含字段或方法之类的成员是什么意思_Python 学习笔记之类与实例...
  5. 面向数据流的设计方法
  6. 计算机网络校园网简单设计与实现,简单校园网的设计与实现.docx
  7. 04-Mysql----初识sql语句
  8. 敏捷开发中asp.net MVC的开发次序感受(先开发View?先开发Model?先开发Controller!)...
  9. idea 2017 破解方法
  10. Mac:如何配置java和maven环境变量
  11. matlab求解mtsp多配送中心路径优化问题(附代码)
  12. chroma8000使用_台湾致茂MES系统Chroma8000上使用更安全敏捷
  13. 百度云 文字识别API在线调用测试
  14. 危化品柜颜色如何区分?
  15. 【转载】电子通信、嵌入式工程师的面试指南
  16. python_绘制动态地图
  17. 一个快速出名的捷径让你你平步青云
  18. RabbitMQ 客户端源码系列 - Channel
  19. 英语音标中难发的音汇总
  20. Docker学习之镜像操作

热门文章

  1. libmysqlclient_18 not defined in file libmysqlclient.so.18
  2. 一键加密:WPS(Wi-Fi Protected Setup,Wi-Fi保护设置)
  3. 打印机打开扫描提示使用该设备需要WIA驱动程序。请从安装CD或从制造商的网站安装此程序,然后重试--------
  4. 北理工通报方岱宁院士处理结果
  5. 阿里资深技术专家总结:要怎样努力才可以成为公司主力架构师
  6. DeepMind爆发史:决定AI高峰的“游戏玩家”|深度学习崛起十年
  7. 基于 python 的单细胞转录因子分析
  8. Day3_Pytorch入门——人脸标点绘图(简单)
  9. 正余弦函数的matlab仿真,实现正余弦信号的算法比较
  10. 《程序员》约稿:多任务下的时间管理,目标计划与任务分解