【发布时间】:2013-07-23 15:12:55
【问题描述】:
首先,让我说我缺乏科学数学或统计学方面的经验 - 所以这可能是一个非常有名的问题,但我不知道从哪里开始。
我有一个函数 f(x1, x2, ..., xn),我需要在其中猜测 x 并找到 f 的最大值。该函数具有以下属性:
总数或参数通常在 40 到 60 左右,因此无法使用暴力破解方法。
每个 x 的可能值范围从 0.01 到 2.99
函数是稳定的,即 f 值越高,对参数的猜测越好,反之亦然。
到目前为止,我在 python 中实现了一个非常基本的方法。它最初将所有参数设置为 1,随机猜测新值并检查 f 是否高于以前。如果不是,则回滚到以前的值。 在具有 10,000 次迭代的循环中,这似乎以某种方式起作用,但结果可能远非完美。
我们将不胜感激有关如何改进对最佳参数的搜索的任何建议。当谷歌搜索这个问题时,linke MCMC 出现了,但这似乎是一种非常先进的方法,我需要很多时间才能理解该方法。 基本提示或概念比详细的方法和算法更能帮助我。
【问题讨论】:
-
欢迎来到 SO!我确信这个问题有一个正式的解决方案,但我的第一个猜测是贪心算法......对于每个
xn,找到最大化f的xn的值,然后重复?不过,这取决于f的性质。想法? -
您是否碰巧知道该函数的最大值是否很少,或者它是否应该有很多?如果最大值相对较少,您可以尝试gradient descent
-
如果您向函数发送未知数量的变量,我建议将它们存储在数组、列表或字典中。可能是您的案例列表。
-
你总是可以使用列表作为一个参数,除非你的任务说你不能这样做。一个列表会更容易。
-
我们可以在这里使用衍生品吗?