首先,有y = AX,将A看作是对X的线性变换

但是,如果有AX = λX,也就是,A对X的线性变换,就是令X的长度为原来的λ倍数。

*说起线性变换,A肯定要是方阵,而且各列线性无关。(回想一下,A各列相当于各个坐标轴,X各个分量相当于各个坐标轴的“基本向量”长度)

(同一长度的各个方向的向量,变换前和变换后,有些前后只是拉伸了,方向不变;有些拉伸了,方向同时也改变了)

这样的X1X2……Xn称为特征向量, λ1, λ2…… λn为对应的特征值。

如果有S矩阵,全是特征特征向量,也就是 S = [X1X2……Xn]

AS=S∧,A = S∧ S-1 ,又叫矩阵对角化。(这是继LU分解,QR分解后的第三种分解)

(A = x1λ1 y1  + …… + xnλn yn  , y1 ~ yn 假设是S-1 行向量,如果λ1 是最大的,比其他大很多,那么对于A矩阵,只要记住x1λ1 y1 就可以有一个近似的A' ,实现了对矩阵的压缩存储)

*如果A能对角化,除了是方阵,还要各个λ值互不相同。因为λ有一对相同,证明X会有一对线性相关,从而S的列向量不独立,从而S没有逆。


既然这样,那么X可以单位化,也就是X' = X / ||X||,而 λ' =  ||X|| λ , X重要的是方向,而不是长度。


如果A是对称矩阵,那么A = A

A = S∧ S-1 = (S∧ S-1)=  (S-1) ∧ST

要式子成立,那么S-1 = S,要有这种性质的矩阵S,只有标准正交矩阵Q,因为QQ-1 = I = QQ

对于A = AT ,有A =  Q ∧QT 并没有什么约束条件 (Gilbert Strang《Introduction to LINEAR ALGEBRA》p330),这就是对称矩阵对角化

(对称矩阵一定是方阵,但不一定有逆,如元素全是1的也对称,但各列向量不独立)


 相似矩阵:如果M可逆,那么B = M-1AM相似于A,而且B的特征值和A的特征值一样。

证明:B = M-1AM 等价于 A = MBM-1 , AXX,(MBM-1)XX ,  B(M-1X) =  λ(M-1X)。因此,B的特征向量是(M-1X) ,特征值依然是λ。


任意正交向量组V1,V2,V3,通过A变换(A可以是任意形式的矩阵),得到的向量都是正交的。

(这种任意m*n的变换,应该叫“仿射变换”,因为向量v变换后,其维数都不同了;而平时n*n的变换,应该叫线性变换,维数还是一样的)

证明:A是m*n的,v是n*1的,u是m*1的,那么:

Av1 = u1

Av2 = u2

要证明U1TU2=0

(Av1T(Av2 ) =u1Tu  只要证明等式左边等于0

v1AT Av2  = u1Tu2 因为ATA是对称矩阵,所以有:

v1T Q ∧QTv2  = u1Tu2


基于上面,假如将u单位化,v单位化,那么有:

Av1 = δ1u

Av2 = δ2u2

1. v的向量个数,顶多有n个,因为V为n维空间,n维空间中相互垂直的向量顶多有n个。

2. 就算v是长度为1,通过乘以矩阵A后,也有可能变为长度不为1的u,

假设所有n个相互正交的单位v向量,通过A变换后,得到相互正交的n个u向量, 将上式子写成矩阵形式:

也就是:AV=UΣ

因为V是标准正交矩阵,所以VVT=I,所以:A=UΣVT 这就是著名的奇异值分解(SVD)

(奇异值分解,其实是通用的,终极的分解方式。一旦做SVD分解,自然会根据矩阵的特性,变为:1. 可逆且特征值不重复的方阵分解为S∧ S-1  ;2. 对称方阵分解为Q ∧QT   ;3.  最一般的形式)


那么,现在的问题仅仅是,如何寻找V和U?

首先,我们已经知道,任意矩阵A,能分解为A=UΣVT , 所以,可以从这个入手:

(1)AAT =UΣVUT  

因为上式子中,V为单位正交矩阵,VTV = I,Σ为对角矩阵,ΣΣT = Σ2,所以有:

AA= UΣU, 这不就是对称矩阵对角化 :U原来是AA的特征向量,Σ是AA的特征值开根号。

同理:

(2)ATA  = VΣUUΣVT

ATA  = VΣ 2V,那么:V原来是 ATA  的特征向量,Σ是AAT 或 ATA   的特征值开根号。


顺便有:

当m>n时:


总结:计算的主要工作,是如何求解特征值的问题。这是《数值分析》的内容,在此不讲,只讲非数值分析的思路:

因为:AX =λX ,所以,(A-λI)X= 0

又因为X要有解,又不能全为0,所以A-λI 的各列要线性相关。

又因为A-λI 的各列要线性相关,所以行列式det(A-λI) = 0

(三维)行列式的几何意义是,三个向量作为边,形成的立体体积。

如果三个向量线性相关,那么自然被“压缩”到一个平面上,体积为0;

那么,只要用到 A-λI 的各列来求体积为0,就可以对λ列方程,就可以解λ。(实际上《数值分析》并不会这么解,是通过A*A*A*A....迭代得到的)


参考:

https://zhuanlan.zhihu.com/p/57803955 (推导过程)

https://zhuanlan.zhihu.com/p/42896542 (图片压缩和应用)

SVD分解的更多相关文章

  1. SVD分解的理解[转载]

    http://www.bfcat.com/index.php/2012/03/svd-tutorial/ SVD分解(奇异值分解),本应是本科生就掌握的方法,然而却经常被忽视.实际上,SVD分解不但很 ...

  2. 机器学习中的矩阵方法04:SVD 分解

    前面我们讲了 QR 分解有一些优良的特性,但是 QR 分解仅仅是对矩阵的行进行操作(左乘一个酉矩阵),可以得到列空间.这一小节的 SVD 分解则是将行与列同等看待,既左乘酉矩阵,又右乘酉矩阵,可以得出 ...

  3. SVD分解技术数学解释

    SVD分解 SVD分解是LSA的数学基础,本文是我的LSA学习笔记的一部分,之所以单独拿出来,是因为SVD可以说是LSA的基础,要理解LSA必须了解SVD,因此将LSA笔记的SVD一节单独作为一篇文章 ...

  4. SVD分解技术详解

    版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gm ...

  5. SVD分解 解齐次线性方程组

    SVD分解 只有非方阵才能进行奇异值分解 SVD分解:把矩阵分解为 特征向量矩阵+缩放矩阵+旋转矩阵 定义 设\(A∈R^{m×n}\),且$ rank(A) = r (r > 0) $,则矩阵 ...

  6. 机器学习之SVD分解

    一.SVD奇异值分解的定义 假设是一个的矩阵,如果存在一个分解: 其中为的酉矩阵,为的半正定对角矩阵,为的共轭转置矩阵,且为的酉矩阵.这样的分解称为的奇异值分解,对角线上的元素称为奇异值,称为左奇异矩 ...

  7. 矩阵的SVD分解

    转自 http://blog.csdn.net/zhongkejingwang/article/details/43053513(实在受不了CSDN的广告) 在网上看到有很多文章介绍SVD的,讲的也都 ...

  8. SVD分解求解旋转矩阵

    1.设是两组Rd空间的点集,可根据这两个点集计算它们之间的旋转平移信息. 2.设R为不变量,对T求导得: 令 则 将(4)带入(1)得: 令 则 (相当于对原来点集做减中心点预处理,再求旋转量) 3. ...

  9. SVD分解及线性最小二乘问题

    这部分矩阵运算的知识是三维重建的数据基础. 矩阵分解 求解线性方程组:,其解可以表示为. 为了提高运算速度,节约存储空间,通常会采用矩阵分解的方案,常见的矩阵分解有LU分解.QR分解.Cholesky ...

  10. opencv2.4中SVD分解的几种调用方法

    原帖地址: http://blog.sina.com.cn/s/blog_6109b5d00101ag7a.html       在摄影测量和计算机视觉中,考虑最优解问题时,经常要用到SVD分解.奇异 ...

随机推荐

  1. 自适应布局display:-webkit-box的用法

    在web布局中,我们经常使用的是display:inline-block,display:flex,这些,但其实在进行移动端设备自适应布局中,-webkit-box布局更加合适 不同的浏览器有不同的前 ...

  2. hadoop之yarn详解(基础架构篇)

    本文主要从yarn的基础架构和yarn的作业执行流程进行阐述 一.yarn的概述 Apache Yarn(Yet Another Resource Negotiator的缩写)是hadoop集群资源管 ...

  3. 漫谈 GOF 设计模式在 Spring 框架中的实现

    原文地址:梁桂钊的博客 博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」.一群同频者,一起成长,一起精进,打破认知的局限性. 漫谈 GOF 设计模式在 Spring ...

  4. vertical-align之见

    ertical-align   英文翻译为垂直对齐 ,常用来应用于table 表格中文字的垂直居中:脱离表格后不常用: 有朋友问起:故总结记之: 开局一张图,下来全靠编 这是一个简单的四线表格,小学时 ...

  5. 设计一个A表数据抽取到B表的抽取过程

    原题如下: 解题代码如下: table1类: @Data @NoArgsConstructor @AllArgsConstructor public class table1{ private Str ...

  6. 设置Activity全屏的方法:

    1)代码隐藏ActionBar 在Activity的onCreate方法中调用getActionBar.hide();即可 2)通过requestWindowFeature设置 requestWind ...

  7. 基于.Net core3.0 开发的斗图小程序后端+斗图小程序

    为啥要写这么一个小程序? 作为互联网的原住民. 90后程序员的我,从高中开始发QQ小表情. 到之后的熊猫头,蘑菇头. 可以说表情包陪伴我从学校到社会,从青少年到中年.. 而且因为斗图厉害,还找到一个女 ...

  8. vue中methods,computed,filters,watch的总结

    08.28自我总结 vue中methods,computed,filters,watch的总结 一.methods methods属性里面的方法会在数据发生变化的时候你,只要引用了此里面分方法,方法就 ...

  9. 微信小程序中事件

    微信小程序中事件 一.常见的事件有 类型 触发条件 最低版本 touchstart 手指触摸动作开始 touchmove 手指触摸后移动 touchcancel 手指触摸动作被打断,如来电提醒,弹窗 ...

  10. HelloWin详解

    (注意:遇到程序在弄懂之后一定要自己去敲,一定要自己去敲,一定要自己去敲) (注意:遇到程序在弄懂之后一定要自己去敲,一定要自己去敲,一定要自己去敲) (注意:遇到程序在弄懂之后一定要自己去敲,一定要 ...