首先推荐一篇博客,奇异值分解(SVD)原理详解及推导 - CSDN博客,讲解的很清楚。这里我谈谈自己的理解,方便以后回顾。

  如果把向量理解为空间中的一个元素,那么矩阵可以理解为两个空间上的映射。在线性代数中我们常见的是正交变换,这种变换不会改变向量之间的夹角,可以用坐标系的平移旋转来直观理解。但是对一般的方阵,甚至对更一般的非对称矩阵,这种变化的几何含义又该怎么理解,一直都没有搞清楚。通过奇异值分解能说明这些变化 的实际含义。

  首先我们来看一般的方阵\(M(n*n)\),可以找到一对向量\(x_1,x_2\),在变换前后都是正交的。很明显M的特征向量正好具有这样的性质。至于特征向量有多少则要看矩阵的M的秩。我们设置M的秩为\(k(k<n)\),那么就可以找到k个特征向量\((x_1,x_2,...,x_k)\),采用Gram_Smit方法可以将这k个正交基增广为n个正交基,即n维空间中的一组基底X。然后对空间中任意向量\(\vec{a}\)用X来表示:\(\vec{a}=\{a_1\vec{x_1}+a_2\vec{x_2}+...+a_n\vec{x_n}\}\),然后我们看一下\(Ma\)的分解:

\(Ma=\{x_1,x_2,...,x_n\}*\begin{bmatrix}\lambda_1&&&&&&\\&\lambda_2&&&&&\\&&\ddots&&&&\\&&&\lambda_k&&&\\&&&&0&&\\&&&&&\ddots&\\&&&&&&0\end{bmatrix}*\begin{bmatrix}x_1^T\\x_2^T\\\vdots\\x_n^T\end{bmatrix}*(a_1x_1+a_2x_2+...+a_nx_n)\)

其中\(x_i^Tx_j=\begin{cases}1\text{ if }i=j \\\ 0\text{ if }i\neq j \end{cases}\)

\(Ma=\{x_1,x_2,...,x_n\}*\begin{bmatrix}\lambda_1&&&&&&\\&\lambda_2&&&&&\\&&\ddots&&&&\\&&&\lambda_k&&&\\&&&&0&&\\&&&&&\ddots&\\&&&&&&0\end{bmatrix}*\begin{bmatrix}a_1\\a_2\\\vdots\\a_n\end{bmatrix}\)

\(Ma=\{x_1,x_2,...,x_n\}*\begin{bmatrix}\lambda_1a_1&&&&&&\\&\lambda_2a_2&&&&&\\&&\ddots&&&&\\&&&\lambda_ka_k&&&\\&&&&0&&\\&&&&&\ddots&\\&&&&&&0\end{bmatrix}\)

\(Ma=\lambda_1a_1x_1+\lambda_2a_2x_2+...+\lambda_ka_kx_k\)

从中我们可以看出这种不满秩的方阵所对应的几何变换就是原始向量在特征向量上的分量缩放之后再重组,至于与特征向量垂直的分量直接舍弃了。

大家要注意这里就是一种SVD分解,而不是特征值分解,因为秩小于维度的方阵奇异,不能做特征值分解。但特征值分解也可以看做是满秩的特殊SVD分解,也就是不舍弃任何一个维度上的信息。至于更一般的SVD分解,即矩阵非对称,其含义也是相似的,只不过此时的左奇异矩阵和右奇异矩阵不是对称关系,而且右奇异矩阵中的特征向量是\(M^TM\)的特征向量增广之后的结果,而左奇异矩阵中的特征向量是\(MM^T\)中的特征向量增广之后的。

虽然一般的SVD分解复杂,但本质也是将原空间的向量在特征向量方向上伸缩变换后重组,同时舍弃与特征向量垂直部分的分量。

如果换个角度去想,为什么不满秩的矩阵不可逆,因为非满秩矩阵在变换的过程中丢失了原本的一部分信息,不可逆也是必然的。

这就是我对SVD的理解,也是我第一次用markdown来写博客,感觉挺方便的,特别是对公式的书写。

