投影矩阵与最小二乘法_最小二乘法和矩阵求逆

投影矩阵与最小二乘法_最小二乘法和矩阵求逆投影矩阵与最小二乘二者有什么必然的联系么,当我开始写这篇文章的时候我也这样问自己。如果Strang教授没有教授这堂课亦或者讲的这堂课没有被放到网上被别人所下载观看,那么…好在一切都是那么的幸运先说说投影吧,这个想必大家都知道,高中的知识了。一个向量(b)在另一个向量(a)上的投影:实际上就是寻找在a上离b最近的点。如果我们把p看作是a的估计值,那么我们定义e

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

参考教材:Introduction to linear algebra/Gilbert Strang..—4th ed..—Wellesley, MA :Wellesley-Cambridge Press,c2009.

投影矩阵与最小二乘二者有什么必然的联系么,当我开始写这篇文章的时候我也这样问自己。如果Strang教授没有教授这堂课亦或者讲的这堂课没有被放到网上被别人所下载观看,那么…

好在一切都是那么的幸运微笑

先说说投影吧,这个想必大家都知道,高中的知识了。一个向量(b)在另一个向量(a)上的投影:

投影矩阵与最小二乘法_最小二乘法和矩阵求逆

实际上就是寻找在a上离b最近的点。如果我们把p看作是a的估计值,那么我们定义e = b – p,称e为误差(error)。

现在,我们的任务是找到这样的p,我们可以规定p = xa(x是某个数),那么e = b – xa,因为e与p也就是a垂直,所以有aT(b – xa) = 0,展开化简得到:

投影矩阵与最小二乘法_最小二乘法和矩阵求逆

将x代入到p中,得到:

投影矩阵与最小二乘法_最小二乘法和矩阵求逆

我们发现,如果改变b,那么p相对应改变,然而改变a,p无变化。

有了上面的背景知识,我们可以正式进入主题了,投影矩阵(projection matrix):

p = Pb,

显然这里有:

投影矩阵与最小二乘法_最小二乘法和矩阵求逆

这里我们最需要关注的是投影矩阵的两个性质:

1)P’ = P;

2)P ^ 2 = P;

对于第一个,很容易理解,因为P本身就是个对称阵。第二个,直观的理解就是投影到a上后再投影一次,显然投影并没有改变,也就是二次投影还是其本身。

这个投影到底有什么用呢,从线性代数的角度来说,Ax = b并不一定总有解,这在实际情况中会经常遇到(m > n)。所以我们就把b投影到向量p上,求解Ax = p。

接下来,我们可以考虑更高维度的投影,三维空间的投影是怎么样的呢,我们可以想象一个三维空间内的向量在该空间内的一个平面上的投影:

投影矩阵与最小二乘法_最小二乘法和矩阵求逆

我们假设这个平面的基(basis)是a1, a2.那么矩阵A = [a1 a2]的列空间就是该平面。假设一个不在该平面上的向量b在该平面上的投影是p,那么我们就有下面这个表达式 p = x1a1 + x2a2 = Ax, 我们的任务就是找到这样的x。这里有一个关键的地方:e = b – Ax与该平面垂直,所以a1′(b – Ax) = 0且a2′ (b- Ax) = 0.用矩阵的形式表达就是:

A'(b – Ax) = 0.

从上面这个式子我们可以得到e(e = b – Ax)等于N(A’)。回忆之前的四个空间的关系:假设矩阵(m * n)的秩为r,行空间(维度r)与零空间(维度n – r)互相垂直,列空间(维度r)与左零空间(维度为m – r)互相垂直。所以,我们可以得到e垂直于C(A)。

我们把上边式子展开,得到A’Ax = A’b => x = (A’A)-1A’b, p = Ax = A(A’A)-1A’。类似在二维情况下,在三维情况下我们依然有:

1)p’ = p;

2)p ^ 2 = p。

好了,在此我们先暂别“投影”。下面,开始说一下最小二乘的故事吧:

在实际应用中,线性回归是经常用到的,我们可以在一张散列点图中作一条直线(暂时用直线)来近似表述这些散列点的关系。比如:

给定二维平面的三个点:(1, 1), (2, 2), (3, 2)。我们想寻求一条直线(y = C + Dt)来逼近这些点。假设这些点都在该直线上,我们有:

C + D = 1

C + 2D = 2

C + 3D = 2.写成矩阵的形式如下:

投影矩阵与最小二乘法_最小二乘法和矩阵求逆

实际上,这条直线是不存在的。从线性代数的角度来看,就是A的列向量的线性组合无法充满整个列空间,而b恰恰就是一个例外。所以,我们就借助了投影矩阵,我们这么干得意

A’Ax = A’b。

—————————————————————————————————————————————————–

在上回,我们得到了一个十分重要的东西,投影矩阵:

p = A(A’A)-1A’

