🚀宁可十年不将军,不可一日不拱卒!
问题:已知 x 1 , x 2 , ⋯ , x m ; y 1 , y 2 , ⋯ , y m . 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) 。 但是此时 m m m 很大,而且 y i ≠ f ( x i ) y_i \neq f(x_i) yi=f(xi) ,因此这个时候数值插值就无可奈何了,没有必要再令 P ( x i ) = y i . 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 ( x i ) − y i P(x_i)-y_i P(xi)−yi 总体上尽可能的小。
常见的作法有:
- 使 max 0 ≤ i ≤ m ∣ P ( x i ) − y i ∣ \displaystyle \max_{0\le i\le m} |P(x_i)-y_i| 0≤i≤mmax∣P(xi)−yi∣ 最小,这种方法太复杂,究竟为什么太复杂呢?需要进一步考虑。
- 使 ∑ i = 1 m ∣ P ( x i ) − y i ∣ \displaystyle \sum_{i=1}^m |P(x_i)-y_i| i=1∑m∣P(xi)−yi∣ 最小,不可导,求解困难。
- 使 ∑ i = 1 m ∣ P ( x i ) − y i ∣ 2 \displaystyle \sum_{i=1}^m |P(x_i)-y_i|^2 i=1∑m∣P(xi)−yi∣2 最小,此时对参数的估计是极大似然估计。详细参照另一篇文章。
最小二乘法拟合多项式
确定多项式的格式为
P
(
x
)
=
a
0
+
a
1
x
+
a
2
x
2
+
⋯
+
a
n
x
n
P(x)=a_0+a_1x+a_2x^2+\cdots+a_nx^n
P(x)=a0+a1x+a2x2+⋯+anxn ,由此多项式产生的一组观测值为
(
x
i
,
y
i
)
(
i
=
1
,
2
,
⋯
,
m
)
(x_i,y_i)(i=1,2,\cdots,m)
(xi,yi)(i=1,2,⋯,m) ,注意观测值是有一定的误差的。我们需要通过一系列的操作,学习到参数
a
0
,
a
1
,
⋯
,
a
n
a_0,a_1,\cdots,a_n
a0,a1,⋯,an 。经过分析,我们选择了使
ψ
(
a
0
,
a
1
,
⋯
,
a
n
)
=
∑
i
=
1
m
∣
P
(
x
i
)
−
y
i
∣
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
ψ 最小时的参数
a
0
,
a
1
,
⋯
,
a
n
a_0,a_1,\cdots,a_n
a0,a1,⋯,an 就是我们待求的。有一个大的前提是
n
<
<
m
n<<m
n<<m 。
ψ
(
a
0
,
a
1
,
⋯
,
a
n
)
=
∑
i
=
1
m
∣
a
0
+
a
1
x
i
+
a
2
x
i
2
+
⋯
+
a
n
x
i
n
−
y
i
∣
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
ψ 是一个关于
a
0
,
a
1
,
⋯
,
a
n
a_0,a_1,\cdots,a_n
a0,a1,⋯,an 的多元函数。根据费马定理,由于
ψ
\psi
ψ 可导,因此在极值点处的必要条件是
∂
ψ
∂
a
i
=
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
,
⋯
,
n
k = 1,2,\cdots,n
k=1,2,⋯,n 。
∂
ψ
∂
a
k
=
∂
∂
a
k
∑
i
=
1
m
∣
a
0
+
a
1
x
i
+
a
2
x
i
2
+
⋯
+
a
n
x
i
n
−
y
i
∣
2
=
∑
i
=
1
m
2
(
a
0
+
a
1
x
i
+
a
2
x
i
2
+
⋯
+
a
n
x
i
n
−
y
i
∣
2
x
i
k
=
2
∑
i
=
1
m
(
∑
j
=
0
n
a
j
x
i
j
−
y
i
)
x
i
k
=
2
[
∑
i
=
1
m
∑
j
=
0
n
a
j
x
i
j
+
k
−
∑
i
=
1
m
y
i
x
i
k
]
=
2
[
∑
j
=
0
n
a
j
∑
i
=
1
m
x
i
j
+
k
−
∑
i
=
1
m
y
i
x
i
k
]
\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]
很关键的一步替换来了:记
b
k
=
∑
i
=
1
m
x
i
k
,
c
k
=
∑
i
=
1
m
y
i
x
i
k
b_k = \displaystyle \sum_{i=1}^m x_i^{k} ,c_k = \displaystyle \sum_{i=1}^m y_i x_i^k
bk=i=1∑mxik,ck=i=1∑myixik , 因此
∂
ψ
∂
a
k
=
2
[
∑
j
=
0
n
a
j
b
j
+
k
−
c
k
]
\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]
令上式为
0
0
0 ,可得出
∑
j
=
0
n
a
j
b
j
+
k
=
c
k
\begin{aligned} \displaystyle \sum_{j=0}^n a_j b_{j+k} = c_k \end{aligned}
j=0∑najbj+k=ck
将
n
+
1
n+1
n+1 个如上的等式全列出来构成一个线性方程组(称为法方程组)
{
∑
j
=
0
n
a
j
b
j
+
0
=
c
0
∑
j
=
0
n
a
j
b
j
+
1
=
c
1
⋮
∑
j
=
0
n
a
j
b
j
+
n
=
c
n
⇒
[
b
0
b
1
⋯
b
n
b
1
b
2
⋯
b
n
+
1
⋮
⋮
⋱
⋮
b
n
b
n
+
1
⋯
b
2
n
]
[
a
0
a
1
⋮
a
n
]
=
[
c
0
c
1
⋮
c
n
]
\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 ) = a 0 ψ 0 ( x ) + a 1 ψ 1 ( x ) + ⋯ + a n ψ 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) 已知, a i ( 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) 使得
∣
∣
δ
∣
∣
2
2
||\delta||^2_2
∣∣δ∣∣22 最小。
∣
∣
δ
∣
∣
2
2
=
∑
i
=
0
m
w
i
δ
i
2
=
∑
i
=
0
m
w
(
x
i
)
(
S
(
x
i
)
−
y
i
)
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
(
x
i
)
>
0
w(x_i)>0
w(xi)>0 是不同的点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi) 的比重,
y
i
=
f
(
x
i
)
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
(
a
0
,
a
1
,
⋯
,
a
n
)
I(a_0,a_1,\cdots,a_n)
I(a0,a1,⋯,an) 求极小值
(
a
0
∗
,
a
1
∗
,
⋯
,
a
n
∗
)
(a_0^*,a_1^*,\cdots,a_n^*)
(a0∗,a1∗,⋯,an∗) 的问题。
I
(
a
0
,
a
1
,
⋯
,
a
n
)
=
∑
i
=
0
m
w
(
x
i
)
[
∑
j
=
0
n
a
j
ψ
j
(
x
i
)
−
f
(
x
i
)
]
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
,
⋯
,
n
k=0,1,\cdots,n
k=0,1,⋯,n
∂
I
∂
a
k
=
2
∑
i
=
0
m
w
(
x
i
)
[
∑
j
=
0
n
a
j
ψ
j
(
x
i
)
−
f
(
x
i
)
]
ψ
k
(
x
i
)
=
2
[
∑
i
=
0
m
w
(
x
i
)
∑
j
=
0
n
a
j
ψ
j
(
x
i
)
ψ
k
(
x
i
)
−
∑
i
=
0
m
w
(
x
i
)
f
(
x
i
)
ψ
k
(
x
i
)
]
=
2
[
∑
j
=
0
n
a
j
∑
i
=
0
m
w
(
x
i
)
ψ
j
(
x
i
)
ψ
k
(
x
i
)
−
∑
i
=
0
m
w
(
x
i
)
f
(
x
i
)
ψ
k
(
x
i
)
]
\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
=
0
m
w
(
x
i
)
ψ
j
(
x
i
)
ψ
k
(
x
i
)
;
(
f
,
ψ
k
)
=
∑
i
=
0
m
w
(
x
i
)
f
(
x
i
)
ψ
k
(
x
i
)
(\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
∂
a
k
=
0
\frac{\partial I}{\partial a_k} =0
∂ak∂I=0 得
∑
j
=
0
n
a
j
(
ψ
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
)
]
[
a
0
a
1
⋮
a
n
]
=
[
(
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)⎦⎥⎥⎥⎤
思考与疑问
- 拟合与插值的区别是什么?
- 拟合需要提前知道被拟合函数的形式,也就是说需要有一个模型假设,那么这个作模型假设有什么依据吗?