1

我有一个相对简单的函数,其中包含三个未知的输入参数,我只知道其上限和下限。我也知道我的所有数据的输出 Y 应该是什么。

到目前为止,我已经在 python 中完成了一个简单的网格搜索,循环遍历所有可能的参数组合并返回那些预测 Y 和观察到的 Y 之间的误差在设定限制内的结果。

然后我查看结果以查看哪组参数对每组样本表现最佳,查看参数之间的权衡,查看异常值如何影响数据等。

所以真的我的问题是 - 虽然我使用的网格搜索方法有点麻烦,但使用蒙特卡洛方法(如大都会黑斯廷斯)有什么优势?

我目前正在研究 MCMC 方法,但在使用它们方面没有任何实际经验,在这种情况下,我不太清楚可能会获得什么。

我非常感谢任何意见或建议

非常感谢

4

2 回答 2

6

当底层函数很复杂(有时过于复杂而无法直接计算)和/或在高维空间中时,MCMC 方法往往很有用。当没有其他方法可行或运行良好时,通常会使用它们。由于您有一个简单的低维问题,我不希望 MCMC 方法对您特别有用。

如果您可以在足够短的时间内为您的问题域执行足够精细的网格搜索,那么这可能是一个好方法。

如果您的函数是凸函数,则有许多众所周知的方法,例如梯度下降。

如果您的函数具有可以轻松解决的简单函数形式,但您拥有大量异常值的数据,则RANSAC可能会有所帮助。

如果您的函数在未知位置有许多局部最小值,则模拟退火可以很好地工作。

于 2013-01-09T13:41:30.420 回答
2

当搜索空间变大时,进行穷举搜索变得不可行。所以我们出于必要转向蒙特卡罗方法。

于 2013-01-09T13:39:16.957 回答