最小二乘法(转)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最小二乘法(转)相关的知识,希望对你有一定的参考价值。

最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。
中文名
最小二乘法
外文名
Least squares
别    称
最小平方法[1] 
提出者
马里·勒让德
提出时间
1806年
应用学科
数学
适用领域范围
代数
适用领域范围
曲线拟合

历史编辑

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

线性最小二乘的基本公式编辑

考虑超定方程组(超定指未知数少于方程个数):
技术分享
其中m代表有m个等式,n代表有 n 个未知数
 技术分享 
,m>n ;将其进行向量化后为:
技术分享

  
 技术分享 
, 
技术分享 
, 
技术分享
显然该方程组一般而言没有解,所以为了选取最合适的
 技术分享 
让该等式"尽量成立",引入残差平方和函数S
技术分享
(在统计学中,残差平方和函数可以看成n倍的均方误差MSE)
 技术分享 
时,
 技术分享 
取最小值,记作:
技术分享
通过对
 技术分享 
进行微分[2]  求最值,可以得到:
技术分享
如果矩阵
 技术分享 
非奇异则
 技术分享 
有唯一解[3]  :
技术分享

原理编辑

在我们研究两个变量(x,y)之间的相互关系时,通常可以得到一系列成对的数据(x1,y1.x2,y2... xm,ym);将这些数据描绘在x -y直角坐标系中,若发现这些点在一条直线附近,可以令这条直线方程如(式1-1)。
 技术分享 
(式1-1)
其中:a0、a1 是任意实数
为建立这直线方程就要确定a0和a1,应用《最小二乘法原理》,将实测值Yi与利用计算值Yj(Yj=a0+a1X)(式1-1)的离差(Yi-Yj)的平方和
 技术分享 
最小为“优化判据”。
令:φ =
 技术分享 
(式1-2)
把(式1-1)代入(式1-2)中得:
φ =
 技术分享 
(式1-3)
 技术分享 
最小时,可用函数 φ 对a0、a1求偏导数,令这两个偏导数等于零。
∑2(a0 + a1*Xi - Yi)=0(式1-4)
∑2Xi(a0 +a1*Xi - Yi)=0(式1-5)
亦即:
na0 + (∑Xi ) a1 = ∑Yi (式1-6)
(∑Xi ) a0 + (∑Xi^2 ) a1 = ∑(Xi*Yi) (式1-7)
得到的两个关于a0、 a1为未知数的两个方程组,解这两个方程组得出:
a0 = (∑Yi) / n - a1(∑Xi) / n (式1-8)
a1 = [n∑(Xi Yi) - (∑Xi ∑Yi)] / (n∑Xi^2 -∑Xi∑Xi)(式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-10)中,m为样本容量,即实验次数;Xi、Yi分别为任意一组实验数据X、Y的数值。[1] 

公式编辑

技术分享

拟合编辑

对给定数据点集合
 技术分享 
,在取定的函数类
 技术分享 
中,求
 技术分享 
,使误差的平方和
 技术分享 
最小,
 技术分享 
。从几何意义上讲,就是寻求与给定点集
 技术分享 
的距离平方和为最小的曲线y=p(x)。函数p(x)称为拟合函数或最小二乘解,求拟合函数p(x)的方法称为曲线拟合的最小二乘法。[1] 
最小二乘法的矩阵形式
最小二乘法的矩阵形式为:
技术分享
其中
 技术分享 
 技术分享 
的矩阵,
 技术分享 
 技术分享 
的列向量,
 技术分享 
 技术分享 
的列向量。如果
 技术分享 
(方程的个数小于未知量的个数),这个方程系统称为矛盾方程组(Over Determined System),如果
 技术分享 
(方程的个数小于未知量的个数),这个系统就是Under Determined System。
正常来看,这个方程是没有解的,但在数值计算领域,我们通常是计算
 技术分享 
,解出其中的
 技术分享 
。比较直观的做法是求解
 技术分享 
,但通常比较低效。其中一种常见的解法是对
 技术分享 
进行QR分解(
 技术分享 
),其中
 技术分享 
 技术分享 
正交矩阵(Orthonormal Matrix),
 技术分享 
 技术分享 
三角矩阵(Upper Triangular Matrix),则有
技术分享
用MATLAB命令
1
x=R\(Q\b)
可解得
 技术分享 
。[1] 
最小二乘法的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.5: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.8287x+1.15560
lsqcurvefit(fun,x0,x,y)[1] 
a=nlinfit(x,y,fun,b0)
最小二乘法在交通运输学中的运用
交通发生预测的目的是建立分区产生的交通量与分区土地利用、社会经济特征等变量之间的定量关系,推算规划年各分区所产生的交通量。因为一次出行有两个端点,所以我们要分别分析一个区生成的交通和吸引的交通。交通发生预测通常有两种方法:回归分析法聚类分析法。[1] 
回归分析法是根据对因变量与一个或多个自变量的统计分析,建立因变量和自变量的关系,最简单的情况就是一元回归分析,一般式为:Y=α+βX式中Y是因变量,X是自变量,α和β是回归系数。若用上述公式预测小区的交通生成,则以下标 i 标记所有变量;如果用它研究分区交通吸引,则以下标 j 标记所有变量。而运用公式的过程中需要利用最小二乘法来求解,上述公式中的回归系数根据最小二乘法可得:
其中,式中的X拔是规划年的自变量值,Y拔是规划年分区交通生成(或吸引)预测值。[1] 

课题编辑

