如何改进Levenberg-Marquardt的多项式曲线拟合方法?

问题描述 投票:0回答:1

几周前,我开始在Matlab中从头开始编码Levenberg-Marquardt算法。我对数据的多项式拟合很感兴趣,但我一直无法达到我想要的精度水平。在我尝试了其他多项式之后,我使用了一个五阶多项式,它似乎是最好的选择。无论我尝试实现怎样的改进,算法总是收敛于同一个函数最小化。到目前为止,我还没有成功地添加以下功能。

  • 大地加速项作为二阶修正法
  • 更新阻尼参数的延迟满足。
  • 增益因子,以根据迭代情况接近高斯-牛顿方向或最陡峭的下降方向。
  • 有限差分法的中心差和前向差。

我没有非线性最小二乘法的经验,所以我不知道有没有办法把残差再最小化,或者说这种方法是不是有更大的改进空间。我在下面附上最后一次迭代的多项式的行为图像。如果我运行代码进行更多的迭代,曲线最终在迭代中没有变化。正如观察到的那样,从时间=0到时间=12有一个很好的拟合。但我无法修正函数从时间=12到时间=20的行为。任何帮助将是非常感激的。

多项式拟合

machine-learning regression numerical-methods non-linear-regression levenberg-marquardt
1个回答
0
投票

拟合多项式似乎不是最好的主意。你的数据集看起来像一个指数瞬态,有一个水平渐近线。强制使用多项式来计算,效果会很差。

我宁愿尝试用一个简单的模型,如

A (1 - e^(-at)).

用肉眼看。A ~ 15. 你应该看看 log(15 - y).

© www.soinside.com 2019 - 2024. All rights reserved.