目录
[隐藏]

最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。

 

最小二乘法(least square)历史简介

1801年,意大利天文学家朱赛普·皮亚齐发现了第一颗小行星谷神星。经过40天的跟踪观测后,由于谷神星运行至太阳背后,使得皮亚齐失去了谷神星的位置。随后全世界的科学家利用皮亚齐的观测数据开始寻找谷神星,但是根据大多数人计算的结果来寻找谷神星都没有结果。时年24岁的高斯也计算了谷神星的轨道。奥地利天文学家海因里希·奥尔伯斯根据高斯计算出来的轨道重新发现了谷神星。 高斯使用的最小二乘法的方法发表于1809年他的著作《天体运动论》中。 法国科学家勒让德于1806年独立发现“最小二乘法”,但因不为世人所知而默默无闻。 勒让德曾与高斯为谁最早创立最小二乘法原理发生争执。 1829年,高斯提供了最小二乘法的优化效果强于其他方法的证明,因此被称为高斯-莫卡夫定理。(来自于wikipedia)

最小二乘法原理

在我们研究两个变量(x, y)之间的相互关系时,通常可以得到一系列成对的数据(x1, y1、x2, y2... xm , ym);将这些数据描绘在x -y直角坐标系中,若发现这些点在一条直线附近,可以令这条直线方程如(式1-1)。

Y计= a0 + a1 X (式1-1)

其中:a0、a1 是任意实数

为建立这直线方程就要确定a0和a1,应用《最小二乘法原理》,将实测值Yi与利用(式1-1)计算值(Y计=a0+a1X)的离差(Yi-Y计)的平方和〔∑(Yi - Y计)2〕最小为“优化判据”。

令: φ = ∑(Yi - Y计)2 (式1-2)

把(式1-1)代入(式1-2)中得:

φ = ∑(Yi - a0 - a1 Xi)2 (式1-3)

当∑(Yi-Y计)平方最小时,可用函数 φ 对a0、a1求偏导数,令这两个偏导数等于零。

(式1-4)

(式1-5)

亦即:

m a0 + (∑Xi ) a1 = ∑Yi (式1-6)

(∑Xi ) a0 + (∑Xi2 ) a1 = ∑(Xi, Yi) (式1-7)

得到的两个关于a0、 a1为未知数的两个方程组,解这两个方程组得出:

a0 = (∑Yi) / m - a1(∑Xi) / m (式1-8)

a1 = [n∑Xi Yi - (∑Xi ∑Yi)] / [n∑Xi2 - (∑Xi)2 )] (式1-9)

这时把a0、a1代入(式1-1)中, 此时的(式1-1)就是我们回归的元线性方程即:数学模型。

在回归过程中,回归的关联式是不可能全部通过每个回归数据点(x1, y1、 x2, y2...xm,ym),为了判断关联式的好坏,可借助相关系数“R”,统计量“F”,剩余标准偏差“S”进行判断;“R”越趋近于 1 越好;“F”的绝对值越大越好;“S”越趋近于 0 越好。

R = [∑XiYi - m (∑Xi / m)(∑Yi / m)]/ SQR{[∑Xi2 - m (∑Xi / m)2][∑Yi2 - m (∑Yi / m)2]} (式1-10) *

在(式1-1)中,m为样本容量,即实验次数;Xi、Yi分别任意一组实验X、Y的数值。

最小二乘法公式

最小二乘法公式

∑(X--X平)(Y--Y平)=∑(XY--X平Y--XY平+X平Y平)=∑XY--X平∑Y--Y平∑X+nX平Y平=∑XY--nX平Y平--nX平Y平+nX平Y平=∑XY--nX平Y平

∑(X --X平)^2=∑(X^2--2XX平+nX平^2)=∑X^2--2nX平^2+nX平^2=∑X^2--nX平^2

Y=kX+b: k=((XY)平--X平*Y平)/(X^2--(X平)^2 ;b=Y平--kX平

X平=1/n∑Xi ;(XY)平=1/n∑XiYi

最小二乘法拟合

对给定数据点{(Xi,Yi)}(i=0,1,…,m),在取定的函数类Φ 中,求p(x)∈Φ ,使误差的平方和E^2最小,E^2=∑[p(Xi)-Yi]^2。从几何意义上讲,就是寻求与给定点 {(Xi,Yi)}(i=0,1,…,m)的距离平方和为最小的曲线y=p(x)。函数p(x)称为拟合函数或最小二乘解,求拟合函数p(x)的方法称为曲线拟合的最小二乘法。

最小二乘法的矩阵形式

Ax=b, 其中A为nxk的矩阵,x为kx1的列向量,b为nx1的列向量,n>k。这个方程系统称为Over Determined System,如果n<k,这个系统就是Under Determined System。

正常来看,这个方程是没有解的,但在数值计算领域,我们通常是计算 min ||Ax-b||,解出其中的x。比较直观的做法是求解A'Ax=A'b,但通常比较低效。其中一种常见的解法是对A进行QR分解(A=QR),其中Q是 nxk正交矩阵(Orthonormal Matrix),R是kxk上三角矩阵(Upper Triangular Matrix),然后min ||Ax-b|| = min ||QRx-b|| = min ||Rx-Q'b||,用Matlab命令x=R$$Q'*b)可解得x。

最小二乘法的Matlab实现

① 一次函数 使用polyfit(x,y,1)

②多项式函数 使用 polyfit(x,y,n),n为次数

拟合曲线

x=[0.5,1.0,1.5,2.0,2.5,3.0],

y=[1.75,2.45,3.81,4.80,7.00,8.60]。

解:MATLAB程序如下:

x=[0.5,1.0,1.5,2.0,2.5,3.0];

y=[1.75,2.45,3.81,4.80,7.00,8.60];

p=polyfit(x,y,2)

x1=0.5:0.05:3.0;

y1=polyval(p,x1);

plot(x,y,'*r',x1,y1,'-b')

计算结果为:

p =0.5614 0.8287 1.1560

即所得多项式为y=0.5614x^2+0.08287x+1.15560

③非线性函数 使用 lsqcurvefit(fun,x0,x,y)

最小二乘法 - 缺陷

最小二乘是一种最基本的辨识方法,但它具有两方面的缺陷:一是当模型噪声是有色噪声时,最小二乘估计不是无偏、一致估计;二是随着数据的增长,将出现所谓的“数据饱和”现象。针对这两个问题,出现了相应的辨识算法,如遗忘因子法、限定记忆法、偏差补偿法、增广最小二乘、广义最小二乘、辅助变量法、二步法及多级最小二乘法等。