这部分矩阵运算的知识是三维重建的数据基础。

矩阵分解

求解线性方程组:,其解可以表示为.

为了提高运算速度,节约存储空间,通常会采用矩阵分解的方案,常见的矩阵分解有LU分解、QR分解、Cholesky分解、Schur分解、奇异分解等。这里简单介绍几种。

LU分解:如果方阵A是非奇异的,LU分解总可进行。一个矩阵可以表示为一个交换下三角矩阵和一个上三角矩阵的乘机。更整洁的形式是:一个矩阵可以表示为一个上三角矩阵和一个下三角矩阵以及一个置换矩阵的形式,即:

从而方程的解可以表示为

QR分解:矩阵可以分解为一个正交矩阵Q和一个上三角矩阵R的乘机形式。类似于LU,通常有一个正交矩阵Q,一个上三角矩阵R及一个置换矩阵E,满足:,方程的解为:

Cholesky分解:如果矩阵X是对称正定的,X可以分解为一个下三角矩阵和上三角矩阵的乘机,且下三角和上三角互为转置。

如果任何非零向量z,都有,则X为正定矩阵。虫咬条件是X的特征值全为正。

特征值分解EVD:任意n阶方阵X可以分解为XV=VD,其中D为特征值对角阵,V是特征向量矩阵。

奇异值分解SVD:任意一个m*n维的矩阵X可以分解为,其中UV为酉矩阵,S是m*n维的对角矩阵,其对角线元素为X的从大到小排序的非负奇异值。SVD分解十分强大且适用,因为任意一个矩阵都可以实现SVD分解,相比与SVD分解,特征值分解只能应用于方阵。

SVD的定义

特征值分解中,任意方阵可以有XV=VD。对于任意m*n的矩阵A,通过可以得到一个方阵,从而得到:

A的SVD分解是:

其中:U是一个m*m的正交阵,S是一个m*n的对角阵,对角元素为A的奇异值,V是一个n*n的正交阵。U的m个列向量成为A的左奇异向量,V的n个列向量称为A的右奇异向量。S完全由A决定和UV无关。

实对称阵的特征值为,则S中的奇异值为:,V是的特征向量。

在矩阵Σ中也是从大到小排列,而且σ的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。也就是说,我们也可以用前r大的奇异值来近似描述矩阵,这里定义一下部分奇异值分解:

三个矩阵相乘的结果将会是一个接近于A的矩阵,在这儿,r越接近于n,则相乘的结果越接近于A。

线性最小二乘问题

m个方程求解n个未知数,有三种情况:

  1. m=n且A为非奇异,则有唯一解,
  2. m>n,约束的个数大于未知数的个数,称为超定问题(overdetermined)
  3. m<n,负定/欠定问题(underdetermined)

通常我们遇到的都是超定问题,此时Ax=b的解是不存在的,从而转向解最小二乘问题:

J(x)为凸函数,一阶导数为0,得到:,称之为正规方程

一般解:

奇异值分解与线性最小二乘问题

列满秩, 是A的奇异值分解。

为U的前n列矩阵,即 ,则:

等号当且仅当 时成立,所以:

这就是线性最小二乘问题的解。

特殊情况:齐次线性方程Ax=0 A的行数大于列数

此时,最小二乘解为最小特征值对应的特征向量。

感性认识:如果x是的特征向量,则目标函数:

求解方案:

  1. ,V为特征向量阵,找最小特征值对应的V中的特征向量。
  2. ,前面我们知道U是的特征值,V是的特征值,找S中最小奇异值对应的V的右奇异向量即可。

SVD分解及线性最小二乘问题的更多相关文章

  1. SLAM中的优化理论(一)—— 线性最小二乘

    最近想写一篇系列博客比较系统的解释一下 SLAM 中运用到的优化理论相关内容,包括线性最小二乘.非线性最小二乘.最小二乘工具的使用.最大似然与最小二 乘的关系以及矩阵的稀疏性等内容.一方面是督促自己对 ...

  2. 线性代数之——SVD 分解

    SVD 分解是线性代数的一大亮点. 1. SVD 分解 \(A\) 是任意的 \(m×n\) 矩阵,它的秩为 \(r\),我们要对其进行对角化,但不是通过 \(S^{-1}A S\).\(S\) 中的 ...

  3. 投影矩阵、最小二乘法和SVD分解

    投影矩阵广泛地应用在数学相关学科的各种证明中,但是由于其概念比较抽象,所以比较难理解.这篇文章主要从最小二乘法的推导导出投影矩阵,并且应用SVD分解,写出常用的几种投影矩阵的形式. 问题的提出 已知有 ...

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

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

  5. SVD分解技术详解

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

  6. 【线性代数】6-7:SVD分解(Singular Value Decomposition-SVD)

    title: [线性代数]6-7:SVD分解(Singular Value Decomposition-SVD) categories: Mathematic Linear Algebra keywo ...

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

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

  8. SVD分解技术数学解释

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

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

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

随机推荐

  1. Windows中"打开方式..."无法指定程序的解决办法

    Windows真DT, 今天升级了vim, 从vim73到vim74, 突然发现右键菜单打开方式中的VIM不见了, 于是手动重新指定到vim74\gvim.exe, 未果, Windows就直接忽略了 ...

  2. 更改jdk后,eclipse运行jsp出错

    1.错误: 在Eclipse下启动tomcat的时候,报错为:Eclipse下启动tomcat报错:The archive: C:/Program Files(x86)/Java/jdk1.7.0_1 ...

  3. please verify the preference field with the prompt:Tomcat JDK name

    使用MyEclipse的Tomcat的时候出现下面的问题: a   configuration   error   occurred   during   startup.   please   ve ...

  4. top 学习

    通常top命令是会持续运行而不终止的. 要在脚本里用,需要添加一些选项参数,尤其是-b.例如:top -b -n 2 -d 3 >/tmp/log -b表示批处理模式(Batch mode),以 ...

  5. 替代crontab,任务计划统一集中管理系统cronsun简介

    一.背景 crontab 是 Linux 系统里面最简单易用的定时任务管理工具,相信绝大多数开发和运维都用到过.在咱们公司,很多业务系统的定时任务都是通过 crontab 来定义的,时间长了后会发现存 ...

  6. [trouble shoot]atol和atoll

    就终于的结果来看,事实上就是一个小的错误. 但定位错误的时间比較漫长了.. . 背景:出错的代码是 一段执行在 linux server上的程序,程序的主要功能是处理银行pos刷卡记录并做一些计算.最 ...

  7. 活久见: 原来 Chrome 浏览器支持 Import from 语法

    需要满足以下三个条件: 1.高版本的Chrome ,总而言之越新越好……,其他浏览器请参考:https://caniuse.com/#search=import 2.必须在服务器环境下才能运行,譬如a ...

  8. 在c和c++中的求绝对值

    在c语言中,根据类型的不同,求绝对值函数也不同. int abs(int x) double fabs(double x) 求int类型用abs,求浮点类型用fabs. 而且这两个函数的所在头文件也不 ...

  9. VS2010如何重置开发环境

    在利用VS进行软件开发的过程中,我们时不时要因为各种原因,对VS的开发环境进行变动,对于很多初次接触VS这样一个十分好用方便的编程工具的人来说,更改编程环境成了一个难题,今天我们就来讲解一下,如何更改 ...

  10. [na]完全理解icmp协议

    1.ICMP出现的原因 在IP通信中,经常有数据包到达不了对方的情况.原因是,在通信途中的某处的一个路由器由于不能处理所有的数据包,就将数据包一个一个丢弃了.或者,虽然到达了对方,但是由于搞错了端口号 ...