超定方程组的最小二乘解

\qquad看了很多关于最小二乘解的博客,事实上都没有找到自己想要的证明过程,后来学了矩阵函数时才彻底搞明白了这件事情,所以和大家简单分享如下:
\qquad已知矩阵Am×n(m>n)A_{m×n}(m>n)Am×n(mn)是列满秩的,则超定方程组Ax=BAx=BAx=B的最小二乘解为
x=(ATA)−1ATBx=(A^TA)^{-1}A^TBx=(ATA)1ATB
\qquad需要说明的是根据线性代数的知识,rank(ATA)=rank(AAT)=rank(A)=nrank(A^TA)=rank(AA^T)=rank(A)=nrank(ATA)=rank(AAT)=rank(A)=n,而ATAA^TAATA的维数是n×n,所以ATAA^TAATA一定可逆。事实上MATLAB矩阵求伪逆用的也是这个公式(只不过令B=EmB=E_mB=Em)。
\qquad最小二乘法是让近似解代入的等式右边的B∗B^*BBBB的度量最小,为了和向量的模长兼容,这里取的是矩阵的Frobenius范数(详见这里)因此问题转换为
x∗=argmin⁡x∣∣B∗−B∣∣Fs.t.Ax∗=B∗x^*=arg\min_{x}||B^*-B||_F\\ s.t.Ax^*=B^*x=argxminBBFs.t.Ax=B
为了简便起见,我们仅讨论B是向量的情况(事实上矩阵的情况也可以通过向量化的方法加以解决),即Ax=bAx=bAx=b

该问题也等价为
F(x)=(Ax−b)T(Ax−b)x∗=argmin⁡xF(x)F(x)=(Ax-b)^T(Ax-b)\\ x^*=arg\min_{x}F(x) F(x)=(Axb)T(Axb)x=argxminF(x)
F(x)F(x)F(x)展开如下:
F(x)=(Ax−b)T(Ax−b)=(xTA−bT)(Ax−b)=xT(ATA)x−bTAx−ATbx+bTb=xT(ATA)x−2xT(ATb)+bTb\begin{aligned} F(x)&=(Ax-b)^T(Ax-b)\\ &=(x^TA-b^T)(Ax-b)\\ &=x^T(A^TA)x-b^TAx-A^Tbx+b^Tb\\ &=x^T(A^TA)x-2x^T(A^Tb)+b^Tb \end{aligned} F(x)=(Axb)T(Axb)=(xTAbT)(Axb)=xT(ATA)xbTAxATbx+bTb=xT(ATA)x2xT(ATb)+bTb
需要说明的是bTAxb^TAxbTAx是数,因此它等于本身的转置等于ATbxA^TbxATbx,下面就是求F(x)F(x)F(x)的最小值,由于AATAA^TAAT是半正定的(因为xT(AAT)x=(ATx)T(ATx)≥0x^T(AA^T)x=(A^Tx)^T(A^Tx)\geq0xT(AAT)x=(ATx)T(ATx)0),而因为之前我们证明了AAA列满秩时ATAA^TAATA可逆,因此ATAA^TAATA必定没有零特征值,所以AATAA^TAAT是正定的。这样,F(x)F(x)F(x)的极值点就一定是极小值点(即严格凸优化问题)。下面无非就是求导的问题:
∂F(x)∂x=(ATA+(ATA)T)x−2(ATb)=2(ATA)x−2(ATb)\frac{\partial F(x)}{\partial x}=(A^TA+(A^TA)^T)x-2(A^Tb)\\= 2(A^TA)x-2(A^Tb) xF(x)=(ATA+(ATA)T)x2(ATb)=2(ATA)x2(ATb)
令其等于0,求得
x∗=(ATA)−1ATbx^*=(A^TA)^{-1}A^Tbx=(ATA)1ATb
这就是F(x)F(x)F(x)的极小值点即最小二乘解。
不清楚矩阵函数求导的同志可以看一下如下的公式:
dA(x)B(x)dx=dA(x)xB(x)+A(x)dB(x)dxdxTAxdx=(A+AT)xdCTxdx=dxTCdx=C\begin{aligned} &\frac{dA(x)B(x)}{dx}=\frac{dA(x)}{x}B(x)+A(x)\frac{dB(x)}{dx}\\ &\frac{dx^TAx}{dx}=(A+A^T)x\\ &\frac{dC^Tx}{dx}=\frac{dx^TC}{dx}=C \end{aligned} dxdA(x)B(x)=xdA(x)B(x)+A(x)dxdB(x)dxdxTAx=(A+AT)xdxdCTx=dxdxTC=C

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/544452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试官:int和Integer有什么区别?为什么要有包装类?

作者 | 磊哥来源 | Java面试真题解析(ID:aimianshi666)转载请联系授权(微信ID:GG_Stone)重要说明:本篇为博主《面试题精选-基础篇》系列中的一篇,查看系列面试文章请关注我。Gitee 开…

shell从小做起:将100以内整除3的数列出来

#!/bin/bash for i in $(seq 1 100) do a$[ $i%3 ] #注: 在取余的时候 需要 运算 所以需要加运算符号 $[ ] if [ $a -eq 0 ]; thenecho "$i" fi done转载于:https://blog.51cto.com/286577399/1676501

c# 用空格分割字符串_C#| 左用空格填充字符串

c# 用空格分割字符串PadLeft() method is a library method of the String class. It is used to pad the string from the left side with spaces. PadLeft()方法是String类的库方法。 它用于从左侧用空格填充字符串。 Syntax: 句法: string string.PadLeft(int …