从前面的学习中, 我们知道最小二乘法可以用来处理一组数据, 可以从一组测定的数据中寻求变量之间的依赖关系, 这种函数关系称为经验公式. 本课题将介绍最小二乘法的精确定义及如何寻求点与点之间近似成线性关系时的经验公式. 假定实验测得变量之间的 n个数据, 则在 平面上, 可以得到 n个点 , 这种图形称为“散点图”, 从图中可以粗略看出这些点大致散落在某直线近旁, 我们认为 与 之间近似为一线性函数, 下面介绍求解步骤.
考虑函数 , 其中 和 是待定常数. 如果在一直线上,可以认为变量之间的关系为一元函数 . 但一般说来, 这些点不可能在同一直线上. 它只能用直线来描述 , 时, 计算值 与实际值 产生的偏差. 当然要求偏差越小越好, 但由于 可正可负, 因此不能认为总偏差 时, 函数 就很好地反映了变量之间的关系, 因为此时每个偏差的绝对值可能很大. 为了改进这一缺陷, 就考虑用 来代替 . 但是由于绝对值不易作解析运算, 因此, 进一步用 来度量总偏差. 因偏差的平方和最小可以保证每个偏差都不会很大. 于是问题归结为确定 中的常数 和 , 使 为最小. 用这种方法确定系数 , 的方法称为最小二乘法.
由极值原理得 , 即
解此联立方程得
(*)
问题 I 为研究某一化学反应过程中, 温度 ℃)对产品得率 (%)的影响, 测得数据如下:
温度 ℃)
100 110 120 130 140 150 160 170 180 190
得率 (%)
45 51 54 61 66 70 74 78 85 89
(1) 利用“ListPlot”函数, 绘出数据 的散点图(采用格式: ListPlot[{ , , …, }, Prolog->AbsolutePointSize[3]] );
(2) 利用“Line”函数, 将散点连接起来, 注意观察有何特征? (采用格式: Show[Graphics[Line[{ , , …, }]] , Axes->True ]) ;
(3) 根据公式(*), 利用“Apply”函数及集合的有关运算编写一个小的程序, 求经验公式 ;
(程序编写思路为: 任意给定两个集合A (此处表示温度)、B(此处表示得率), 由公式(*)可定义两个二元函数(集合A和B为其变量)分别表示 和 . 集合A元素求和: Apply[Plus,A] 表示将加法施加到集合A上, 即各元素相加, 例如Apply[Plus,{1,2,3}]=6;Length[A]表示集合A 元素的个数, 即为n; A.B表示两集合元素相乘相加;A*B表示集合A与B元素对应相乘得到的新的集合.)
(4) 在同一张图中显示直线 及散点图;
(5) 估计温度为200时产品得率.
然而, 不少实际问题的观测数据 , , …, 的散点图明显地不能用线性关系来描叙, 但确实散落在某一曲线近旁, 这时可以根据散点图的轮廓和实际经验, 选一条曲线来近似表达 与 的相互关系.
问题 II 下表是美国旧轿车价格的调查资料, 今以 表示轿车的使用年数, (美元)表示相应的平均价格, 求 与 之间的关系.
使用年数
1 2 3 4 5 6 7 8 9 10
平均价格
2651 1943 1494 1087 765 538 484290 226 204
(1) 利用“ListPlot”函数绘出数据 的散点图, 注意观察有何特征?
(2) 令 , 绘出数据 的散点图, 注意观察有何特征?
(3) 利用“Line”函数, 将散点 连接起来, 说明有何特征?
(4) 利用最小二乘法, 求 与 之间的关系;
(5) 求 与 之间的关系;
(6) 在同一张图中显示散点图及 关于 的图形.

思考与练习编辑

1. 假设一组数据 : , , …, 变量之间近似成线性关系, 试利用集合的有关运算, 编写一简单程序: 对于任意给定的数据集合 , 通过求解极值原理所包含的方程组, 不需要给出 、 计算的表达式, 立即得到 、 的值, 并就本课题 I /(3)进行实验.
注: 利用Transpose函数可以得到数据A的第一个分量的集合, 命令格式为:
先求A的转置, 然后取第一行元素, 即为数据A的第一个分量集合, 例如
(A即为矩阵 )
= (数据A的第一个分量集合)
= (数据A的第二个分量集合)
B-C表示集合B与C对应元素相减所得的集合, 如 = .
2. 最小二乘法在数学上称为曲线拟合, 请使用拟合函数“Fit”重新计算 与 的值, 并与先前的结果作一比较.
注: Fit函数使用格式:
设变量为x, 对数据A进行线性拟合, 如对题1中的A拟合函数为:

实例编辑

数据编号
1
2
3
4
实验次数w
2
1
1
1
x
0.1
0.2
0.3
0.4
y
1.1
1.9
3.1
3.9
要拟合得到形如y = a + b x 的函数,求解函数中系数的方程组为
技术分享
技术分享
其中,
 技术分享 
为权重,对应每个实验点的实验次数,4个实验点只有第一个点重复做了一次且得到相同结果(如果结果不同则另算一个实验点),其它都没有重复实验,因此总次数为5次。
技术分享
技术分享
技术分享
技术分享
技术分享
技术分享
解得
 技术分享
故拟合方程为
 技术分享
http://baike.baidu.com/link?url=rBgkhXjyELjtHVMpEpPLzh2iNTfUYzoLhgtuXLvyjsspa6K5PwdxNydnVlZYx3zpzqnWcXlXxWVVD-haWzWb0K

http://jingyan.baidu.com/article/59a015e3accd13f7948865a9.html

 

以上是关于最小二乘法(转)的主要内容,如果未能解决你的问题,请参考以下文章

最小二乘法拟合java实现源程序(转)

线性模型的最小二乘法拟合(转)

最小二乘法拟合非线性函数及其Matlab/Excel 实现(转)

最小二乘法多项式曲线拟合原理与实现(转)

最小二乘法拟合圆 转

最小二乘法和最大似然估计的联系和区别(转)