[科学计算]曲线拟合——最小二乘法

本文探讨了在大规模数据集上使用最小二乘法进行函数拟合的方法,对比了不同误差最小化策略,并深入解析了如何通过构造法方程组来求解多项式拟合问题。同时,文章还介绍了最小二乘法的一般形式及其应用。

🚀宁可十年不将军,不可一日不拱卒!

问题:已知 x1,x2,⋯ ,xm;y1,y2,⋯ ,ym.x_1,x_2,\cdots,x_m;y_1,y_2,\cdots,y_m.x1,x2,,xm;y1,y2,,ym. 求一个简单易算的近似函数 P(x)≈f(x)P(x) \approx f(x)P(x)f(x) 。 但是此时 mmm 很大,而且 yi≠f(xi)y_i \neq f(x_i)yi=f(xi) ,因此这个时候数值插值就无可奈何了,没有必要再令 P(xi)=yi.i=1,2,⋯ ,m.P(x_i)=y_i.i=1,2,\cdots,m.P(xi)=yi.i=1,2,,m. 了,否则会造成过拟合现象,而偏离真实 f(x)f(x)f(x) 。我们的目标仅仅是 P(xi)−yiP(x_i)-y_iP(xi)yi 总体上尽可能的小。

常见的作法有:

  • 使 max⁡0≤i≤m∣P(xi)−yi∣\displaystyle \max_{0\le i\le m} |P(x_i)-y_i|0immaxP(xi)yi 最小,这种方法太复杂,究竟为什么太复杂呢?需要进一步考虑。
  • 使 ∑i=1m∣P(xi)−yi∣\displaystyle \sum_{i=1}^m |P(x_i)-y_i|i=1mP(xi)yi 最小,不可导,求解困难。
  • 使 ∑i=1m∣P(xi)−yi∣2\displaystyle \sum_{i=1}^m |P(x_i)-y_i|^2i=1mP(xi)yi2 最小,此时对参数的估计是极大似然估计。详细参照另一篇文章

最小二乘法拟合多项式

确定多项式的格式为 P(x)=a0+a1x+a2x2+⋯+anxnP(x)=a_0+a_1x+a_2x^2+\cdots+a_nx^nP(x)=a0+a1x+a2x2++anxn ,由此多项式产生的一组观测值为 (xi,yi)(i=1,2,⋯ ,m)(x_i,y_i)(i=1,2,\cdots,m)(xi,yi)(i=1,2,,m) ,注意观测值是有一定的误差的。我们需要通过一系列的操作,学习到参数 a0,a1,⋯ ,ana_0,a_1,\cdots,a_na0,a1,,an 。经过分析,我们选择了使 ψ(a0,a1,⋯ ,an)=∑i=1m∣P(xi)−yi∣2\psi(a_0,a_1,\cdots,a_n) = \displaystyle \sum_{i=1}^m |P(x_i)-y_i|^2ψ(a0,a1,,an)=i=1mP(xi)yi2 达到最小值作为评估标准,ψ\psiψ 最小时的参数 a0,a1,⋯ ,ana_0,a_1,\cdots,a_na0,a1,,an 就是我们待求的。有一个大的前提是 n<<mn<<mn<<m
ψ(a0,a1,⋯ ,an)=∑i=1m∣a0+a1xi+a2xi2+⋯+anxin−yi∣2 \begin{aligned} \psi(a_0,a_1,\cdots,a_n) = \displaystyle \sum_{i=1}^m |a_0+a_1x_i+a_2x_i^2+\cdots+a_nx_i^n-y_i|^2 \end{aligned} ψ(a0,a1,,an)=i=1ma0+a1xi+a2xi2++anxinyi2
从上式可知, ψ\psiψ 是一个关于 a0,a1,⋯ ,ana_0,a_1,\cdots,a_na0,a1,,an 的多元函数。根据费马定理,由于 ψ\psiψ 可导,因此在极值点处的必要条件是 ∂ψ∂ai=0,(i=1,2,⋯ ,n)\frac{\partial \psi}{\partial a_i} = 0,(i=1,2,\cdots,n)aiψ=0,(i=1,2,,n) 。这个时候大家是不是看出来选择评估函数时可导的重要性了!

