【问题标题】:Maximize a function with many parameters (python)最大化具有许多参数的函数(python)
【发布时间】: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,找到最大化fxn 的值,然后重复?不过,这取决于f 的性质。想法?
  • 您是否碰巧知道该函数的最大值是否很少,或者它是否应该有很多?如果最大值相对较少,您可以尝试gradient descent
  • 如果您向函数发送未知数量的变量,我建议将它们存储在数组、列表或字典中。可能是您的案例列表。
  • 你总是可以使用列表作为一个参数,除非你的任务说你不能这样做。一个列表会更容易。
  • 我们可以在这里使用衍生品吗?

标签: python function math mcmc


【解决方案1】:

不要自己做。安装SciPy 并使用它的optimization 例程。 scipy.optimize.minimize 看起来很合适。

【讨论】:

  • 谢谢!我终于有时间尝试了,它就像一个魅力。现在我需要克服查看代码以了解其工作原理的冲动:)
【解决方案2】:

我想你想看看 scipy.optimize (http://docs.scipy.org/doc/scipy-0.10.0/reference/tutorial/optimize.html)。最大化是 -1* 函数的最小化。

【讨论】:

    猜你喜欢
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-26
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多