一、拟合函数的“好坏”
1、 分段线性插值函数 y = f 1 ( x ) y=f_1(x) y=f1(x)
1、数据误差为0。
2、函数性质不够好:只有
C
0
C^0
C0连续,不光滑(数值计算)
(
C
0
C^0
C0:几何连续性中的
f
a
(
x
)
=
f
b
(
x
)
fa(x) = fb(x)
fa(x)=fb(x),即函数值相同,
C
n
(
n
>
0
)
C^n(n>0)
Cn(n>0)代表了n阶导数相同)
2、光滑插值函数 y = f 2 ( x ) y=f_2(x) y=f2(x)
1、数据误差为0。
2、可能被“差数据”(噪声、outliers)带歪,导致函数性质不好、预测不可靠
3、逼近拟合函数 y = f 3 ( x ) y=f_3(x) y=f3(x)
1、数据误差不为0,但足够小。
二、多项式插值定理
1、 定理
若 x i x_i xi两两不相同,则对任意给定的 y i y_i yi,存在唯一的次数至多是n次的多项式 p n p_n pn,使得 p n ( x i ) = y i , i = 0 , ⋯ , n p_n(x_i)=y_i,i=0,\cdots,n pn(xi)=yi,i=0,⋯,n
2、证明
在幂基
1
,
x
,
x
2
,
⋯
,
x
n
{1,x,x^2,\cdots,x^n}
1,x,x2,⋯,xn下待定多项式p的形式为:
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
由插值条件
p
(
x
i
)
=
y
i
,
i
=
0
,
⋯
,
n
p(x_i)=y_i,i=0,\cdots,n
p(xi)=yi,i=0,⋯,n,得到方程式
系数矩阵为Vandermonde矩阵,其行列式非零,因此方程组有唯一解。(如果基函数选取不一样,,方程组的系数矩阵不一样)
3、构建方法
1、技巧一:构造插值问题的通用解
- 给定n+1个点
{
(
x
0
,
y
0
)
,
⋯
,
(
x
n
,
y
n
)
}
\{(x_0,y_0),\cdots,(x_n,y_n)\}
{(x0,y0),⋯,(xn,yn)},寻找一组次数为n的多项式基函数
l
i
l_i
li使得:
l i ( x j ) = { 1 , i = j 0 , i ≠ j l_i(x_j)=\begin{cases} 1,\quad i=j\\ 0, \quad i\not=j \end{cases} li(xj)={1,i=j0,i=j
插值问题的解为:
P ( x ) = y 0 l 0 ( x ) + y 1 l 1 ( x ) + ⋯ + y n l n ( x ) = ∑ i = 0 n y i l i ( x ) P(x)=y_0l_0(x)+y_1l_1(x)+\cdots+y_nl_n(x)=\sum^n_{i=0}y_il_i(x) P(x)=y0l0(x)+y1l1(x)+⋯+ynln(x)=i=0∑nyili(x) - 如何计算
n阶多项式,且有以下n个根
x 0 , x 1 , x 2 , ⋯ , x n x_0,x_1,x_2,\cdots,x_n x0,x1,x2,⋯,xn
故可表示为:
l i ( x ) = C i ( x − x 0 ) ( x − x 1 ) ⋯ ( x − x i − 1 ) ( x − x i + 1 ) ⋯ ( x − x n ) = C i ∏ j ≠ i ( x − x j ) l_i(x)=C_i(x-x_0)(x-x _1)\cdots(x-x_{i-1})(x-x_{i+1})\cdots(x-x_{n}) =C_i\prod_{j\not=i}(x-x_j) li(x)=Ci(x−x0)(x−x1)⋯(x−xi−1)(x−xi+1)⋯(x−xn)=Ci∏j=i(x−xj)
由上面的 l i ( x i ) = 1 l_i(x_i)=1 li(xi)=1,可得
1 = C i ∏ j ≠ i ( x i − x j ) ⇒ C i = 1 ∏ j ≠ i ( x i − x j ) 1=C_i\prod_{j\not=i}(x_i-x_j)\Rightarrow C_i=\frac{1}{\prod_{j\not=i}(x_i-x_j)} 1=Ci∏j=i(xi−xj)⇒Ci=∏j=i(xi−xj)1
最终多项式基函数:
l i ( x ) = ∏ j ≠ i ( x − x j ) ∏ j ≠ i ( x i − x j ) l_i(x)=\frac{\prod_{j\not=i}(x-x_j)}{\prod_{j\not=i}(x_i-x_j)} li(x)=∏j=i(xi−xj)∏j=i(x−xj),该式被称为拉格朗日多项式
2、技巧二:更方便的求解表达
- 牛顿插值:具有相同“导数”(差商)的多项式构造(n阶泰勒展开)
- 定义:
一阶差商: f [ x 0 , x 1 ] = f ( x 1 ) − f ( x 0 ) x 1 − x 0 f[x_0,x_1]=\frac{f(x_1)-f(x_0)}{x_1-x_0} f[x0,x1]=x1−x0f(x1)−f(x0)
k阶差商:
设 { x 0 , x 1 , ⋯ , x k } \{x_0,x_1,\cdots,x_k\} {x0,x1,⋯,xk}互不相同, f ( x ) f(x) f(x)关于 { x 0 , x 1 , ⋯ , x k } \{x_0,x_1,\cdots,x_k\} {x0,x1,⋯,xk}的k阶差商为:
f [ x 0 , x 1 , ⋯ , x k ] = f [ x 1 , ⋯ , x k ] − f [ x 0 , x 1 , ⋯ , x k − 1 ] x k − x 0 f[x_0,x_1,\cdots,x_k]=\frac{f[x_1,\cdots,x_k]-f[x_0,x_1,\cdots,x_{k-1}]}{x_k-x_0} f[x0,x1,⋯,xk]=xk−x0f[x1,⋯,xk]−f[x0,x1,⋯,xk−1]
牛顿多项式插值为:
N n ( x 0 ) = f ( x 0 ) + f [ x 1 , x 0 ] ( x − x 0 ) + ⋯ + f [ x 0 , x 1 , x 2 , ⋯ , x n ] ( x − x 0 ) ⋯ ( x − x n − 1 ) N_n(x_0)=f(x_0)+f[x_1,x_0](x-x_0)+\cdots+f[x_0,x_1,x_2,\cdots,x_n](x-x_0)\cdots (x-x_{n-1}) Nn(x0)=f(x0)+f[x1,x0](x−x0)+⋯+f[x0,x1,x2,⋯,xn](x−x0)⋯(x−xn−1)
4、存在的问题
- 系数矩阵过于稠密
- 依赖于基函数选取,矩阵可能病态,导致难于求解(求逆)
1、病态问题
- 输入数据的细微变化导致输出(解)的剧烈变化
- 将线性方程看成直线(超平面)
- 当系统病态时,直线变为近似平行
- 求解(即直线相交)变得困难、不精确
- 矩阵条件数
K 2 ( A ) = m a x x ≠ 0 ∣ ∣ A x ∣ ∣ ∣ ∣ x ∣ ∣ m i n x ≠ 0 ∣ ∣ A x ∣ ∣ ∣ ∣ x ∣ ∣ K_2(A)=\frac{max_{x\not= 0}\frac{||A_x||}{||x||}}{min_{x\not= 0}\frac{||A_x||}{||x||}} K2(A)=minx=0∣∣x∣∣∣∣Ax∣∣maxx=0∣∣x∣∣∣∣Ax∣∣- 等于最大特征值和最小特征值之间比例
- 条件数大意味着基元之间有太多相关性
- 多项式插值问题是病态的
对于等距分布的数据点 x i x_i xi,范德蒙矩阵的条件数随着数据点数n呈指数级增长(多项式的最高次数为n-1)
2、原因
- 幂(单项式)函数基
1、 幂函数之间差别随着次数增加而减小
2、不同幂函数唯一差别为增长速度( x i x_i xi比 x i − 1 x_{i-1} xi−1增加快)
3、方法
- 使用正交多项式基
4、结论
- 多项式插值不稳定
控制点的微小变化可导致完全不同的结果 - 振荡(Runge)现象
多项式随着插值点数(可以是细微)增加而摆
三、多项式逼近
1、为什么
- 数据点含噪声、异常值等
- 更紧凑的表达
- 计算简单、更稳定
2、最小二乘逼近
1、 逼近问题
- 给定一组线性无关的连续函数集合 B = { b 1 , ⋯ , b n } B=\{b_1,\cdots,b_n\} B={b1,⋯,bn}和一组结点 { ( x 1 , y 1 ) , ⋯ , ( x m , y m ) } \{(x_1,y_1),\cdots,(x_m,y_m)\} {(x1,y1),⋯,(xm,ym)},m>n
- 在B张成空间中哪个函数 f ∈ s p a n ( B ) f\in span(B) f∈span(B)对结点逼近?
2、最佳逼近的定义
最小二乘逼近:
a
r
g
m
i
n
f
∈
s
p
a
n
(
B
)
∑
j
=
1
n
(
f
(
x
j
)
−
y
j
)
2
argmin_{f\in span(B)} \sum^n_{j=1}(f(x_j)-y_j)^2
argminf∈span(B)j=1∑n(f(xj)−yj)2
∑
j
=
1
m
(
f
(
x
j
)
−
y
j
)
2
=
∑
j
=
1
m
(
∑
i
=
1
n
(
λ
i
b
i
(
x
j
)
−
y
j
)
2
)
=
(
M
λ
−
y
)
T
(
M
λ
−
y
)
=
λ
T
M
T
M
λ
−
y
T
M
λ
−
λ
T
M
T
y
+
y
T
y
=
λ
T
M
T
M
λ
−
2
y
T
M
λ
+
y
T
y
\sum^m_{j=1}(f(x_j)-y_j)^2=\sum^m_{j=1}(\sum^n_{i=1}(\lambda_i b_i(x_j)-y_j)^2)=(M\lambda-y)^T(M\lambda-y)=\lambda^TM^TM\lambda-y^TM\lambda-\lambda^TM^Ty+y^Ty=\lambda^TM^TM\lambda-2y^TM\lambda+y^Ty
∑j=1m(f(xj)−yj)2=∑j=1m(∑i=1n(λibi(xj)−yj)2)=(Mλ−y)T(Mλ−y)=λTMTMλ−yTMλ−λTMTy+yTy=λTMTMλ−2yTMλ+yTy
3、求解
- 关于
λ
\lambda
λ的二次多项式:
λ T M T M λ − 2 y T M λ + y T y \lambda^TM^TM\lambda-2y^TM\lambda+y^Ty λTMTMλ−2yTMλ+yTy - 法方程
最小解满足:
M T M λ = M T y M^TM\lambda=M^Ty MTMλ=MTy - 提示
最小化二次目标函数 x T A x + b T x + c x^TAx+b^Tx+c xTAx+bTx+c
充分必要条件: 2 A x = − b 2Ax=-b 2Ax=−b
四、函数空间及基空间
1、为什么使用多项式?
- 易于计算,表现良好,光滑
- 稠密行与完备性:表达能力足够
1、魏尔斯特拉斯Weierstrass定理
令f为闭区间
[
a
,
b
]
[a,b]
[a,b]上任意连续函数,则对任意给定
ε
\varepsilon
ε,存在n和多项式
P
n
P_n
Pn使得:
∣
f
(
x
)
−
P
n
(
x
)
∣
<
ε
,
∀
x
∈
[
a
,
b
]
|f(x)-P_n(x)|<\varepsilon,\forall x \in [a,b]
∣f(x)−Pn(x)∣<ε,∀x∈[a,b]
- Weierstrass只证明了存在性。
2、用Bernstein多项式做逼近
1、 伯恩斯坦Bernstein给出了构造性证明。
- 对 [ 0 , 1 ] [0,1] [0,1]区间上任意连续函数 f ( x ) f(x) f(x)和任意正整数 n n n,以下不等式对所有 x ∈ [ 0 , 1 ] x\in [0,1] x∈[0,1]成立, f ( x ) − B n f ( x ) < 9 4 m f , n f(x)-B_nf(x)<\frac{9}{4}m_{f,n} f(x)−Bnf(x)<49mf,n
- m f , n = ∣ f ( y 1 ) − f ( y 2 ) ∣ m_{f,n}=|f(y_1)-f(y_2)| mf,n=∣f(y1)−f(y2)∣的上下线, y 1 , y 2 ∈ [ 0 , 1 ] y1,y2\in[0,1] y1,y2∈[0,1]且 ∣ y 1 − y 2 ∣ < 1 n |y_1-y_2|<\frac{1}{\sqrt{n}} ∣y1−y2∣<n1
- B n ( f , x ) = ∑ j = 0 n f ( x j ) b n , j ( x ) B_n(f,x)=\sum^n_{j=0}f(x_j)b_{n,j}(x) Bn(f,x)=∑j=0nf(xj)bn,j(x),其中 x j x_j xj为 [ 0 , 1 ] [0,1] [0,1]上等距采样点
- b n , j = ( n j ) x j ( 1 − x ) n − j b_{n,j}=\left( \begin{matrix} n\\ j \end{matrix} \right)x^j(1-x)^{n-j} bn,j=(nj)xj(1−x)n−j为Bernstein多项式
- 具有非常好的几何意义。
正性、权性(和为1) ⇒ \Rightarrow ⇒凸包性
变差缩减性
递归线性求解方法
细分性
…
3、RBF插值/逼近
1、Gauss函数
- 两个参数:均值
μ
\mu
μ,方差
σ
\sigma
σ
g μ , σ ( x ) = 1 2 e − ( x − μ ) 2 2 σ 2 g_{\mu,\sigma}(x)=\frac{1}{\sqrt 2}e^{\frac{-(x-\mu)^2}{2\sigma^2}} gμ,σ(x)=21e2σ2−(x−μ)2 - 几何意义:
均值:位置
方差:支集宽度
2、RBF拟合
f
(
x
)
=
b
0
+
∑
i
=
1
n
b
i
g
i
(
x
)
f(x)=b_0+\sum^n_{i=1}b_ig_i(x)
f(x)=b0+∑i=1nbigi(x)
问题:均值和方差是否可以一起优化?
4、 从另一个角度看拟合函数
1、Gauss拟合函数
- 一般Gauss函数表达为标准Gauss函数的形式
g μ , σ ( x ) = 1 2 e − ( x − μ ) 2 2 σ 2 = 1 2 e − 1 2 ( x σ − μ σ ) 2 = g 0 , 1 ( a x + b ) , a = x σ , b = μ σ g_{\mu,\sigma}(x)=\frac{1}{\sqrt 2}e^{\frac{-(x-\mu)^2}{2\sigma^2}}=\frac{1}{\sqrt 2}e^{-\frac{1}{2}(\frac{x}{\sigma} -\frac{\mu}{\sigma})^2}=g_{0,1}(ax+b),a=\frac{x}{\sigma},b=\frac{\mu}{\sigma} gμ,σ(x)=21e2σ2−(x−μ)2=21e−21(σx−σμ)2=g0,1(ax+b),a=σx,b=σμ
f ( x ) = b 0 + ∑ i = 1 n b i g i ( x ) ⇒ w 0 + ∑ i = 1 n w i g 0 , 1 ( a i x + b i ) f(x)=b_0+\sum^n_{i=1}b_ig_i(x) \Rightarrow w_0+\sum^n_{i=1}w_ig_{0,1}(a_ix+b_i) f(x)=b0+∑i=1nbigi(x)⇒w0+∑i=1nwig0,1(aix+bi)(基函数是由一个基本函数通过平移和伸缩变换而来的)
2、换个方式看函数:神经网络
3、RBF神经网络
- 高维情况:RBF(Radial Basis Function),径向基函数
- 一种特殊的BP网络
- 优化:BP算法
- 核函数思想
- Gauss函数特性:拟局部性
4、用神经网络函数来拟合数据
- 为什么能行?
万能逼近定理:自由度足够多 - 与传统拟合一样存在同样的问题:函数个数如何选?
调参
五、总结
1、一元函数的数据拟合的方法
1、到哪找?
- 确定某个函数集合(“池子”),具有某个结构容易表达(比如线性函数空间),且尽量广泛(表达能力强)
2、找哪个?
- 度量哪个函数是好的/“最好”的,定义损失函数,包括数据误差 项(逼近数据的度量)与正则项(对函数性质的度量)
3、怎么找?
- 优化求解:不同的优化方法与技巧。
- 线性问题:解线性方程或线性方程组
- 非线性问题:
• 凸问题:有理论保证
• 非凸问题:难!数值求解( 梯度下降法、牛顿法、拟牛顿法、L‐BFGS、 … ),须选择合适初值、步长等;一般要根据具体的优化问题形式及特点来设计合适的优化方法!
六、参考和引用
[1] bilibili:GAMES102:几何建模与处理
[2] 数据拟合1.pdf