接下来其实就是一个对公式进行整理简化的过程。下式中 k=1,2,⋯ ,nk = 1,2,\cdots,nk=1,2,,n
∂ψ∂ak=∂∂ak∑i=1m∣a0+a1xi+a2xi2+⋯+anxin−yi∣2=∑i=1m2(a0+a1xi+a2xi2+⋯+anxin−yi∣2xik=2∑i=1m(∑j=0najxij−yi)xik=2[∑i=1m∑j=0najxij+k−∑i=1myixik]=2[∑j=0naj∑i=1mxij+k−∑i=1myixik] \begin{aligned} \frac{\partial \psi}{\partial a_k} & = \frac{\partial }{\partial a_k}\displaystyle \sum_{i=1}^m |a_0+a_1x_i+a_2x_i^2+\cdots+a_nx_i^n-y_i|^2 \\ & = \displaystyle \sum_{i=1}^m 2(a_0+a_1x_i+a_2x_i^2+\cdots+a_nx_i^n-y_i|^2 x_i^k \\ & = 2 \displaystyle \sum_{i=1}^m (\displaystyle \sum_{j=0}^n a_jx_i^j-y_i)x_i^k \\ & = 2 [ \displaystyle \sum_{i=1}^m \displaystyle \sum_{j=0}^n a_j x_i^{j+k}-\displaystyle \sum_{i=1}^m y_i x_i^k] \\ & = 2[ \displaystyle \sum_{j=0}^n a_j \displaystyle \sum_{i=1}^m x_i^{j+k} - \displaystyle \sum_{i=1}^m y_i x_i^k] \end{aligned} akψ=aki=1ma0+a1xi+a2xi2++anxinyi2=i=1m2(a0+a1xi+a2xi2++anxinyi2xik=2i=1m(j=0najxijyi)xik=2[i=1mj=0najxij+ki=1myixik]=2[j=0naji=1mxij+ki=1myixik]
很关键的一步替换来了:记 bk=∑i=1mxik,ck=∑i=1myixikb_k = \displaystyle \sum_{i=1}^m x_i^{k} ,c_k = \displaystyle \sum_{i=1}^m y_i x_i^kbk=i=1mxik,ck=i=1myixik , 因此
∂ψ∂ak=2[∑j=0najbj+k−ck] \begin{aligned} \frac{\partial \psi}{\partial a_k} & = 2[ \displaystyle \sum_{j=0}^n a_j b_{j+k} - c_k] \end{aligned} akψ=2[j=0najbj+kck]
令上式为 000 ,可得出
∑j=0najbj+k=ck \begin{aligned} \displaystyle \sum_{j=0}^n a_j b_{j+k} = c_k \end{aligned} j=0najbj+k=ck
n+1n+1n+1 个如上的等式全列出来构成一个线性方程组(称为法方程组)
{∑j=0najbj+0=c0∑j=0najbj+1=c1⋮∑j=0najbj+n=cn⇒[b0b1⋯bnb1b2⋯bn+1⋮⋮⋱⋮bnbn+1⋯b2n][a0a1⋮an]=[c0c1⋮cn] \left\{ \begin{aligned} \displaystyle \sum_{j=0}^n a_j b_{j+0} & = c_0 \\ \displaystyle \sum_{j=0}^n a_j b_{j+1} & = c_1 \\ \vdots\\ \displaystyle \sum_{j=0}^n a_j b_{j+n} &= c_n \end{aligned} \right. \Rightarrow \begin{bmatrix} b_0 & b_1 & \cdots & b_n \\ b_1 & b_2 & \cdots & b_{n+1} \\ \vdots & \vdots & \ddots & \vdots \\ b_n & b_{n+1} & \cdots & b_{2n} \end{bmatrix} \begin{bmatrix} a_0\\ a_1\\ \vdots\\ a_n \end{bmatrix} = \begin{bmatrix} c_0\\ c_1\\ \vdots\\ c_n \end{bmatrix} j=0najbj+0j=0najbj+1j=0najbj+n=c0=c1=cnb0b1bnb1b2bn+1bnbn+1b2na0a1an=c0c1cn
那么这个法方程组是否存在唯一解呢?它的解仅是极值点,那么这个极值点是否又是最小值点呢?这两个问题是有严格的定理证明的。

定理:最小二乘法拟合多项式存在唯一定理:最小二乘法拟合多项式存在唯一

定理:最小二乘拟合多项式的法方程组的解确是ψ的最小点。定理:最小二乘拟合多项式的法方程组的解确是\psi的最小点。ψ

最小二乘法的一般形式

现实中,需要被拟合的函数形式各样,有的一些确实可以通过变换转换为多项式的拟合,但大多数情况下这种变换并不容易,因此,为了不失一般性,我们接下来讨论最小二乘法的一般形式。

若已知被拟合函数的形式为 S(x)=a0ψ0(x)+a1ψ1(x)+⋯+anψn(x)(n<<m)S(x)=a_0\psi_0(x)+a_1\psi_1(x)+\cdots+a_n\psi_n(x)(n<<m)S(x)=a0ψ0(x)+a1ψ1(x)++anψn(x)(n<<m) 。这里 ψi(x)(i=1,2,⋯ ,n)\psi_i(x)(i=1,2,\cdots,n)ψi(x)(i=1,2,,n) 已知,ai(i=1,2,⋯ ,n)a_i(i=1,2,\cdots,n)ai(i=1,2,,n) 参数未知。

用最小二乘法拟合曲线,就是在众多的 S(x)S(x)S(x) 中,求得一函数 S∗(x)S^*(x)S(x) 使得 ∣∣δ∣∣22||\delta||^2_2δ22 最小。
∣∣δ∣∣22=∑i=0mwiδi2=∑i=0mw(xi)(S(xi)−yi)2 \begin{aligned} ||\delta||^2_2 = \displaystyle \sum_{i=0}^m w_i\delta_i^2 = \displaystyle \sum_{i=0}^m w(x_i)(S(x_i)-y_i)^2 \end{aligned} δ22=i=0mwiδi2=i=0mw(xi)(S(xi)yi)2
其中 w(xi)>0w(x_i)>0w(xi)>0 是不同的点 (xi,yi)(x_i,y_i)(xi,yi) 的比重,yi=f(xi)y_i=f(x_i)yi=f(xi) 是观测值, 其中 f(x)=S(x)+ε(x)f(x) = S(x)+\varepsilon(x)f(x)=S(x)+ε(x)

上述的问题可以转化为一个多元函数 I(a0,a1,⋯ ,an)I(a_0,a_1,\cdots,a_n)I(a0,a1,,an) 求极小值 (a0∗,a1∗,⋯ ,an∗)(a_0^*,a_1^*,\cdots,a_n^*)(a0,a1,,an) 的问题。
I(a0,a1,⋯ ,an)=∑i=0mw(xi)[∑j=0najψj(xi)−f(xi)]2 \begin{aligned} I(a_0,a_1,\cdots,a_n) = \displaystyle \sum_{i=0}^m w(x_i)[\displaystyle \sum_{j=0}^n a_j\psi_j(x_i) -f(x_i)]^2 \end{aligned} I(a0,a1,,an)=i=0mw(xi)[j=0najψj(xi)f(xi)]2
由求多元函数极值的必要条件,有 k=0,1,⋯ ,nk=0,1,\cdots,nk=0,1,,n
∂I∂ak=2∑i=0mw(xi)[∑j=0najψj(xi)−f(xi)]ψk(xi)=2[∑i=0mw(xi)∑j=0najψj(xi)ψk(xi)−∑i=0mw(xi)f(xi)ψk(xi)]=2[∑j=0naj∑i=0mw(xi)ψj(xi)ψk(xi)−∑i=0mw(xi)f(xi)ψk(xi)] \begin{aligned} \frac{\partial I}{\partial a_k} &=2 \displaystyle \sum_{i=0}^m w(x_i)[\displaystyle \sum_{j=0}^n a_j\psi_j(x_i) -f(x_i)]\psi_k(x_i)\\ & = 2[\displaystyle \sum_{i=0}^m w(x_i) \displaystyle \sum_{j=0}^n a_j\psi_j(x_i) \psi_k(x_i) - \displaystyle \sum_{i=0}^m w(x_i) f(x_i) \psi_k(x_i)]\\ & = 2[ \displaystyle \sum_{j=0}^n a_j \displaystyle \sum_{i=0}^m w(x_i) \psi_j(x_i) \psi_k(x_i) - \displaystyle \sum_{i=0}^m w(x_i) f(x_i) \psi_k(x_i)] \\ \end{aligned} akI=2i=0mw(xi)[j=0najψj(xi)f(xi)]ψk(xi)=2[i=0mw(xi)j=0najψj(xi)ψk(xi)i=0mw(xi)f(xi)ψk(xi)]=2[j=0naji=0mw(xi)ψj(xi)ψk(xi)i=0mw(xi)f(xi)ψk(xi)]
若记 (ψj,ψk)=∑i=0mw(xi)ψj(xi)ψk(xi);(f,ψk)=∑i=0mw(xi)f(xi)ψk(xi)(\psi_j,\psi_k) = \displaystyle \sum_{i=0}^m w(x_i) \psi_j(x_i) \psi_k(x_i);(f,\psi_k) = \displaystyle \sum_{i=0}^m w(x_i) f(x_i) \psi_k(x_i)(ψj,ψk)=i=0mw(xi)ψj(xi)ψk(xi);(f,ψk)=i=0mw(xi)f(xi)ψk(xi) ,由 ∂I∂ak=0\frac{\partial I}{\partial a_k} =0akI=0
∑j=0naj(ψj,ψk)=(f,ψk) \begin{aligned} \displaystyle \sum_{j=0}^n a_j (\psi_j,\psi_k) = (f,\psi_k) \end{aligned} j=0naj(ψj,ψk)=(f,ψk)
从而用矩阵的形式可以得到一个法方程组
[(ψ0,ψ0)(ψ1,ψ0)⋯(ψn,ψ0)(ψ0,ψ1)(ψ1,ψ1)⋯(ψn,ψ1)⋮⋮⋱⋮(ψ0,ψn)(ψ1,ψn)⋯(ψn,ψn)][a0a1⋮an]=[(f,ψ0)(f,ψ1)⋮(f,ψn)] \begin{aligned} \begin{bmatrix} (\psi_0,\psi_0) & (\psi_1,\psi_0) & \cdots & (\psi_n,\psi_0) \\ (\psi_0,\psi_1) & (\psi_1,\psi_1) & \cdots & (\psi_n,\psi_1) \\ \vdots & \vdots & \ddots & \vdots \\ (\psi_0,\psi_n) & (\psi_1,\psi_n) & \cdots & (\psi_n,\psi_n) \end{bmatrix} \begin{bmatrix} a_0\\ a_1\\ \vdots\\ a_n \end{bmatrix}= \begin{bmatrix} (f,\psi_0) \\ (f,\psi_1)\\ \vdots\\ (f,\psi_n) \end{bmatrix} \end{aligned} (ψ0,ψ0)(ψ0,ψ1)(ψ0,ψn)(ψ1,ψ0)(ψ1,ψ1)(ψ1,ψn)(ψn,ψ0)(ψn,ψ1)(ψn,ψn)a0a1an=(f,ψ0)(f,ψ1)(f,ψn)

思考与疑问

  1. 拟合与插值的区别是什么?
  2. 拟合需要提前知道被拟合函数的形式,也就是说需要有一个模型假设,那么这个作模型假设有什么依据吗?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值