1. QR 分解的形式

QR 分解是把矩阵分解成一个正交矩阵与一个上三角矩阵的积。QR 分解经常用来解线性最小二乘法问题。QR 分解也是特定特征值算法即QR算法的基础。用图可以将分解形象地表示成:

其中, Q 是一个标准正交方阵, R 是上三角矩阵。

2. QR 分解的求解

QR 分解的实际计算有很多方法,例如 Givens 旋转、Householder 变换,以及 Gram-Schmidt 正交化等等。每一种方法都有其优点和不足。上一篇博客介绍了 Givens 旋转和 Householder 变换, 第三种方法线性代数课程里面已经非常常见。下面用 Householder 变换的方法推导中间的过程。

假设 A 是一个 5×4 的矩阵,用 × 号表示本次变换未变化的元素,用 + 号表示本次发生变换的元素, H 矩阵等效于对右侧的 A 矩阵进行行操作:

四次变换之后, A 就转化成一个上三角矩阵。并且如果 A 是列向量不相关,则 R 矩阵是非奇异矩阵。

由于 H1, H2, H3, H4 都是标准化正交矩阵,那么 QT 也是标准正交矩阵。

根据矩阵相乘的性质,由于 R 下面都是 0 元素,因此,可以将 Q 矩阵对应分解成 Q1 和 Q2 两个部分,后面乘以 0 向量的部分可以省略,这就是 thin QR 分解:

上式中 R 的列向量可以看做是以 Q1 列向量为基的子空间的坐标。

3. 用 QR 解决最小二乘法

这个系列的第一篇博客就用 Normal equations 的方法解决了最小二乘的问题,具体来说使用了“伪逆”,但是这种做法存在缺陷,比如计算量大和浮点数运算中 roundoff 的问题。现在我们尝试用 QR 的方法来试一试。对于一个 OverDeterminded 的矩阵 A, 最小二乘的问题可以归结为:

将 A 进行 QR 分解,很容易可以推导出目标函数(残差的平方):

其中, 

后面一项是硬伤,没有办法优化,令前面一项等于 0, 可以得到最小二乘法的 solution:

而且有一个好处是,用 Householder 变换得到的 P1, P2, P3...等,我们完全没有必要把用 Q = P1P2P3 显性地求出来,而是将 b 向量添加到 A 矩阵右侧, 与 A 一起做 Householder 变换即可:

另外一个福利是:由于 Householder 变换和平面旋转变换对于浮点运算的 rounding error 问题有优良的性质,QR 分解方法比 Normal equations 的条件数更小, 某些问题的 solution 也更加精确。

4. 更新最小二乘的解集

在一些应用里面,系统要求我们实时更新解集,但是样本数据是逐渐产生的,也就是说矩阵 A 和向量 b 是逐渐变长的,如何在已有的解集上进行更新?

问题可以描述如下:假设现在已经将产生的数据进行了 QR 分解,新产生的数据是 a 和 beta,

由于中间的 Q_2^T b 对于运算没有作用,我们暂且将它扔掉,用 × 表示不变的元素,用 + 表示变化的元素,我们的主要思路是用 Givens 旋转操作(上一篇博客有介绍,实际上 Householder 变换和 Givens 旋转都是左乘一个标准化的正交矩阵,在这里是等效的),先对第 1 行和第 n+1 行进行旋转,然后对第 2 行和地 n+1 行进行旋转... 一步一步求出更新后的 R 和 Q1b:

第一行和第 n+1 行进行旋转:

第二行和第 n+1 行进行旋转:

依次进行,直到:

最终得到解集。

