【问题标题】:optimization function in R that can accept objective, gradient, AND hessian?R中可以接受目标、梯度和粗麻布的优化函数?
【发布时间】:2011-11-11 02:31:46
【问题描述】:

我希望优化一个复杂的目标函数。优化问题需要相当长的时间来优化。幸运的是,我确实有可用的函数的梯度和粗麻布。

R 中是否有可以接受所有这三个输入的优化包? 'optim' 类不接受 Hessian。我扫描了CRAN task page for optimization 并没有弹出任何内容。

不管怎样,我可以在 MATLAB 中使用带有“GradObj”和“Hessian”参数的“fminunc”进行优化。

【问题讨论】:

  • 检查 trust 包 (goo.gl/HHHN1)。它接受一个计算objectivegradienthessian 的函数。如果我没记错的话,它使用 fminunc 使用的相同算法

标签: r packages mathematical-optimization


【解决方案1】:

我认为信任区域优化的包trust 可以解决问题。从trust 的文档中可以看出

此函数执行函数的最小化或最大化 使用信任区域算法...(它接受)一个 R 函数 计算要最小化的函数的值、梯度和 Hessian 或最大化并将它们作为具有组件值的列表返回, 梯度和粗麻布。

其实我认为它使用了fminunc使用的相同算法。

默认情况下fminunc 选择大规模算法,如果你提供 有趣的渐变并使用 optimset 将 GradObj 设置为“on”。该算法 是一种子空间信任域方法,基于 [2] 和 [3] 中描述的内部反射牛顿法。每个 迭代涉及大型线性系统的近似解 使用预条件共轭梯度(PCG)的方法。看 大规模 fminunc 算法,非线性的信任域方法 最小化和预条件共轭梯度法。

【讨论】:

    【解决方案2】:

    stats::nlm()stats::nlminb() 都采用分析梯度和粗麻布。但是请注意,前者 (nlm()) 当前为 does not update the analytical gradient correctly,但这已在 R 的当前开发版本中得到修复(自 R-devel,svn rev 72555 起)。

    【讨论】:

      猜你喜欢
      • 2016-05-02
      • 2014-03-22
      • 2013-07-26
      • 2021-10-07
      • 1970-01-01
      • 2017-07-18
      • 1970-01-01
      • 2017-08-05
      • 2023-02-10
      相关资源
      最近更新 更多