24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1813  |  回复: 6
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

shikang999

新虫 (小有名气)

[交流] 数据拟合愚见已有5人参与

以下为个人愚见,希望对有缘人有帮助,如有不足(呵呵,口语写惯了,可能很多语言不是太学术),欢迎拍砖!
1、数据拟合问题,可简单转换成方程组求解的问题,且也可简单分为线性与非线性问题。

2、对于线性问题,可简单看成一个超定方程的求解,这时采用最小二乘算法求解即可。
比如:需要拟合的方程为

其中为采集的数据,需要拟合的变量为

如果把上面的例子化成一个方程组可表示如下





PS:对于一些表面上是非线性问题却可转换成线性拟合的问题,建议先转换成线性拟合得到结果。有些人可能会说,转换后拟合的数据会放大误差,对于这类会放大误差的问题,还是建议先转换成线性拟合,得到一个解,让将这个解作为初始值带入非线性拟合问题当中进行求解,也不失为一个很好的方法。
例子:需要拟合的方程为

其中为采集的数据,为需要拟合的变量,这时公式可进行简单的变换





3、非线性问题的拟合
      可能我们大部分遇到的都是非线性拟合问题,非线性拟合问题又可简单看成一种简单的循环“迭代问题”。这里先简单说一下在求解非线性问题采用算法时注意的地方:(1)智能算法(比如:遗传算法、粒子群算法……)一般都可简单说成是全局优化算法,当然这里所谓的全局优化算法只能说是相对的,毕竟目前还查不到有什么算法能确定出任意的非线性拟合问题的解。(2)剩下的就是一些局部最优算法了(比如:Broyden形式的求解算法、LM算法……),这类算法的特点是在解的附件时能很快收敛到解。也因此,配合好全局与局部算法是一个不错的选择!(3)为了加快找到解的速度,可考虑采用多线程求解方式【如果你的算法允许】。即使你不会多线程,只要你会编程,网上找一下你所熟悉编程语言的多线程操作例子,不出半个小时,你准能搞定!

4、非线性拟合时可能遇到的问题
(1)拟合公式里含有积分或者微分等项
解:不管是积分或者是微分,它只是一个函数,自己实现即可
比如:需要拟合的公式为

其中为采集的数据,为需要拟合的变量,这时我们可考虑做如下变换


当中的函数,我们可以自己写一个积分算法进行求解,这个和公式中直接调用正弦函数是一样的,只是程序内部已经帮我们将正弦函数的算法实现。
同样的,如果有微分项,一样可以使用类似的方法进行处理。
PS:即使有一些软件提供积分或者微分等算法,如果那种算法你不熟悉或者怕被做手脚,加之一些算法的局限性,建议自己编程实现这类积分或者微分求解的问题。

(2)拟合的公式为隐函数的拟合
解:对于这个问题,说白了就是转移一种评价方式的问题,这时进行简单的变换即可
比如:需要拟合的方程为

其中为采集的数据,为需要拟合的变量,
正常情况下,程序内部的评价方式可能是,其中一个是真实值一个是拟合值,因为这种评价方式比较困难,这时我们可考虑做如下变换

这时的评价方式即变成,这样就完美解决!

5、拟合的评价方式问题
  这里的评价方式只针对求解过程中的评价方式,也因此只讨论非线性问题的评价问题。
  所谓的评价方式,就是指用什么方式来解答:什么时候拟合结束,怎样的解才算更优?
  这个没有统一的答案,仁者见仁智者见智吧!不过,我还是说下我的想法,有些在求解时喜欢采用各种假设检验来检验解的优度,因为我是一个追求程序效率的人,我并不建议在程序中采用这种方式,因为在调用各种假设检验算法时必定会消耗一部分计算时间,因此一个简单高效的评价方法不失为一种好的方式。
常见的,我们会使用最小二乘,即

类似这种方式来评价,其中越小,解越好。当然,也许你会采用如下的方式

其中为一个设定的指数,当不为整数时,会涉及到求非整数次方的问题,这会对计算造成一定的开销,如没有必要,个人感觉还是不要使用比较好。
对于我们每个解得到的怎么才算好呢,个人感觉还是采用一种相对误差的形式来评价比较好!

OK,就写到这里吧!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

我还是那个我,过去如此,未来亦如此!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

SCR建模学习

新虫 (初入文坛)


小木虫: 金币+0.5, 给个红包,谢谢回帖
5楼2016-11-15 22:11:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 7 个回答

月只蓝

主管区长 (职业作家)

很好的帖子,顶!
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
2楼2014-07-31 18:54:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wu283326736

铁虫 (初入文坛)


小木虫: 金币+0.5, 给个红包,谢谢回帖
思路很好,楼主能上传实验数据吗?
3楼2015-06-07 14:55:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

公子无瑟

金虫 (正式写手)


小木虫: 金币+0.5, 给个红包,谢谢回帖
作为学渣正在学习用LM算法进行非线性优化,各种的不会,各种的焦头烂额,看了楼主的帖子之后,顿时就豁然开朗了,谢谢楼主

发自小木虫Android客户端
4楼2016-11-14 00:31:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复(可上传附件)
信息提示
请填处理意见