算法思考Radial basis function interpolation (RBF)插值法

Posted Kross Sun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法思考Radial basis function interpolation (RBF)插值法相关的知识,希望对你有一定的参考价值。

目录

什么是插值

假设我们有n个采样点,这些采样点的维度都是 k 维的, 记做 X = x 1 , x 2 , ⋯ x n \\boldX = \\\\boldx_1, x_2, \\cdots x_n\\ X=x1,x2,xn, 对于每个 x i \\boldx_i xi 都对应一个函数值 y i y_i yi 。如果给一个新的采样点 x ∉ X \\boldx\\notin\\boldX x/X, 如何计算或估计出其对应的函数值 y y y, 就是插值要解决的问题。有时候我们也会遇到 y y y 是一个向量的情况,不过可以通过建立多个插值函数来解决这个问题。

如果采样点 x i \\boldx_i xi 都是 1 维的,我们可以采样一种非常简单的方式,即分段线性进行建模。下面举个例子:

我们有采样点 x 0 = 0 , y 0 = 0 , x 1 = 1 , y 1 = 1 x_0=0, y_0=0, x_1=1, y_1=1 x0=0,y0=0,x1=1,y1=1, 可以建模为 y = ∣ x − x 0 ∣ ∣ x − x 0 ∣ + ∣ x − x 1 ∣ ∗ y 0 + ∣ x − x 1 ∣ ∣ x − x 0 ∣ + ∣ x − x 1 ∣ ∗ y 1 y = \\frac|x-x_0||x-x_0|+|x-x_1| * y_0 +\\frac |x - x_1||x-x_0|+|x-x_1| * y_1 y=xx0+xx1xx0y0+xx0+xx1xx1y1 。当给定 x = 0.2 x = 0.2 x=0.2 时,我们利用以上的插值函数, 可以计算出来 y = 0.2 y = 0.2 y=0.2

观察上面建立的模型,我们可以总结出插值近似于在点集之间根据距离关系建立不同的权重,按照权重累加得到目标值。
由此,可以总结一个一般形式的插值函数表示:
f ˉ ( x ) = ∑ i n ω i ψ ( ∣ ∣ x − x i ∣ ∣ ) × y i (1) \\barf(\\boldx) = \\sum_i^n \\omega_i \\psi(||\\boldx - \\boldx_i||) \\times y_i \\tag1 fˉ(x)=inωiψ(∣∣xxi∣∣)×yi(1)
其中 ψ ( ) \\psi() ψ()是一个Radial basis function。

什么是 Radial basis function

Radial basis function 是一个只和距离 r r r有关的函数,距离越近时函数值越大,距离越远时函数值越小。常见的 Radial basis function 函数如:

f ( r ) = 1 σ 2 π exp ⁡ ( − r 2 2 σ 2 ) f(r) = \\frac1\\sigma \\sqrt2\\pi\\exp(-\\fracr^22\\sigma^2) f(r)=σ2π 1exp(2σ2r2)

函数图像为:

如何基于 Radial basis function 中建立插值

计算插值的权重

如果提供了 X = x 1 , x 2 , ⋯ x n , y = y 1 , y 2 , ⋯ y n \\boldX = \\\\boldx_1, x_2, \\cdots x_n\\, \\boldy=\\y_1, y_2, \\cdots y_n\\ X=x1,x2,xn,y=y1,y2,yn。我们要求在采样点需要做到精确拟合,也就是 f ˉ ( x i ) = y i \\barf (\\boldx_i)= y_i fˉ(xi)=yi那么结合(1)我们知道以下式子成立
f ˉ ( x j ) = ∑ i n ω i ψ ( ∣ ∣ x j − x i ∣ ∣ ) × y i = y j \\barf(\\boldx_j) = \\sum_i^n \\omega_i \\psi(||\\boldx_j - \\boldx_i||) \\times y_i = y_j fˉ(xj)=inωiψ(∣∣xjxi∣∣)×yi=yj
因此可以构造出 n n n 个上述等式,如果我们确定了 radial basis function, 可以将 ψ ( ∣ ∣ x i − x j ∣ ∣ ) \\psi(||\\boldx_i - \\boldx_j||) ψ(∣∣xixj∣∣) 记作 ψ i , j \\psi_i,j ψi,j 是已知量。由此可以得到:
( ψ 1 , 1 ψ 1 , 2 ⋯ ψ 1 , n ⋮ ⋮ ⋮ ψ n , 1 ψ n , 2 ⋯ ψ n , n ) ( w 1 w 2 ⋮ w n ) = ( y 1 y 2 ⋮

以上是关于算法思考Radial basis function interpolation (RBF)插值法的主要内容,如果未能解决你的问题,请参考以下文章

《Image Warping Using Few Anchor Points and Radial Function》论文实现

Coding Girls Club 邀请您参与 Ruby Basis

CSS3 radial-gradient径向渐变语法

Basis Part 1Load Balancing-负载均衡系统

D3.js中Radial Cluster Dendrogram详解

使radial-gradient() 跨越两个元素