||
重剑无锋,大巧不工。
计算方法讲了好几次,但一直没有提到最关键的一个问题:数据是从哪里来的?是从天上掉下来的吗?不是。是自己头脑里固有的吗?不是。你用到的所有数据,只能从测量中来。
测量就涉及误差。无论采用多么精密的仪器,你想测量的物理量还是会受到你无法控制的外界因素的影响,其数值就会有起伏,也就是噪声。信噪比(信号与噪声的比值)是衡量某个测量系统的重要参数。
处理这种起伏的方法,经常用的有取平均值或者采用中位数,更精致一点的,还可以对它们进行加权平均(比如说用个高斯窗口什么的)。这些方法假设自己对这些起伏没有任何了解,只能相信“The lord is subtle, but not malicious.”也就是说,除了随机涨落以外,没有任何系统误差。
如果你知道待测量大致的幅度、起伏的大小,也知道测量仪器的精度,就可以用这些知识来改进测量的结果,比如说,卡尔曼滤波和锁相法。知识就是力量。
这些方法要么是时间换精度,要么是用知识求效率,总之,数据不是白来的,数值也不是完全精确的。既然如此,做数据拟合的时候,就没有必要像以前介绍的插值法那样(计算方法之推己及人),要求拟合曲线一定经过每一个数据点。不要那么执着于一城一地的得失,对某些点的微小偏离(称为“残差”),是为了实现对全体点的最大忠诚。这就是最小二乘法的原理。
假设你得到的数据是$(x_i,y_i)$,猜测的拟合曲线是$y=f(x)$。如何表示拟合曲线对全体点的最大忠诚呢?可以用最大的残差$\max _i|y_i-f(x_i)|$,也可以用全体残差之和$\sum _i |y_i-f(x_i)|$,但是都不如用残差的平方和$\sum _i (y_i-f(x_i))^2$。
用个例子来说明吧。假设你想用$y=f(x)=a+bx+cx^2$来拟合一组数据$(x_i,y_i)$,残差的平方和就是
$\delta (a,b,c)=\sum _i (y_i-f(x_i))^2=\sum _i (y_i-(a+bx_i+cx^2_i))^2$
这个函数依赖于三个拟合参数$a,b,c$,最佳拟合就是让它对这三个参数的导数都等于零,也就是说
$\frac{\partial \delta (a,b,c)}{\partial a}=0$
$\frac{\partial \delta (a,b,c)}{\partial b}=0$
$\frac{\partial \delta (a,b,c)}{\partial c}=0$
这是三个未知数的三个独立方程,而且,因为我们选择的是残差的平方和,这三个方程都是线性方程,太幸福了!很容易就可以得到三个参数的最佳值,也就得到了最佳拟合曲线。
这个方法还可以进一步改进:采用更高次数的代数多项式,采用三角函数乃至指数函数的广义多项式,采用加权系数来区别对待不同位置的数据(“看人下菜碟”)。然而,关键都在于尽可能好地测量数据、尽可能好地猜测拟合函数的形式、尽可能大度地做出妥协,才能得到最佳的结果。
当然,如果测量系统的信噪比太低,你根本就看不到信号,所有这些方法可能都没有效果。这时候,不要慌,也不要怕,你可以构建一些适当的模型,用大型计算机做出一堆模板,然后,然后去套那些看似摸不着头绪的数据。只要你运气好,还是有可能套中的。
你也许说,这种方法不就是指望着“瞎猫碰个死耗子”吗?不不不,你说错了,这种方法可不是“守株待兔”,而是有一个光鲜亮丽的称号——锦鲤吉祥!
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2025-1-5 09:14
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社