对SVD奇异值分解的理解的更多相关文章

  1. SVD奇异值分解的基本原理和运用

    SVD奇异值分解: SVD是一种可靠的正交矩阵分解法.可以把A矩阵分解成U,∑,VT三个矩阵相乘的形式.(Svd(A)=[U*∑*VT],A不必是方阵,U,VT必定是正交阵,S是对角阵<以奇异值 ...

  2. SVD奇异值分解的几何物理意义资料汇总

    学习SVD奇异值分解的网上资料汇总: 1. 关于svd的一篇概念文,这篇文章也是后续几篇文章的鼻祖~ http://www.ams.org/samplings/feature-column/fcarc ...

  3. [机器学习]-SVD奇异值分解的基本原理和运用

    SVD奇异值分解: SVD是一种可靠的正交矩阵分解法.可以把A矩阵分解成U,∑,VT三个矩阵相乘的形式.(Svd(A)=[U*∑*VT],A不必是方阵,U,VT必定是正交阵,S是对角阵<以奇异值 ...

  4. 『科学计算_理论』SVD奇异值分解

    转载请声明出处 SVD奇异值分解概述 SVD不仅是一个数学问题,在工程应用中的很多地方都有它的身影,比如前面讲的PCA,掌握了SVD原理后再去看PCA那是相当简单的,在推荐系统方面,SVD更是名声大噪 ...

  5. 简单易学的机器学习算法—SVD奇异值分解

    简单易学的机器学习算法-SVD奇异值分解 一.SVD奇异值分解的定义     假设M是一个的矩阵,如果存在一个分解: 其中的酉矩阵,的半正定对角矩阵,的共轭转置矩阵,且为的酉矩阵.这样的分解称为M的奇 ...

  6. 关于奇异值分解(SVD)的理解

    奇异值分解实际上是将一个矩阵,分解成为两个不同维度(行数和列数)上的正交向量集之间的映射变换,奇异值则是变换时的缩放! 例如上面的矩阵M就是一个5维映射到4维的变换矩阵,而SVD分解得到的奇异值和奇异 ...

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

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

  8. Deep Learning基础--SVD奇异值分解

    矩阵奇异值的物理意义是什么?如何更好地理解奇异值分解?下面我们用图片的例子来扼要分析. 矩阵的奇异值是一个数学意义上的概念,一般是由奇异值分解(Singular Value Decomposition ...

  9. SVD分解的理解

    对称阵A 相应的,其对应的映射也分解为三个映射.现在假设有x向量,用A将其变换到A的列空间中,那么首先由U'先对x做变换: 由于正交阵“ U的逆=U‘ ”,对于两个空间来讲,新空间下的“ 基E' 坐标 ...

随机推荐

  1. JavaScript构造函数、继承的理解

    前两天稍微深入一点点理解了原型和原型链,然后就开始有挺多疑问的: function dog() { this.name = "huahua"; } var cat = new do ...

  2. tomcat 设置jvm 参数

    在catalina.bat中设置 正确的做法是设置成这样set JAVA_OPTS=%JAVA_OPTS% -Xms256m -Xmx256m,避免JAVA_OPTS参数覆盖

  3. 一起学Linux04之Linux文件基本属性

    Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限.为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定. 为了介绍文件属性,首 ...

  4. 微信小程序参数二维码6问6答

    微信小程序参数二维码[基础知识篇],从6个常见问题了解小程序参数二维码的入门知识. 1.什么是小程序参数码? 微信小程序参数二维码:针对小程序特定页面,设定相应参数值,用户扫描后进入相应的页面. 2. ...

  5. ABP架构学习系列二:ABP中配置的注册和初始化

    一.手工搭建平台 1.创建项目 创建MVC5项目,手动引入Abp.Abp.Web.Abp.Web.Mvc.Abp.Web.Api 使用nuget添加Newtonsoft.Json.Castle.Cor ...

  6. spring boot 之热部署(三)

    热部署:当发现程序修改时自动启动应用程序. spring boot使用的是spring-boot-devtools是一个为开发者服务的一个模块.其原理用了classLoader 其中一个加载不变的类, ...

  7. MicroPython教程之TPYBoard开发板DIY红外寻迹小车

    智能小车现在差不多是电子竞赛或者DIY中的主流了,寻迹,壁障,遥控什么的,相信大家也都见得很多了,这次就大家探讨一下寻迹小车的制作方法,不同于以往的是这次的程序不用C语言写,而是要使用python语言 ...

  8. 自学Aruba1.2-WLAN一些基本常识

    点击返回:自学Aruba之路 自学Aruba1.2-WLAN一些基本常识 1. LAN.WAN.WLAN.WIFI术语 1.1 局域网(Local Area Network,LAN) 是指在某一区域内 ...

  9. JSP动态产生的代码,点击显示确认操作,根据操作跳转并传值。

    假如有如下一段代码产生了多个选项我们改如何获得点击删除一项中的值? <%List<Theme> themelist=(List<Theme>)request.getAtt ...

  10. SQL Server-聚焦WHERE Column=@Param OR @Param IS NULL有问题?

    前言 上一篇我们讲完SQL动态查询,本节我们继续来讲解SQL动态查询中存在的问题. SQL动态查询条件筛选过滤 当我们创建存储过程调用存储过程时,若筛选条件有值则过滤,没有值则返回所行记录,类似如下查 ...