🚀宁可十年不将军,不可一日不拱卒!
问题:已知 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 总体上尽可能的小。
常见的作法有:
- 使 max0≤i≤m∣P(xi)−yi∣\displaystyle \max_{0\le i\le m} |P(x_i)-y_i|0≤i≤mmax∣P(xi)−yi∣ 最小,这种方法太复杂,究竟为什么太复杂呢?需要进一步考虑。
- 使 ∑i=1m∣P(xi)−yi∣\displaystyle \sum_{i=1}^m |P(x_i)-y_i|i=1∑m∣P(xi)−yi∣ 最小,不可导,求解困难。
- 使 ∑i=1m∣P(xi)−yi∣2\displaystyle \sum_{i=1}^m |P(x_i)-y_i|^2i=1∑m∣P(xi)−yi∣2 最小,此时对参数的估计是极大似然估计。详细参照另一篇文章。
最小二乘法拟合多项式
确定多项式的格式为 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=1∑m∣P(xi)−yi∣2 达到最小值作为评估标准,ψ\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=1∑m∣a0+a1xi+a2xi2+⋯+anxin−yi∣2
从上式可知, ψ\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∂ψ=∂ak∂i=1∑m∣a0+a1xi+a2xi2+⋯+anxin−yi∣2=i=1∑m2(a0+a1xi+a2xi2+⋯+anxin−yi∣2xik=2i=1∑m(j=0∑najxij−yi)xik=2[i=1∑mj=0∑najxij+k−i=1∑myixik]=2[j=0∑naji=1∑mxij+k−i=1∑myixik]
很关键的一步替换来了:记 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=1∑mxik,ck=i=1∑myixik , 因此
∂ψ∂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=0∑najbj+k−ck]
令上式为 000 ,可得出
∑j=0najbj+k=ck
\begin{aligned}
\displaystyle \sum_{j=0}^n a_j b_{j+k} = c_k
\end{aligned}
j=0∑najbj+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=0∑najbj+0j=0∑najbj+1⋮j=0∑najbj+n=c0=c1=cn⇒⎣⎢⎢⎢⎡b0b1⋮bnb1b2⋮bn+1⋯⋯⋱⋯bnbn+1⋮b2n⎦⎥⎥⎥⎤⎣⎢⎢⎢⎡a0a1⋮an⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡c0c1⋮cn⎦⎥⎥⎥⎤
那么这个法方程组是否存在唯一解呢?它的解仅是极值点,那么这个极值点是否又是最小值点呢?这两个问题是有严格的定理证明的。
定理:最小二乘法拟合多项式存在唯一定理:最小二乘法拟合多项式存在唯一定理:最小二乘法拟合多项式存在唯一
定理:最小二乘拟合多项式的法方程组的解确是ψ的最小点。定理:最小二乘拟合多项式的法方程组的解确是\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=0∑mwiδi2=i=0∑mw(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=0∑mw(xi)[j=0∑najψ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}
∂ak∂I=2i=0∑mw(xi)[j=0∑najψj(xi)−f(xi)]ψk(xi)=2[i=0∑mw(xi)j=0∑najψj(xi)ψk(xi)−i=0∑mw(xi)f(xi)ψk(xi)]=2[j=0∑naji=0∑mw(xi)ψj(xi)ψk(xi)−i=0∑mw(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=0∑mw(xi)ψj(xi)ψk(xi);(f,ψk)=i=0∑mw(xi)f(xi)ψk(xi) ,由 ∂I∂ak=0\frac{\partial I}{\partial a_k} =0∂ak∂I=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=0∑naj(ψ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)⎦⎥⎥⎥⎤⎣⎢⎢⎢⎡a0a1⋮an⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡(f,ψ0)(f,ψ1)⋮(f,ψn)⎦⎥⎥⎥⎤
思考与疑问
- 拟合与插值的区别是什么?
- 拟合需要提前知道被拟合函数的形式,也就是说需要有一个模型假设,那么这个作模型假设有什么依据吗?

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

被折叠的 条评论
为什么被折叠?



