寻找非线性函数来优化参数

4次浏览(最近30天)
马修Blomquist
马修Blomquist 2021年11月2日
评论道: 马修Blomquist2021年11月2日
你好,
我试图优化一个包含36个预测器和1个响应变量的大型数据集。为了优化,我使用了fminsearchbnd,这是我在MathWorks File Exchange上找到的。然而,我不知道用于优化的最佳公式/函数(例如,系数,最高阶等)。我尝试在所有36个预测因子之间使用线性、平方和交互项的fitlm,但函数输出不是很好,响应变量低于0(它不应该低于0,因为它是RMSE)。它应该是一个非线性函数,但我不知道是什么形式。
是否有一个函数/工具箱,我可以用来找到公式/函数来优化预测变量,以使响应变量(RMSE)最小化?
提前谢谢你!

答案(2)

约翰D 'Errico
约翰D 'Errico 2021年11月2日
编辑:约翰D 'Errico 2021年11月2日
不。不要用fminsearchbnd来优化一个有36个参数的问题。下次你再给我发一封哀怨的电子邮件,问为什么它不管用,那就是在浪费你我的时间。
Fminsearchbnd使用fminsearch,作为一个覆盖来做工作,但随后应用绑定约束。Fminsearch能够用6-8个参数优化问题。必要时可能有10个。但是36个未知数呢?得了吧。这是行不通的。时期。
我们不知道的是你有多少数据点。人们常常认为他们不需要太多的数据点。在数据点太少的情况下,无论结果如何都是垃圾。你说数据集很大,但真的是这样吗?你有足够的信息来合理估计这么多参数吗?
接下来,我们甚至不知道这个模型对你的数据是否合理。人们常常试图把自己最喜欢的模型塞进数据中。圆孔装不进方钉。好吧,你可以,但不是钉子就是洞会遭殃。
哦。看起来你不知道在这里用什么模型,所以你试图用一个多项式模型(多维多项式)。预计该模型会产生随机的垃圾结果。
最后,你需要一个好的非线性模型的起始值。36维的搜索空间是巨大的。提供糟糕的初始值,并期望结果是胡扯。但是如果你的模型是线性的,就像你使用fitlm一样,那么就没有理由使用像fminsearchbnd这样的迭代方法了。Fitlm会给你最优的答案。它可能不是您喜欢的模型,但这是您的数据和您选择的模型的问题。
1评论
马修Blomquist
马修Blomquist 2021年11月2日
我有一个10000行乘37列的表。我正在运行随机改变前36个参数的模拟,然后将输出与实验数据进行比较,其中的比较是第37列(模拟数据与实验数据的RMSE)。我不知道这些参数的函数是怎样的,我也不确定它们是如何相互作用的,所以我在检查是否有某种方法可以对我拥有的所有数据做出某种响应面,然后检查是否有一组参数值可以进一步降低RMSE。
我没有最喜欢的模型。我相信它是非线性的,但我只是试图用不同的函数来看看最适合数据的是什么。
对于初始值,我使用表中给出最低RMSE的参数集。
这能解答你的问题吗?如果还是不可能/太复杂,请告诉我。
谢谢

登录评论。


沃尔特·罗伯森
沃尔特·罗伯森 2021年11月2日
是否有一个函数/工具箱,我可以用来找到公式/函数来优化预测变量,以使响应变量(RMSE)最小化?
不。
它可以从数学上证明(我个人在过去发布过证明),任何有限精度点的有限集都可以 完全 用一个不可数无穷大的不同公式拟合(在舍入误差范围内)。如果一个程序选择 一个 对于这些公式,那么它选择“正确”公式的概率是 等于0。
如果你没有一个可能形式的有限集合,那么就没有一个程序可以找到方程的“正确”形式。
即使您有一组受限的可能形式,由于测量中的舍入误差和噪声,众所周知,预先知道是“错误”方程的形式最终可能比“正确”方程的RMSE更低。
1评论
马修Blomquist
马修Blomquist 2021年11月2日
是的,有道理。谢谢你的解释,我很感激

登录评论。

类别

了解更多优化工具箱帮助中心而且文件交换

s manbetx 845


释放

R2021a

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!

翻译的