首先,我要说我缺乏科学数学或统计学的经验 - 所以这可能是一个众所周知的问题,但我不知道从哪里开始。
我有一个函数f(x1, x2, ..., xn)
,我需要猜测x'并找到f
的最高值。该函数具有以下属性:
总数或参数通常在40到60左右,因此无法采用蛮力方法。
每个x的可能值范围为0.01到2.99
功能稳定,意味着f值越高意味着参数的猜测越好,反之亦然。
到目前为止,我在python中实现了一个非常基本的方法。它最初将所有参数设置为1,随机猜测新值并检查f是否高于之前。如果没有,请回滚到先前的值。 在具有10,000次迭代的循环中,这似乎以某种方式起作用,但结果可能远非完美。
有关如何改进搜索最佳参数的任何建议将不胜感激。当谷歌搜索这个问题时,linke MCMC出现了,但这似乎是一种非常先进的方法,我需要花费大量时间来理解这种方法。 基本提示或概念对我的帮助不仅仅是详细阐述方法和算法。
答案 0 :(得分:10)
我想你想看看scipy.optimize(http://docs.scipy.org/doc/scipy-0.10.0/reference/tutorial/optimize.html)。最大化是-1 *函数的最小化。
答案 1 :(得分:9)
不要自己动手。安装SciPy并使用其optimization例程。 scipy.optimize.minimize
看起来很合适。
答案 2 :(得分:0)
除非您的任务表明您无法执行此操作,否则您始终可以将列表用作一个参数。列表会使它变得更容易。