【线性代数】最小二乘与投影矩阵

        前一篇文章《正交投影》中我们讲述了正交投影,现在我们来从正交投影的角度来看看我们熟悉的最小二乘法。我记得最早知道最小二乘法是在大一上高数课的时候,我们首先回顾一下什么是最小二乘法。

1、最小二乘法

        最近机器学习比较火,机器学习中的许多算法都是对信息进行分类,比如说支持向量机就是根据已知信息来分类,神经网络可以找到输入输出的关系(当然,不能给出具体的数学表达式),这两种算法都能找到输入与输出的关系,分类和回归总是相辅相成的。以后有时间也准备写写关于机器学习方面的算法。 言归正传,最小二乘法的作用也是从一组数据中找到输入与输出之间的关系。

        原理:

        设经验方程是y=F(x),方程中含有一些待定系数an,给出真实值{(xi,yi)|i=1,2,...n},将这些x,y值代入方程然后作差,可以描述误差:yi-F(xi),为了考虑整体的误差,可以取平方和,之所以要平方是考虑到误差可正可负直接相加可以相互抵消,所以记误差(注意误差函数的选择有很多种,我们选用典型的误差函数)为:

E=∑(yi-F(xi))^2

    它是一个多元函数,有an共n个未知量,现在要求的是最小值。所以必然满足对各变量的偏导等于0,于是得到n个方程:

n个方程确定n个未知量为常量是理论上可以解出来的。用这种误差分析的方法进行回归方程的方法就是最小二乘法。

2、最小二乘与投影

    我这个人不喜欢看这些理论,公式推导,而更喜欢用例子来展示算法的思想。例如,在二维坐标系中,有三点,(1,1),(2,2),(3,2),那如何用一条直线来拟合这些点呢?

    首先,我们可以假设直线表达式如下所示:

然后计算误差函数:

在求得误差函数E对系数a,b的偏导,并使之为0:

由上式得到系数a,b的值,并得到拟合直线表达式:

通过最小二乘法得到的曲线如下:

线性代数角度看最小二乘法:


    同样假设拟合直线的表达式设为:

拟合的目的就是使得数据点都满足上述函数表达式,即:

用矩阵形式表示如下:

上面的式子通过高斯消元后,可以发现是无解的!

        我们可以发现等式的左边Aa的值是矩阵A中各个列向量的线性组合,若Aa=b有解的话,则b一定在矩阵A的列空间内。上面的例子中,右边的向量显然不在其列空间中,因此方程无解。最小二乘法的思想就是在矩阵A的列空间中找到一个向量p,使得p与b的误差最小。下面我们就来求b:

Aa=p是肯定有解的,因为p在矩阵A的列空间中。要使得e向量的长度最短,当且仅当p为b在矩阵列空间上的投影!有上一篇《正交投影》中投影矩阵的通式可得:

那么将p代入公式Aa=p可得:

将具体数值代入得:

则可以得到:

b,p,e向量分别可以表示如下:

p,b在图中的表示如下:

原文:http://blog.csdn.net/tengweitw/article/details/41745923

作者:nineheadedbird

时间: 2024-07-28 22:38:21

【线性代数】最小二乘与投影矩阵的相关文章

极线校正-计算机视觉中给定两幅图像以及投影矩阵情况下,如何计算极线影像?

问题描述 计算机视觉中给定两幅图像以及投影矩阵情况下,如何计算极线影像? 已知条件只有两幅影像和对应投影矩阵,我通过查阅资料发现采用stereoRectify函数可以进行极线校正,最后得到极线影像(就是水平对齐,y视差为0),那么在输入函数参数中,我有以下几个问题: 1.cameraMatrix1,R,T是否可以直接用投影矩阵P分解得到?就是对应的K R T么? 2.distCoeffs参数怎么获取得到呢?或者是默认不存在畸变? 3.本人采用的方法是否正确,就是采用stereoRectify此方

dlt-基础矩阵(F矩阵)和投影矩阵把我弄混了