机器学习中的矩阵方法03:QR 分解的更多相关文章

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

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

  2. 机器学习(十三)——机器学习中的矩阵方法(3)病态矩阵、协同过滤的ALS算法(1)

    http://antkillerfarm.github.io/ 向量的范数(续) 范数可用符号∥x∥λ表示. 经常使用的有: ∥x∥1=|x1|+⋯+|xn| ∥x∥2=x21+⋯+x2n−−−−−− ...

  3. 机器学习中的矩阵方法(附录A): 病态矩阵与条件数

    1. 病态系统 现在有线性系统: Ax = b, 解方程 很容易得到解为: x1 = -100, x2 = -200. 如果在样本采集时存在一个微小的误差,比如,将 A 矩阵的系数 400 改变成 4 ...

  4. 机器学习中的标准化方法(Normalization Methods)

    希望这篇随笔能够从一个实用化的角度对ML中的标准化方法进行一个描述.即便是了解了标准化方法的意义,最终的最终还是要:拿来主义,能够在实践中使用. 动机:标准化的意义是什么? 我们为什么要标准化?想象我 ...

  5. 【矩阵】RQ/QR 分解

    Multiple View Geometry in Computer Vision A.4.1.1 (page 579) 将一个 3x3 矩阵 $ A $ 进行 RQ 分解是将其分解成为一个上三角阵 ...

  6. 再谈机器学习中的归一化方法(Normalization Method)

    机器学习.数据挖掘工作中,数据前期准备.数据预处理过程.特征提取等几个步骤几乎要花费数据工程师一半的工作时间.同时,数据预处理的效果也直接影响了后续模型能否有效的工作.然而,目前的大部分学术研究主要集 ...

  7. QR分解

        从矩阵分解的角度来看,LU和Cholesky分解目标在于将矩阵转化为三角矩阵的乘积,所以在LAPACK种对应的名称是trf(Triangular Factorization).QR分解的目的在 ...

  8. QR分解与最小二乘

    主要内容: 1.QR分解定义 2.QR分解求法 3.QR分解与最小二乘 4.Matlab实现   一.QR分解 R分解法是三种将矩阵分解的方式之一.这种方式,把矩阵分解成一个正交矩阵与一个上三角矩阵的 ...

  9. QR分解与最小二乘(转载自AndyJee)

    转载网址:http://www.cnblogs.com/AndyJee/p/3846455.html 主要内容: 1.QR分解定义 2.QR分解求法 3.QR分解与最小二乘 4.Matlab实现 一. ...

随机推荐

  1. 在matlab2015b中配置vlfeat-0.9.18

    参考链接: 1.http://cnyubin.com/?p=85                2.http://www.cnblogs.com/woshitianma/p/3872939.html ...

  2. MAC、IDFA、IMEI正则表达式

    一.安卓: MAC:接入网络的设备的序号,唯一值.用 16 进制数表示,由 0-9,A-F 组成,如:44:2A:60:71:CC:82 Uuid 正则表达式: ^([0-9a-fA-F]{2})(( ...

  3. 用shell脚本批量修改文件后缀名

    早上本想将一些照片上传到相册中,但是由于所有照片的扩展名都是JPG而不是小写的jpg,因此造成了“格式不正确”而不能上传照片.此刻就产生了这样一个问题:使用shell脚本如何批量将所有文件的扩展名JP ...

  4. Rotate Array

    Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the array  ...

  5. storm的并发和消息保障性

    Storm并发配置的优先级: defaults.yaml < storm.yaml < topology-specific configuration < internal  com ...

  6. java charset detector

    https://code.google.com/p/juniversalchardet/downloads/list java移植mozilla的编码自动检测库(源码为c++),准确率高. 通过svn ...

  7. java基础疑难点总结之成员变量的继承,方法重载与重写的区别,多态与动态绑定

    1.成员变量的继承 1.1要点 子类用extends关键字继承父类.子类中可以提供新的方法覆盖父类中的方法.子类中的方法不能直接访问父类中的私有域,子类可以用super关键字调用父类中的方法.在子类中 ...

  8. 【Android 我的博客APP】1.抓取博客首页文章列表内容——网页数据抓取

    打算做个自己在博客园的博客APP,首先要能访问首页获取数据获取首页的文章列表,第一步抓取博客首页文章列表内容的功能已实现,在小米2S上的效果图如下: 思路是:通过编写的工具类访问网页,获取页面源代码, ...

  9. 分享十二个有用的jQuery代码

    分享7个有用的jQuery代码 这篇文章主要介绍了7个有用的jQuery技巧分享,本文给出了在新窗口打开链接.设置等高的列.jQuery预加载图像.禁用鼠标右键.设定计时器等实用代码片段,需要的朋友可 ...

  10. 怎么在ZBrush中渲染漫画风格的插画

    创建“漫画插画”的外观和感觉想必一定很有趣吧,但是,获得想要的精确外观有时也会令人相当沮丧,因此了解一些基本原则,创建类似于ZBrush漫画MatCaps的作品很有必要. 若有疑问亦或者想查看具体的视 ...