一般线性最小二乘法

转自:http://blog.csdn.net/u013007900/article/details/45933435

最小二乘法:

人们对由某一变量t 或多个变量 t1,,tn  构成的相关变量 y 感兴趣。如弹簧的形变与所用的力相关,一个企业的盈利与其营业额,投资收益和原始资本有关。为了得到这些变量同y之间的关系,便用不相关变量去构建y,使用如下函数模型 

ym=f(t1,,tq;x1,,xp)

q个相关变量或p个附加的相关变量去拟和。 
通常人们将一个可能的、对不相关变量t的构成都无困难的函数类型称作函数模型(如抛物线函数或指数函数)。参数x是为了使所选择的函数模型同观测值y相匹配。(如在测量弹簧形变时,必须将所用的力与弹簧的膨胀系数联系起来)。其目标是合适地选择参数,使函数模型最好的拟合观测值。一般情况下,观测值远多于所选择的参数。 
其次的问题是怎样判断不同拟合的质量。高斯和勒让德的方法是,假设测量误差的平均值为0。令每一个测量误差对应一个变量并与其它测量误差不相关(随机无关)。人们假设,在测量误差中绝对不含系统误差,它们应该是纯偶然误差,围绕真值波动。除此之外,测量误差符合正态分布,这保证了偏差值在最后的结果y上忽略不计。 
确定拟合的标准应该被重视,并小心选择,较大误差的测量值应被赋予较小的权。并建立如下规则:被选择的参数,应该使算出的函数曲线与观测值之差的平方和最小。用函数表示为: 
minx⃗ i=1n(ymyi)2

用欧几里得度量表达为: 
minx⃗ y⃗ m(x⃗ )y⃗ 2 

最小化问题的精度,依赖于所选择的函数模型。

线性函数模型

典型的一类函数模型是线性函数模型。最简单的线性式是 y=x0+x1t ,写成行列式,为 

minx0,x111t1tn(x0x1)y1yn2=minxAxb2

直接给出该式的参数解: 
x1=ni=1tiyint¯y¯ni=1t2in(t¯)2x0=y¯x1t¯

其中 t¯=1nni=1ti ,为 t 值的算术平均值。也可解得如下形式: 
x1=ni=1(tit¯)(yiy¯)ni=1(tit¯)2

一般线性情况

若含有更多不相关模型变量 t1,...,tq ,可如组成线性函数的形式 
y(t1,,tq;x0,x1,,xq)=x0+x1t1++xqtq  
即线性方程组 

x0+x1t11++xjt1j++xqt1q=y1x0+x1t21++xjt2j++xqt2q=y2x0+x1ti1++xjtij++xqtiq=yix0+x1tn1++xjtnj++xqtnq=yn

通常人们将tij记作数据矩阵 A,参数xj记做参数矢量x,观测值yi记作b,则线性方程组又可写成: 
1111t11t21ti1tn1t1jt2jtijtnjt1qt2qtiqtnqx0x1x2xjxq=y1y2yiyn

即  Ax=b  
上述方程运用最小二乘法导出为线性平差计算的形式为: 
minxAxb2

最小二乘法的解

定理:线性方程组 Ax=b 的LS问题一定有解,且求解LS问题与求解线性方程组的法方程组等价 

ATAx=ATb

证明: 
rank(A)=rank(ATA)rank(ATA)rank([ATA,ATb])=rank(aT[A,b])rank(AT)=rank(A)rank(ATA)=rank([ATA,ATb])  
从而方程组一定有解 

f(x)=bAx2bAx2=minxRnbAx2

gradf(x)=(f(x)x1,f(x)x2,,f(x)xn)T=02(ATAxATb)=0

说明LS解必定是法方程组的解 
ATAx=ATbAT(Axb)=0AxbR(A)={yRm|y=Ax,xRn}bAx2=(bAx)+A(xx)2=bAx2+A(xx)2bAx2

说明法方程组的解必定是LS解

推论:当秩 (Am×n)=n 时, ATA 为对称正定矩阵,最小二乘法问题有唯一解 

xLS=(ATA)1ATb

其中 (ATA)1AT 称为A的伪逆矩阵,标记为 A

证明: 
先将b拆成A的值域及其正交补两部分 
b=b1+b2  
b1=AAbR(A)  
b2=(IAA)bR(A)  
所以 Axb1R(A) ,可得 

Axb2=Axb1+(b2)2=Axb12+b22

故当且仅当 x Ax=b1=AAb 解时, x 即为最小二乘解,即 x=Ab 。 
又因为 
N(A)=N(AA)=R(IAA)={(IAA)h:hCn}  
Ax=AAb 的通解为 
x=Ab+(IAA)h:hCn  
因为 
Ab2<Ab2+(IAA)h2=Ab+(IAA)h2,(IAA)h0

所以 Ab 又是二范数极小的最小二乘解。

例题:

求解超定方程组的最小二乘问题: 

2x1+4x2=13x15x2=3x1+2x2=62x1x2=7A=23124521,b=1367

系数矩阵A是列满秩的,古可以求最小二乘法的解! 

这里写图片描述

最小二乘法解为: 
这里写图片描述

最小平方残差: 
这里写图片描述

本例是用法方程组来求解最小二乘法问题的解!但是这样作也可能会引出好多问题!我们提倡用QR分解来求解。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
线性最小二乘法是一种常用的数据拟合方法,在MATLAB中也有相应的函数可以实现。引用中提到,线性最小二乘法在工程中应用最广泛的是直线拟合,即通过给定数据点,找到一条最佳拟合直线来描述数据的趋势。在MATLAB中,可以使用polyfit函数进行直线拟合,该函数可以根据给定的数据点以及拟合的次数,返回拟合得到的多项式的系数。 除了polyfit函数,MATLAB还提供了其他函数用于线性最小二乘法的拟合。引用中提到,对于非线性曲线的拟合,例如指数曲线,需要进行变量代换,化为对线性函数的拟合。可以使用lsqcurvefit函数进行非线性最小二乘法的拟合,该函数可以通过给定的模型函数和初始参数值来拟合数据。 另外,引用中提到了两种观点来计算最小二乘法拟合直线,即代数计算和伪逆方法计算。在MATLAB中,可以使用polyfit函数和lsqcurvefit函数来实现这两种方法。 总结来说,MATLAB中提供了polyfit函数和lsqcurvefit函数来实现线性最小二乘法的拟合,可以根据具体的需求选择适合的函数进行数据拟合。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [最小二乘法线性拟合介绍以及matlab实现](https://blog.csdn.net/subtitle_/article/details/122756859)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [线性最小二乘法(附MATLAB代码)](https://blog.csdn.net/qq_46078451/article/details/113733900)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值