python - metropolis hastings 或 MonteCarlo 方法相对于简单网格搜索的优势?

标签 python montecarlo

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

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

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

所以我的真正问题是 - 虽然我使用的网格搜索方法有点麻烦,但使用诸如 metropolis hastings 之类的蒙特卡罗方法会有什么优势?

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

如果有任何意见或建议,我将不胜感激

非常感谢

最佳答案

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

如果您可以针对您的问题域在足够短的时间内以足够精细的比例执行网格搜索,那么这可能是一种不错的方法。

如果你的函数是凸函数,那么有很多well-known approaches这样的梯度下降。

如果您的函数具有可以轻松求解的简单函数形式,但您有大量包含异常值的数据,RANSAC会有帮助。

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

关于python - metropolis hastings 或 MonteCarlo 方法相对于简单网格搜索的优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14236371/

相关文章:

javascript - 在 JS 或 Python 中操作颜色

powerbi - 有没有办法在PowerBI中显示粉丝图表?

c++ - MC 模拟中的 openmp 私有(private)/共享数据

Python 和 PLY : how to get rid of token 'XXX' , 已定义但未使用

python - 如何使用动态名称实现 property()(在 python 中)

Python如何从我的列表中列出某些数字

python - 为什么偶数和奇数不能打印出正确的答案?

multicore - 如何在 Ocaml 中使用多核进行蒙特卡罗模拟?

c - 蒙特卡洛积分返回不正确的值,覆盖内存的问题

c++ - C++随机数生成与Python的区别