【问题标题】: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)。它接受一个计算objective、gradient 和hessian 的函数。如果我没记错的话,它使用 fminunc 使用的相同算法
标签:
r
packages
mathematical-optimization
【解决方案1】:
我认为信任区域优化的包trust 可以解决问题。从trust 的文档中可以看出
此函数执行函数的最小化或最大化
使用信任区域算法...(它接受)一个 R 函数
计算要最小化的函数的值、梯度和 Hessian
或最大化并将它们作为具有组件值的列表返回,
梯度和粗麻布。
其实我认为它使用了fminunc使用的相同算法。
默认情况下fminunc 选择大规模算法,如果你提供
有趣的渐变并使用 optimset 将 GradObj 设置为“on”。该算法
是一种子空间信任域方法,基于
[2] 和 [3] 中描述的内部反射牛顿法。每个
迭代涉及大型线性系统的近似解
使用预条件共轭梯度(PCG)的方法。看
大规模 fminunc 算法,非线性的信任域方法
最小化和预条件共轭梯度法。