数值计算-插值与回归
插值与回归
引言
魏尔施特拉斯逼近定理
魏尔施特拉斯逼近定理(Stone–Weierstrass theorem、Weierstrass theorem)共有两个:
- 闭区间上的连续函数可用多项式级数一致逼近。(泰勒级数特例)
- 闭区间上周期为2π的连续函数可用三角函数级数一致逼近。(傅里叶级数特例)
逼近-回归-插值
在一个闭区间内,多项式可以逼近任何一个连续函数。在这种情况下,研究如何使用多项式来进行数据的拟合就成为了一个关键的问题(最小误差)。这就是所谓的多项式的回归算法。
在数值分析中,多项式插值是使用多项式对一组给定的数据来进行插值的过程,也就是说,在给定一组数据的情况下,多项式插值的目的就是找到一个多项式,使得它恰好通过这些数据点。拉格朗日插值算法可以对实践中的某些物理量进行观测,然后得到一个多项式,从而表示各个结果之间的内在联系。多项式插值算法也是数值积分和数值常微分方程的算法基础。
插值理论
线性插值——最简单
给定两个点(x0,y0),(x1,y1),线性插值是一条连接两个点的直线。对于x∈(x0,x1),y可以通过斜截式给出: x−x0y−y0=x1−x0y1−y0⟹y=y0+x1−x0y1−y0(x−x0),x∈(x0,x1)
对于多个点的线性插值来说,x的值之和最近的两点相关,每个采样点都是用折现连接的(如图1)。其公式可以表达为: y=f(x)=yi+xi−xi−1yi−yi−1(x−xi),x∈(xi−1,xi)

Figure 1: 线性插值
图1 线性插值
双线性插值
双线性插值一般用于z=f(x,y)的2+1维模式,在平面图形处理中有广泛应用。其本质上是做2+1次线性插值。
典型的示意图如图2:

Figure 2: 双线性插值
图2 双线性插值
在2D网格上,我们给出四个点(x1,y1),(x1,y2),(x2,y1),(x2,y2)和四个点的函数值,要求x∈(x1,x2),y∈(y1,y2),双线性插值求f(x,y)则如下:
f(R1)≈f(Q11)x2−x1x2−x+f(Q21)x2−x1x−x1 f(R2)≈f(Q21)x2−x1x2−x+f(Q22)x2−x1x−x1 有点像加权平均。然后将R1,R2再做一次线性插值: f(x,y)=f(P)=f(R1)y2−y1y2−y+f(R2)y2−y1y−y1 带入f(R1),f(R2)可得: f(x,y)=(x2−x1)(y2−y1)1[f(Q11)(x2−x)(y2−y)+f(Q12)(x−x1)(y2−y)+f(Q21)(x2−x)(y−y1)+f(Q22)(x−x1)(y−y1)] 写成矩阵形式: f(x,y)=(x2−x1)(y2−y1)1[x2−xx−x1][Q11Q21Q12Q22][y2−yy−y1] 在CV计算中,x2−x1,y2−y1经常为1(相邻像素点),因此可直接写成: f(x,y)=[x2−xx−x1][Q11Q21Q12Q22][y2−yy−y1]
多项式插值
给定(n+1)个数据点(xi,yi),i∈{0,...,n},且任意两个xi都不相等。可以用一个p阶多项式(0≤p≤n)进行插值,使: p(xi)=yi,0≤i≤n p(x)具体可以写为: p(x)=anxn+an−1xn−1+⋯+a1x+a0 求解系数ai这是一个n+1元一次方程组,写成范德蒙矩阵为: ⎣⎡x0nx1n⋮xnnx0n−1x1n−1⋮xnn−1⋯⋯⋱⋯x0x1⋮xn11⋮1⎦⎤⎣⎡anan−1⋮a0⎦⎤=⎣⎡y0y1⋮yn⎦⎤ 可以通过标准方式来求解系数ai,由于在范德蒙矩阵中,如果∀xi,xj两两不同,则范德蒙矩阵的行列式不为0,可以获得唯一解。以后的无论是牛顿法还是Lagrange插值法得到的结果和这种方式解出来是一样的,只是加快了计算。
Lagrange插值
同样,给点(n+1)个数据点(xi,yi),i∈{0,...,n},且任意两个xi都不相等,可以通过Lagrange插值公式得到多项式,其可以写成: L(x)=i=0∑nli(x)yi 其中,li(x)为Lagrange插值系数,表达式为: li(x)=0≤j≤n,j=i∏xi−xjx−xj 从表达式中,我们不难得到以下性质:
- i=m,则li(xm)=0,因为∃xm==xj,使得分子为0
- i=m,则li(xm)=1,因为分子和分母完全相同。
- L(x)的阶数最大为n。∏0≤j≤n,j=ixi−xjx−xj一共有n个x相乘。
- 插值多项式是唯一的,和范德蒙矩阵求出来的是一样的。
回归算法
线性回归
线性回归使用一个线性函数(一次函数),调节各个参数,使它尽量满足数据误差最小。 其他笔记中写过,根据最小方差准则计算可逆矩阵回归参数的公式为: α=(XTX)−1XTy
多项式回归
给定n个数据点(xi,yi),i∈{1,…,n},可以建立一个m阶多项式来预测y的值,其推到公式如下: y=β0+β1x+β2x2+⋯+βmxm+ϵ 对于每一个二元点有: yi=β0+β1xi+β2xi2+⋯+βmxim+ϵi,1≤i≤n 如果把这些点组合成矩阵形式,则有: ⎣⎡y0y1⋮yn⎦⎤=⎣⎡11⋮1x1x2⋮xn⋯⋯⋱⋯x1mx2m⋮xnm⎦⎤⎣⎡β0β1⋮βm⎦⎤+⎣⎡ϵ0ϵ1⋮ϵm⎦⎤ 即y=Xβ+ϵ,根据最小方差估计,同线性回归可得多项式回归的系数: β=(XTX)−1XTy(m<n)
其他
其他回归算法如脊回归,Log回归等有专门笔记记录。
内插法、外推法、曲线拟合及回归
内插法求解以下的问题:有一未知函数在一些特定位置下的值,求未知函数在已知数值的点之间某一点的值。
外推法类似内插法,但需要知道数值的点是在其他已知数值点的范围以外。一般而言外推法的误差会大于内插法。
曲线拟合是在已知一些数据的条件下,找到一条曲线完全符合现有的数据,数据可能是一些特定位置及其对应的值,也可能是其他资料,例如角度或曲率等。
回归分析类似曲线拟合,也是根据一些特定位置及其对应的值,要找到对应曲线。但回归分析考虑到数据可能有误差,因此所得的的曲线不需要和数据完全符合。一般会使用最小方差法来进行回归分析。[1]
参考文献
[1] 数值分析,维基百科https://zh.wikipedia.org/wiki/%E6%95%B0%E5%80%BC%E5%88%86%E6%9E%90
[2] 多项式插值算法与回归算法.张戎.知乎.https://zhuanlan.zhihu.com/p/33690607