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 行进行旋转:

依次进行,直到:

最终得到解集。

作者:daniel-D 出处:http://www.cnblogs.com/daniel-D/ 欢迎转载或分享,但请务必声明文章出处。

浅谈机器学习中的QR分解相关推荐

  1. 欧几里得范数_浅谈机器学习中的范数

    机器学习中范数的广义定义: 一个范数是一个真实的向量空间V中的关于|| . ||的一个函数映射关系,其满足以下3个条件 (1)||x|| ≥ 0,当且仅当 x=0的时候等号成立 (2)||αx|| = ...

  2. 浅谈机器学习中的过拟合

    本篇博客主要是基于花书(古德费洛的<Deep Learning>)和西瓜书(周志华的<机器学习>)撰写的,其中插入了博主的一些个人见解,如有不对之处希望大家指出来一起来讨论一下 ...

  3. 浅谈机器学习中的特征缩放(feature scaling)

    引言 在运用一些机器学习算法的时候不可避免地要对数据进行特征缩放(feature scaling),比如:在随机梯度下降(stochastic gradient descent)算法中,特征缩放有时能 ...

  4. 浅谈机器学习之深度学习

    浅谈机器学习之深度学习 从人工智能到机器学习再到深度学习 人工智能是个很大的知识集合体,但目前有个和它关系最大的学科---机器学习 机器学习是一门多领域交叉学科,涉及概率论.统计学.逼近论.凸分析.算 ...

  5. 浅谈机器学习之数据集构建

    浅谈机器学习之数据集构建 ​ 正如大家现在知道的,深度学习模型(DL)和机器学习模型(ML)是数据驱动型任务,在近乎完美的数据集面前,模型间的细微差异可以忽略.但要获得覆盖目标场景所有特征的样本,不仅 ...

  6. 【机器学习】用QR分解求最小二乘法的最优闭式解

    [机器学习]用QR分解求最小二乘法的最优闭式解 写在前面 QR分解 定义 QR的求解 线性回归模型 用QR分解求解最优闭式解 矩阵的条件数 实验 运行结果 写在前面 今天刷知乎,看到张皓在面试官如何判 ...

  7. 浅谈Android中的MVP与动态代理的结合

    浅谈Android中的MVP与动态代理的结合 本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 在Android开发平台上接触MVP足足算起来大概已经有一个年头左右.从最开始到现在经 ...

  8. python中scipy.optimize_浅谈SciPy中的optimize.minimize实现受限优化问题

    问题描述:有一批样本x,每个样本都有几个固定的标签,如(男,24岁,上海),需要从中抽取一批样本,使样本总的标签比例满足分布P(x),如(男:女=49%:51%.20岁:30岁=9%:11%..... ...

  9. java 中的单元测试_浅谈Java 中的单元测试

    单元测试编写 Junit 单元测试框架 对于Java语言而言,其单元测试框架,有Junit和TestNG这两种, 下面是一个典型的JUnit测试类的结构 package com.example.dem ...

最新文章

  1. Python学习之路 (一)开发环境搭建
  2. 首个64层3D NAND闪存技术出现
  3. mongoDB3.4主从复制实现(第一种情况亲测)
  4. Android中的APK,TASK,PROCESS,USERID之间的关系
  5. flex 布局下关于容器内成员 flex属性的理解
  6. Python编码详解
  7. 为什么要有res/values/ids.xml(一个res/values/ids.xml引发的血案)
  8. android settings的八个问题
  9. cvThreshold() 阈值化
  10. java+ssh实现级联下拉列表(以行业大类和详细类为例)
  11. 分页存储管理系统中内存有效访问时间的计算
  12. uos统一操作系统命令与linux一样,UOS统一操作系统仍然存在着不少的问题,需用户更新系统来完善...
  13. 【通用】Windows Server 2012突然无法复制文件到阿里云服务器
  14. 腾讯焦虑了,一向温文尔雅的马化腾也发脾气了
  15. 脱离文档流和半脱离文档流(详解)
  16. @kubernetes(k8s) 应用配置管理(ConfigMap、subPath、Secret)
  17. freeman 链码
  18. 十行代码帮你迅速回应大家的祝福,你可以安心抢红包了~
  19. alternate端口什么意思_alternate是什么意思_alternate在线翻译_英语_读音_用法_例句_海词词典...
  20. 时序分析(14) GMM (Generalized Method of Moments) with GARCH

热门文章

  1. 我如何减轻40磅重的重量,如何获得开发人员的工作以及如何计划改变技术中不健康的刻板印象!...
  2. 公司能不能监控到微信聊天?
  3. 光遇服务器维护时间多久,光遇聊天室维护多久
  4. REMOTE_LOGIN_PASSWORDFILE参数和ORAPW密码文件
  5. Android NFC之仿真卡模式
  6. STM32--IWDG和WWDG看门狗
  7. Android studio更新后项目报错Error:android-apt plugin is incompatible with the Android Gradle plugin. Pleas
  8. 不同品牌视频会议系统如何对接
  9. 基于pointnet的3D物体分类和分割检测(复现不出来你直接敲我家门)
  10. 细说linux挂载——mount,及其他……(2)