问题描述 基础矩阵(F矩阵)和投影矩阵把我弄混了 我一直看的是根据两组二维坐标求基础矩阵(也就是F矩阵),可是今天看了一个源码,是根据一组二维坐标和一组三维坐标求投影矩阵(好像叫DLT标定法).那到底是应该先求投影矩阵再根据投影矩阵求内参,外参,还是先求基础矩阵,再根据基础矩阵求投影矩阵?

《漫画线性代数》读书笔记 矩阵

<漫画线性代数>读书笔记 矩阵 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 行与列对应位置相乘!!!

opengl 教程(12) 投影矩阵

原帖地址:http://ogldev.atspace.co.uk/www/tutorial12/tutorial12.html        现在我们开始学习如何把三维物体投影到二维平面上,同时保持它的深度.通常的投影包括平行投影和透视投影:平行投影比较简单,就是把顶点垂直的投向投影平面,常用在cad或者机械制图中.另外一种投影是透视投影,这种投影能较好的使二维投影显示立体感,因为人眼观看物体符合透视原理,透视原理也是学美术的人的必修课程.最常见的透视原理表现形式就是三维世界的平行线在透视几何中

[3D基础]投影矩阵的推导(1)

转眼我做游戏行业已经八个月了,游戏行业入门门槛低,所以还算学习得比较轻松,总结了当初自己迷惑的几个知识点,本来想写出来给初学者解惑,无赖我是一个懒散的人,一直拖到现在,终于决心白纸黑字的搬到Blog上来,希望大家喜欢. 投影变换:我觉得这个是3D到2D变换中最让初学者头晕的问题,但又是最重要的. 请看上面这张我用爪子抓出来的图.这个坐标系是DX的左手坐标系,Y向上,X向右,Z向内,几何坐标已经经过了相机坐标系的变换,相机位置为(0,0,0),假设远裁减面距离为f,近裁减面距离为n,近裁减面左边为

D3D的投影矩阵推导[转贴]

原帖地址:http://blog.csdn.net/popy007/article/details/4091967       上一篇文章中我们讨论了透视投影变换的原理,分析了OpenGL所使用的透视投影矩阵的生成方法.正如我们所说,不同的图形API因为左右手坐标系.行向量列向量矩阵以及变换范围等等的不同导致了矩阵的差异,可以有几十个不同的透视投影矩阵,但它们的原理大同小异.这次我们准备讨论一下Direct3D(以下简称D3D)的透视投影矩阵,主要出于以下几个目的: (1) 我们在写图形引擎的时

机器学习--线性代数基础

数学是计算机技术的基础,线性代数是机器学习和深度学习的基础,了解数据知识最好的方法我觉得是理解概念,数学不只是上学时用来考试的,也是工作中必不可少的基础知识,实际上有很多有趣的数学门类在学校里学不到,有很多拓展类的数据能让我们发散思维,但掌握最基本的数学知识是前提,本文就以线性代数的各种词条来做一下预热,不懂的记得百度一下. 请尊重原创,转载请注明来源网站www.shareditor.com以及原始链接地址 矩阵与方程组 还记得n*n方程组是怎么求解的吗?这个术语叫"回代法",即转成三

OpenGL透视投影后的Z值得范围是多少?可否自己设置矩阵改变Z值坐标?

问题描述 OpenGL透视投影后的Z值得范围是多少?可否自己设置矩阵改变Z值坐标? 透视投影后的Z值取值范围是[-1,1]还是[0,1]? 我想自己设置一个投影矩阵,投影之后使原本Z坐标大的变小,小的变大,达到的效果就是在模型前面设置一个视点,而能看到模型背面的信息? 求大神帮助哇~~

矩阵-怎么感觉OpenGL代码逻辑怪异?

问题描述 怎么感觉OpenGL代码逻辑怪异? 5C 为什么glMatrixMode(GL_PROJECTION);或者glMatrixMode(GL_MODELVIEW)//后面都加了个 glLoadIdentity();//我还没有对投影矩阵(视图)进行操作怎么就能复位了呢?glMatrixMode(...);//不是只是申明一下接下来对什么矩阵进行操作么? 解决方案 glLoadIdentity()是将矩阵变为单位阵 一般初始化的时候用 可能过程中也会用glMatrixMode()有好几种参