我们依然以在(一)中的那张投影图为例,b在平面上的投影是p,如果b垂直于C(A),那么b就在A的左零空间里,即Pb = 0。如果b本身就在A的列空间里,那么有Ax = b和Pb = b。我们简要推导下上面的过程:

1)对于b垂直于C(A):

因为N(A’)垂直于C(A),所以b在N(A’),Pb = A(A’A)-1A’b = 0(红色的部分为0)

2)对于b在C(A)里:

b = Ax, Pb = A(A’A)-1A’Ax = Ax = b

然而,我们要解决的是更一般的情况:b 不属于上述任何两种情况之一,也就是b在C(A)(记为p)里和N(A’)(记为e)的投影不是它本身,我们有:

p + e = b。而通过之前介绍的关于投影的知识,我们可以得到p = Pb,所以有:

Pb + e = bI,e = (I – P)b。

我们再次回到(一)的结尾的那个例子:

投影矩阵与最小二乘法_最小二乘法和矩阵求逆

写成矩阵形式Ax = b: *

投影矩阵与最小二乘法_最小二乘法和矩阵求逆

我们可以从两方面来看待*式的意义

1)我们寻求这样一条直线,这三个点这条直线的垂直距离分别为e1, e2, e3.我们要寻求的直线使得e1, e2, e3的平方和最小,这就是线性回归问题;

2)我们把b看成是R3空间里的一个向量,它在A的列空间的投影是p,在N(A’)的投影是e,我们现在的任务就是寻求一个x hat和p,使得满足:

投影矩阵与最小二乘法_最小二乘法和矩阵求逆

这就是我们在(一)中所说的投影矩阵的问题,它擅长于处理Ax = b无解的情况

将A展开代入,得到正则方程:

投影矩阵与最小二乘法_最小二乘法和矩阵求逆

解这个方程是很简单的,最后我们得到直线的方程:

投影矩阵与最小二乘法_最小二乘法和矩阵求逆

我们把给定值,拟合值,误差统计一下,列出下面这个表:

投影矩阵与最小二乘法_最小二乘法和矩阵求逆

我们注意到这里p与e垂直,实际上e垂直于C(A)。

这是很显然的,因为在这一部分的开头我们就作了解释:e在N(A’)里,由于N(A’)垂直于C(A),所以e垂直于C(A)。

最小二乘讲到这里似乎已经说完了,但是有一个问题,那就是我们所利用的投影矩阵p = A(A’A)-1A’这里我们假定A’A是可逆的,这种假定合理吗?Strang在最后给我们作了解答:

If A has independent columns, then A’A is invertible .

他是这样证明这个问题的:并没有直接证明,而是通过证明若A’Ax = 0, 则x = 0来间接证明A’A可逆。

好了,我们现有假设有A’Ax = 0,并且我们使用了一个小技巧(TRICK):

x’A’Ax = x’0

(Ax)’Ax = 0

Ax = 0,由于A的列向量相互独立,因为由Ax = 0我们得到x只能是0,这样就把这个问题解决了。

当然,这里还要提到一个关系:标准正交(orthonormal)。如果一个矩阵的列向量是标准正交向量组,那么A的列向量一定线性无关。

写到这里,我想有必要总结一下,为什么最小二乘和投影矩阵要扯到一起,它们有什么联系:

最小二乘是用于数据拟合的一个很霸气的方法,这个拟合的过程我们称之为线性回归。如果数据点不存在离群点(outliers),那么该方法总是会显示其简单粗暴的一面。我们可以把最小二乘的过程用矩阵的形式描述出来,然而,精妙之处就在于,这与我们的投影矩阵的故事不谋而合,所以,我们又可以借助于投影矩阵的公式,也就是

A’Ax = A’b来加以解决。

——————————————————————————————————————————–

其实这篇文章作为投影矩阵与最小二乘的完结篇,已经不完全是投影矩阵与最小二乘的关系了,更多的是在投影矩阵的基础上发展出来的一些理论微笑

先说一下标准正交矩阵的概念:

对于一个矩阵A,如果A的列向量是标准正交的,那么A’A = I(很容易证明)。

如果A的列向量既是标准正交的,又是一个方阵(A is a square orthonormal matrix),那么A就称作正交矩阵。由之前A’A = I我们就得到了A’ = A-1

如果矩阵Q的列向量是标准正交的,那么投影到矩阵Q的投影矩阵:

P = Q(Q’Q)-1Q’。

如果Q的列向量标准正交,那么有Q’Q = I, P = QQ’,如果Q又是个方阵,那么P = I。

这里我们要用到(二)的末尾我说的那句话来解释上面这些变形的直观的意义:

如果一个矩阵的列向量是标准正交向量组,那么A的列向量一定线性无关。

如果矩阵A是方阵,且列向量是标准正交的,那么A的列向量一定线性无关,那么列空间就是整个空间了。那么我如果把向量b投影到A的列空间里,由于b就在A的列空间里,那么投影还是b本身,根据b = Pb,所以投影矩阵P就是单位阵I了。