innodb是如何存数据的?yyds

前言如果你使用过mysql数据库,对它的存储引擎:innodb,一定不会感到陌生。众所周知,在mysql5以前,默认的存储引擎是:myslam。但mysql5之后,默认的存储引擎已经变成了:innodb&#xff…

【MATLAB】卡尔曼滤波器的原理及仿真(初学者专用)

文章目录0.引言1.场景预设2.卡尔曼滤波器3.仿真及效果0.引言 \qquad本文参考了Matlab对卡尔曼滤波器的官方教程及帮助文档(Kalman Filter)。官方教程的B站链接如下,在此对分享资源的Up主表示感谢。(如不能正常播放或需要看中文字幕&#xff0…

Go实现查找目录下(包括子目录)替换文件内容

为什么80%的码农都做不了架构师?>>> 【功能】 按指定的目录查找出文件,如果有子目录,子目录也将进行搜索,将其中的文件内容进行替换。 【缺陷】 1. 没有过滤出文本文件 2. 当文件过大时,效率不高 【代码】…

卡诺模板_无关条件的卡诺地图

卡诺模板Till now, the Boolean expressions which have been discussed by us were completely specified, i.e., for each combination of input variable we have specified a minterm by representing them as 1 in the K-Map. But, there may arise a case when for a giv…

面试官:final、finally、finalize 有什么区别?

作者 | 磊哥来源 | Java面试真题解析(ID:aimianshi666)转载请联系授权(微信ID:GG_Stone)重要说明:本篇为博主《面试题精选-基础篇》系列中的一篇,查看系列面试文章请关注我。Gitee 开…

【Matlab】扩展卡尔曼滤波器原理及仿真(初学者入门专用)

文章目录0.引言及友情链接1.场景预设2.扩展卡尔曼滤波器3.仿真及效果0.引言及友情链接 \qquad卡尔曼滤波器(Kalman Filter, KF)是传感器融合(Sensor Fusion)的基础,虽然知乎、CSDN、GitHub等平台已有大量的学习资料&am…

Windows 8.1 升级到专业版

本例将一台 Windows 8.1 平板升级到专业版。升级前:升级的原因,是因为用户发现这台平板不能启用远程桌面管理。查看计算机属性,显示如下:从上面的信息可以看出,目前这台平板安装的不是专业版。具体是什么版本呢&#x…

【MATLAB】求点到多边形的最短距离

文章目录0.引言1.原理2.代码及实用教程0.引言 \qquad点与多边形的关系无非三种——内部、上、外部。本文定义点在多边形内部距离为负,点在多边形边上距离为0,到多边形外部距离为正。 1.原理 计算点到多边形的距离分为3个步骤: 判断点与多边…

绝了,66道并发多线程面试题汇总

👆🏻一个专注于 Java 面试的原创公众号。我花了点时间整理了一些多线程,并发相关的面试题,虽然不是很多,但是偶尔看看还是很有用的哦!话不多说,直接开整!01 什么是线程?线程是操作系…

ruby array_Array.select! Ruby中的示例方法

ruby arrayArray.select! 方法 (Array.select! Method) In this article, we will study about Array.select! Method. You all must be thinking the method must be doing something related to the selection of objects from the Array instance. It is not as …

【Python】mmSegmentation语义分割框架教程(自定义数据集、训练设定、数据增强)

文章目录0.mmSegmentation介绍1.mmSegmentation基本框架1.1.mmSegmentation的model设置1.2.mmSegmentation的dataset设置1.2.1.Dataset Class文件配置1.2.2.Dataset Config文件配置1.2.3.Total Config文件配置2.运行代码 3.展示效果图和预测X.附录X.1.mmSegmentation框架解释 X…

基本shell编程【3】- 常用的工具awk\sed\sort\uniq\od

awk awk是个很好用的东西,大量使用在linux系统分析的结果展示处理上。并且可以使用管道, input | awk | output1.首先要知道形式awk command file 如 awk {print $0} a.txt b.txt (后面可以跟一个或多个文件)2.command学习。c…

面试官:重写 equals 时为什么一定要重写 hashCode?

作者 | 磊哥来源 | Java面试真题解析(ID:aimianshi666)转载请联系授权(微信ID:GG_Stone)重要说明:本篇为博主《面试题精选-基础篇》系列中的一篇,关注我,查看更多面试题。…

rotate array_Array.rotate! Ruby中的示例方法

rotate arrayArray.rotate! 方法 (Array.rotate! Method) In this article, we will study about Array.rotate! method. You all must be thinking the method must be doing something which is related to rotating certain elements. It is not as simple as it…

【python】获取PC机公网IP并发送至邮箱

文章目录0.引言1.获取外网IP2.打开SMTP服务3.python发送邮件4.完整代码0.引言 \qquad之前一直使用Putty连接公司的PC机进行远程办公,苦于外网的IP地址不能固定下来,所以购买了内网穿透服务,免费版还会限速。后来转念一想,如果能定…

List 去重的 6 种方法,这个方法最完美!

作者 | 王磊来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)在日常的业务开发中,偶尔会遇到需要将 List 集合中的重复数据去除掉的场景。这个时候可能有同学会问&#xff1a…

Mongodb -(3) replica set+sharding

分片集搭建---何旭东目录分片集搭建...................................................................................................................... 1生态系统...............................................................................................…