说说最小二乘
最小二乘是用于根据采样结果计算“最佳参数”的常用方法。本文简要描述最小二乘的原理和计算方法。
假设我们有一个系统,我们知道这个系统的响应函数f是某组自变量的线性方程。不失一般性,我们以三个自变量的系统为例,对于自变量x,y,z,系统输出F满足F=f(x,y,z)=ax+by+cz+d,而a,b,c,d的具体数值是未知的。
我们可以通过测量的方法得到一组F, x,y,z的采样值为
(F1, x1,y1,z1)
(F2, x2,y2,z2)
(F3, x3,y3,z3)
........
(FN, xN,yN,zN)
众所周知,测量是有误差的,因此我们不可能根据上述测量值得到准确的a,b,c,d的值。为此,我们希望在下面的“误差”的平方和最小的条件下计算a,b,c,d的值:
注意到上述方程中,只有a,b,c,d和e是未知的。而且,e是关于a,b,c,d的二次方程。根据微积分的知识我们很容易知道,二次方程一定有唯一最小值(二次系数为正数时),最小值处的点使得下面4个偏微分都为0:
这样,对于4个未知数,我们有四个关于a,b,c,d的线性方程。利用普通的线性方程求解算法(如高斯消去法)就可以得到a,b,c,d的值。
有趣的事情是:如果f不是关于未知参数的线性方程怎么办?答案是无法用最小二乘求解。原因是如果不是线性的,则上面的误差的平方和是对未知参数的高次方程,在这种情况下,是没有唯一的最小值解的。由于没有唯一最小值解,方差最小的条件也无法满足,自然无法利用最小二乘进行计算。
但是文章开头对于线性的要求是过于严厉的,原因是实际上我们允许F,是x,y,z的非线性方程。例如,假如我们根据采样结果来计算圆的方程,我们可以得到:
f(x,y)=x^2+y^2+2ax+2by+c=0
注意上面方程对x,y是二次方程而对a,b,c是线性的。当你把采样数据输入以后,x,y的平方项实际上是常数,你还是可以沿用前面完全一样的方法进行计算。有兴趣的用户不妨用笔计算一次。