优化 R 中的不可微分函数

Optimizing a non differentiable function in R

我正在尝试两种方法来最小化成本函数。第一个是 optim(),第二个是优化包的 optim_nm() 部分。我面临的问题是我的错误函数有 2 个参数,

  1. 优化函数需要修改的可变参数列表
  2. 一组固定参数

optim(par = variableParameters,fn = error_function,par2 = fixedParameters):

optim 处理得很好,因为第一个参数是可变参数,函数,然后是一组可选参数,我可以在其中传递固定参数。这行得通,但是功能很慢。

optim_nm(乐趣=error_function,k=5,开始=variable_parameters)

optim_nm,允许我调整优化功能,但是,我不确定如何传递固定参数。文档中的所有示例都带有可变参数。

这两种方法都实现了 Nelder 和 Mead 算法,该算法对于不可微分的误差函数非常稳健,这正是我所需要的。如果还有其他软件包可以快速完成此操作,请也提及它们!

如果有人用过这个,或者可以更好地解释文档,我可以寻求你的帮助。

optim_nm Documentation

optim documentation

创建一个包装函数来填充固定参数的值:

error_function <- function(variableParameters, fixedParameters) {
  ...
}

wrapper <- function(x) {
  error_function(x, fixedParameters = 3)
}

optim_nm(fun = wrapper,
         k = 5,
         start = initial_parameter_values) 

如果 error_function 的评估成本很高,您可能需要使用 rBayesianOptimizationmlrMBO 包研究贝叶斯优化。