由标准正交的概念我们可以得到很多有用的东西,就拿我们的投影矩阵来说吧:

A’Ax = A’b,如果A的列向量是标准正交的,那么A’A = I => x = A’b。

既然标准正交有这么大的好处,所以我们的前辈们就不约而同地一起在标准正交上做文章。但是,并不是所有的矩阵都是标准正交的。咱们有句老话:牛不吃草不能强按头。但是,两位牛逼哄哄的人物–Gram和Schmidt,针对非标准正交的矩阵像治疗具有偏食挑食症的儿童一样,找到了解决的办法。过程描述如下:

给定两个独立的向量a,b,我们将其转换成两个正交的向量A, B,并且a和b生成的空间与A和B生成的空间是同一个空间,然后我们再把A和B单位化即可,也就是

给定独立向量组a, b => 正交向量A, B => 标准正交向量q1, a2。

step1: A = a;

step2: B = b – p = b – A’bA / (A’A)(这是很显然的,因为这里的B就相当于前两部分说的e,e是与a相交的)

step3: q1 = A / (|| A ||), q2 = B / (|| B ||)。

如果给定的不是两个独立的向量,而是三个或者更多呢,这里,仅以三个为例,更多的依此类推:

A和B的计算过程依然如上,C = c – A’c A/ (A’A) – B’cB / (B’B)。A与C,B与C真的正交了吗,YES! 不管是用公式计算,还是直观画图理解,都是可以证明的。

最后一个问题了:

QR分解,我们可以把A写成列向量的形式A = [a1 a2]。根据前面的Gram-Schmidt正交化,我们可以得到对应的Q = [q1 q2],并且有q1’q1 = 1, q1’q2 = 0.所以我们可以把A写成如下的形式:

投影矩阵与最小二乘法_最小二乘法和矩阵求逆

显然这是成立的,因为q1’q1 = 1,q1’q2 = 0, a1’q2 = 0,同时根据前三个关系式,我们也很容易得到R是一个上三角矩阵(upper triangular matrix)。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/186033.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python – 0b、0o、0x

    Python – 0b、0o、0xa=0b010b=0o010c=0x010print(type(a),a)print(type(b),b)print(type(c),c)#————-print(0b010&0b111)print(0b001|0b010)print(0b010^0b100)print(~0b001)#原码->补码->求原码(原码的值+符…

    2022年6月24日
    29
  • Hello, Webpack!

    Hello, Webpack!

    2022年3月13日
    42
  • 浅谈SQL游标

    浅谈SQL游标
    游标(Cursor)是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次以行或者多行前进或向后浏览数据的能力。我们可以把游标当作一个指针,它可以指定结果中的任何位置,然后允许用户对指定位置的数据进行处理。游标允许你选择一组数据,通过翻阅这组数据记录——通常被称为数据集,检查每一个游标所在的特定的行。你可以将游标和局部变量组合在一起对每一个记录进行检查,当游标移动到下一个记录时,来执行一些外部操作。游标的另一个常见的用法是:保存查询结果以备以后使用。一个游标结果集是通过执

    2022年7月12日
    27
  • 搭建spring cloud工程_阿里云开发者成长计划

    搭建spring cloud工程_阿里云开发者成长计划这里写目录标题一:环境搭建二:项目搭建一:环境搭建本次项目在Linux系统下运行,虚拟机为VMware,操作系统为Centos8,需要的工具有Docker,MySql5.7,Redis,Git。MySql5.7:安装好docker’后,pull进来MySql5.7,配置好端口映射、目录挂载等,再创建my.cnf文件来配置MySql5.7。docker下mysql配置:my.cnf【client】default-character-set=utf8【mysql】default-charac

    2022年7月28日
    12
  • 用matlab求逆矩阵的方式_matlab矩阵转置命令

    用matlab求逆矩阵的方式_matlab矩阵转置命令如何用MATLAB求逆矩阵以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!如何用MATLAB求逆矩阵如果英文好呢,自己看目录不好还是先看中文的教材,对matlab的框架和功能有了一定的了解后,自己也就看的懂帮助里面的内容了,以后不懂再自己查帮助求逆矩阵一般有2种方法:1、伴随矩阵法。A的逆矩阵=A的伴随矩阵/A的行列式。…

    2022年8月21日
    12
  • 哈希表、哈希冲突

    哈希表、哈希冲突哈希表1.哈希表是一种以键值key存储数据value的结构,以key作为标识值存储value值;只要输入待查找的key,即可获取其对应的value值。当按照键值查询元素时,使用相同的hash函数将key转换为数组下标,从数组中按照下标对应的位置获取数据。它实际上是数组的一种扩展,数组+链表+红黑树。2.哈希表的设计哈希函数的设计首先不能过于复杂,复杂的哈希函数会间接的影响hash表的性能;其次要求哈希值应该尽可能随机且均匀分布,避免或者减少哈希冲突的数量,使每个桶中存储的数据比较平均。常规的设计方法

    2022年6月21日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号