首先,有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. 如何增强VR的vection/self-motion?

    上一节讲到了vection是给玩家带来“移动感”的因素,它提供良好VR体验的关键之一.那么VR中我们一般用哪些方式来提供vection呢?1 首先来简单了解一下人体和空间相关的感知机制. 视觉线索 v ...

  2. Oracle自带工具sql优化集-SQL Tuning Advisor (使用心得体会)

    如何有效的诊断和监控高负载的SQL对于DBA来说并非是件容易的事情,对SQL语句手工调优需要很多的经验和技巧, 结合个人经验常见如下问题:          . 对SQL语句本身进行优化以便获得更优的 ...

  3. 03-01 K-Means聚类算法

    目录 K-Means聚类算法 一.K-Means聚类算法学习目标 二.K-Means聚类算法详解 2.1 K-Means聚类算法原理 2.2 K-Means聚类算法和KNN 三.传统的K-Means聚 ...

  4. python编程基础之三十七

    数据的持久化:数据持久化就是将内存中的对象转换为存储模型,以及将存储模型转换为内存中的对象的统称. 对象可以是任何数据结构或对象模型,存储模型可以是关系模型.XML.二进制流等 Python的数据持久 ...

  5. Head First设计模式——策略模式

    1.继承带来的扩展和复用问题 继承作为面向对象的三大要素(封装.继承.多态)之一为什么会带来问题,问题如何解决然后形成一种设计模式,head frist设计模式书中以鸭子作为例子讲解什么情况下继承的方 ...

  6. Faker——生成测试数据的PHP类库

    工作上用的是TP框架,每次测试功能的时候都要手动添加测试数据,词穷起名总是起一些test1.test2这种low到爆炸的用户名,这让我很难受.稍微翻阅了一些资料,发现laravel有一个生成测试数据的 ...

  7. Qt+VC2010+glew环境安装配置

    Qt的源码及预编译安装包在 Qt Archive下载,http://download.qt.io/archive/qt/, 目前最新的是Qt5,其中和Qt4不同的是,Qt5多了个QOpenGLWidg ...

  8. vue中 props 多层组件嵌套传值

    如:三层嵌套. 父组件=>子组件=>孙子 1. 父组件引用子组件component11 , isShow传值给子组件component11 2. 子组件用  props 接受父组件的值, ...

  9. Git上传项目至GitHub

    要使用github,首先需要下载git.安装git 1.先在github上创建一个git仓库,复制该github路径 2.用cmd进入一个目录 git clone github路径 从github上直 ...

  10. [JOYOI1326] 剑人合一

    题目限制 时间限制 内存限制 评测方式 题目来源 1000ms 131072KiB 标准比较器 Local 题目描述 他们飘呀飘,飘呀飘,飘呀飘,飘呀飘~~~经过七七八十一天的漂泊,残雪.夏夜和水手2 ...