添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
针对一种特殊特征数据点组的拟合方法-从朴素线性拟合到广义回归神经网络

针对一种特殊特征数据点组的拟合方法-从朴素线性拟合到广义回归神经网络

前言

寻找更加高效地对散点数据进行拟合的方法一直是学术界和工业界追求的目标。也就是说,通常实验中收集的数据中数据点的状态是以离散形式呈现的,这不利于系统的分析和处理。

我们想找到一种准确拟合数据的方法,并得到相应曲线功能参数的合理预测。 本文将探讨多类算法在具有明显特征性数据点组曲线拟合中的应用,并从精度和原理上比较现在更常用的朴素曲线拟合方法、和朴素GRNN拟合方法。


在传统拟合的工作中,往往难以处理 变化率大、有较多陡峭下降沿 且零散的数据点。每次都弄得我很头疼。这种数据如图1所示。在本文中,我们将讨论这个情况下的拟合。

图1 具有明显非线性特征的数据点组

本文示例在MATLAB R2020a上演示,并在2019b通过验证。

我们先来讨论常见的传统朴素拟合方法。


一,指数拟合(Exponential fitting)

指数拟合(Exponential fitting) 作为广为采用的基本拟合方式,在许多场景被使用。

设给定离散数据

式中xk为自变量x(标量或向量,即一元或多元变量)的取值;yk为因变量 y(标量)的相应值。曲线拟合要解决的问题是寻求与(1)的背景规律相适应解析表达式

使它在某种意义下最佳地逼近或拟合ƒ(x,b)称为拟合模型; 为待定参数,当b仅在ƒ中线性地出现时,称模型为线性的,否则为非线性的。

指数函数(exponential function)的标准式形式为:

对上式两边取自然对数,得:

b>0时,Y随X增大而增大;b<0时,Y随X增大而减少。lna和b分别为截距和斜率。

虽然指数拟合是一个很经典的拟合方法,但它不适合我们本文讨论的拟合类型。实验效果一般,不放图了。


二,多项式拟合 Polynomial fitting

多项式拟合的目的是将原数据点拟合一个多项式函数,如:

y(x,w)= ω_0+ω_1+ω_2 x^2+⋯+ω_M x^M=∑(ω_j x^j)

其中,M是多项式的阶, 表示x的j次幂。这个多项式系数 ,..., 表示为矩阵 求和为j从0到M。注意,尽管多项式函数y(x,w)是非线性的关于x的函数,却是一个关于系数矩阵w的线性函数。函数,例如这个未知参数的多项式,它是一种线性模型。

多项式的系数会由训练数据和多项式的拟合来决定。这个可以由最小化错误函数来实现。通过y(x,w)和给定的系数w值的差距。而一个简单的被广泛使用的错误函数是:预测值y(xn,w)和相应的目标值tn的差距的平方和,以便我们最小化。

E(W)=1/2 ∑{y(x_n,W)-t_n }^2 (7)

求和为n的取值从1到N。我们希望这个错误函数值为零。当且仅当每一个训练数据为y(x,w)的输入时。我们可以通过选择一个值,使得E(w)的值最小,来解决曲线拟合问题。因为这个错误函数是系数w的二次函数,但对系数矩阵w的导数对每个系数都是线性的,并且这个错误函数的最小化有唯一值,记为w*。而y(x,w*)可以被推导出来。

对于本文提出的特征数据点组,当Degree设为1时,我的拟合结果如下图所示

Degree=5

Degree=7

随着Degree升高,效果越来越好。这是因为在表达式中可以容纳更多的参数来描述这个曲线。


三,高斯拟合 Gaussian fitting

设有一组试验数据 (x_i,y_i )(i=1,2,3,...) 用高斯函数描述

y_i=y_max×exp[-(x_i-x_max )^2/S]

式中待估参数 y_max x_max 和S分别为高斯曲线的峰值、峰值位置和半宽度信息,上式两边取自然对数,化为

lny_i=lny_max-(x_i-x_max )^2/S=(lny_max-(x_max^2)/S)+(2x_i x_max)/S-(x_2^i)/S

lny_i=z_i ,lny_max-(x_max^2)/S=b_0 ,(2x_i x_max)/S=b_1 ,-1/S=b_2)

并考虑全部试验数据,则上式以矩阵形式表示化为

简记为 Z=XB

根据最小二乘原理,构成的矩阵B的广义最小二乘解为 B=(X^T X)^-1 X^T Z

再根据式求出待估参数 y_max x_max 和S,得到高斯函数的特征参数。

对于本文提出的特征数据点组,我使用高斯函数拟合,拟合结果如下图所示:

terms 1:

terms 2:


四,使用GRNN(广义回归神经网络)拟合

广义回归神经网络是径向基函数神经网络的一种特殊形式。由四层组成,分别为输入层、模式层、求和层和输出层。对应网络输入为 X=[x1,x2,x3,.....,xn,]^T ,输出为 Y=[y1,y2,y3,.....,yn,]^T 。概括的来说:

  • 输入层为向量,维度为m,样本个数为n,传输函数是线性函数。
  • 隐藏层与输入层全连接,隐藏层神经元个数与样本个数相等,传输函数为径向基函数。
  • 求和层中有两个节点,第一个节点为每个隐含层节点的输出和,第二个节点为预期的结果与每个隐含层节点的加权和。
  • 输出层输出层中的神经元数目等于学习样本中红输出向量的维度k,各神经元将求和层的输出相除。

在传统GRNN拟合分析中,我发现仅将一个平滑参数分配给所有训练样本是不明智的。这意味着,对于所有不同的区间,σ1=σ2= ...σN-1=σN。它并不总是具有良好的预测准确性。如果你设置比较大的σ,拟合出来的曲线比较平缓,不能更好的描述特征。而较小的σ容易造成过度拟合(过分学习)。如果对不同的分区设定不同的平滑因子,我发现拟合效果就会好很多。

在这里,我使用DBSCAN先进行密度聚类,对产生的不同分区分别应用从高到底的平滑函数,通过评估拟合曲线上的点到原始数据点之间的平均点距离来评估效果。实验证明,这是个有效的方法。

其中,图中的X表示传统GRNN拟合曲线。O代表原数据点,DBSCAN表示DBSCAN辅助的GRNN平滑参数分区拟合。可以看到后者有更加好的效果。


总结

从传统拟合到神经网络拟合,许多方法被提出。在选择对某一种具有特殊特征的数据点拟合时,一方面要选择数学上就最适合的拟合方法,另一方面要多多动脑寻找Tricks。最后,祝大家的paper都能做出漂亮的figure。


参考文献:

  1. 【机器学习】广义回归神经网络(GRNN)的python实现_Luqiang_Shi的博客-CSDN博客_grnn
  2. blog.csdn.net/weixin_39
  3. 基于广义回归神经网络_GRNN_的函数逼近
  4. blog.csdn.net/guoyunlei
发布于 2020-06-22 23:51

文章被以下专栏收录