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

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

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在图中的表示如下:

时间: 2024-10-14 16:20:13

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

(数学概念)矩阵的逆、伪逆、左右逆,最小二乘,投影矩阵

主要内容: 矩阵的逆.伪逆.左右逆 矩阵的左逆与最小二乘 左右逆与投影矩阵 一.矩阵的逆.伪逆.左右逆 1.矩阵的逆 定义: 设A是数域上的一个n阶方阵,若在相同数域上存在另一个n阶矩阵B,使得: AB=BA=I. 则我们称B是A的逆矩阵,而A则被称为可逆矩阵. 可逆条件: A是可逆矩阵的充分必要条件是,即可逆矩阵就是非奇异矩阵.(当 时,A称为奇异矩阵) 性质: 矩阵A可逆的充要条件是A的行列式不等于0. 可逆矩阵一定是方阵. 如果矩阵A是可逆的,A的逆矩阵是唯一的. 可逆矩阵也被称为非奇异矩

(数学)最小二乘的几何意义及投影矩阵

主要内容: 什么是最小二乘 最小二乘的几何意义 正交投影矩阵 什么是最小二乘? 假设我们手上有n组成对的数据,{(xi,yi):i=1…n},为了探究y变量与x变量的关系,我们希望用一个多项式来匹配它,可是多项式中的系数怎么确定呢?拿来拼凑肯定是不行的,最小二乘法告诉我们,这个多项式的系数应该让每个点的误差的平方之和最小. (百度百科)最小二乘法(又称最小平方法)是一种数学优化技术.它通过最小化误差的平方和寻找数据的最佳函数匹配.利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际

漫步线性代数十六——投影和最小二乘

目前为止,我们已经知道Ax=b要么有解要么无解,如果b 不在列空间C(A) 里,那么这个系统就是矛盾的,高斯消元法就会失败.当有几个方程和一个未知量时失败完全可以确定: 2x3x4x===b1b2b3 当b1,b2,b3的比率是2:3:4时,上面的方程组才可解,也就是说只有b 和列a=(2,3,4)在一条直线上时x才会存在. 尽管他们无解,可是他们在实际中经常出现,他们必须有解!一种可能是用系统的一部分来确定x,其余部分忽略:如果所有的m个方程来源一样,这种方法就不合理.我们放弃这种一些方程没误

【线性代数】如何寻找一个投影矩阵

引言 想一下,在什么情况下可能需要将一个向量往一个子空间投影.在MIT的线代课程中,Gilbert教授给出了一种场景:即我们想要求解\(Ax=b\),但是\(b\)不在\(A\)的列空间中,此时我们希望在\(A\)的列空间中找一个离\(\overrightarrow{b}\)最近的向量\(\overrightarrow{f}\),求解\(A\hat{x}=f\),借由\(\hat{x}\)给出\(x\)的近似解. 矩阵乘法可以表示向量的线性变换,所以本篇笔记的主要内容是记录找到一个投影矩阵\(P

投影矩阵与正交化向量的实现

因为我这里的帖子基本上是写给自己回忆的,所以原理公式什么的就没写出来了,想了解的同学可以去看网易公开课的线性代数关于投影和正交矩阵那几集 我这里给出来matlab代码,大家如果有题目要做,直接将相应的矩阵输入进去就行 function [ Xnew , Projection_Matrix] = ProJectin(Xold, Xbasis) %Xold是要投影的列向量 %Xbasis是投影空间的一组基 %Projection_Matrix是求得的投影矩阵 %Xnew 是求得的正交化向量,也就是与

【脚下生根】之深度探索安卓OpenGL投影矩阵

世界变化真快,前段时间windows开发技术热还在如火如荼,web技术就开始来势汹汹,正当web呈现欣欣向荣之际,安卓小机器人,咬过一口的苹果,winPhone开发平台又如闪电般划破了混沌的web世界. 相信很多开发者都在疑问,为什么世界不是围着我转?而是我在围着世界转.我的答案是,少林寺的和尚学打架,首先要学会站桩.要练功,先占三年桩.少林寺的和尚打架从来不围着别人转,而是别人围着他转. 世界的原理都是相通的,开发者一样,要做到脚下生根. 最近几天在看OpenGL的投影矩阵,自己也实现了一个投

OpenGL投影矩阵

概述 透视投影 正交投影 概述 计算机显示器是一个2D平面.OpenGL渲染的3D场景必须以2D图像方式投影到计算机屏幕上.GL_PROJECTION矩阵用于该投影变换.首先,它将所有定点数据从观察坐标转换到裁减坐标.接着,这些裁减坐标通过除以w分量的方式转换到归一化设备坐标(NDC). 因此,我们需要记住一点:裁减变换(视锥剔除)与NDC变换都保存在GL_PROJECTION矩阵中.下述章节描述如何从6个限定参数(左.右.下.上.近平面.远平面)构建投影矩阵. 注意,视锥剔除(裁减)在裁减坐标

OpenGL中两种计算投影矩阵的函数

OpenGL无意间同时看到两种创建投影矩阵的写法,可以说它们完成的是同样的功能,但写法完全不同,可以观摩一下什么叫做异曲同工之妙... 第一种: gltMakeShadowMatrix函数是重点 1 // Gets the three coefficients of a plane equation given three points on the plane. 2 void gltGetPlaneEquation(GLTVector3 vPoint1, GLTVector3 vPoint2,

Android OpenGL ES(六)----进入三维在代码中创建投影矩阵和旋转矩阵

我们现在准备好在代码中添加透视投影了.Android的Matrix类为它准备了两个方法------frustumM()和perspectiveM().不幸的是,frustumM()的个缺陷,它会影响某些类型的投影,而perspectiveM()只是从Android的ICS版本开始才被引入,在早期的Android版本里并没有这个方法.我们可以简单地支持ICS及其以上的版本,但是这样会丢掉很大一部分市场,一些用户依然运行早期的Android版本. 作为替代,我们可以创建我们自己的方法来实现投影矩阵.