优化 R 中的不可微分函数
Optimizing a non differentiable function in R
我正在尝试两种方法来最小化成本函数。第一个是 optim(),第二个是优化包的 optim_nm() 部分。我面临的问题是我的错误函数有 2 个参数,
- 优化函数需要修改的可变参数列表
- 一组固定参数
optim(par = variableParameters,fn = error_function,par2 = fixedParameters):
optim 处理得很好,因为第一个参数是可变参数,函数,然后是一组可选参数,我可以在其中传递固定参数。这行得通,但是功能很慢。
optim_nm(乐趣=error_function,k=5,开始=variable_parameters)
optim_nm,允许我调整优化功能,但是,我不确定如何传递固定参数。文档中的所有示例都带有可变参数。
这两种方法都实现了 Nelder 和 Mead 算法,该算法对于不可微分的误差函数非常稳健,这正是我所需要的。如果还有其他软件包可以快速完成此操作,请也提及它们!
如果有人用过这个,或者可以更好地解释文档,我可以寻求你的帮助。
创建一个包装函数来填充固定参数的值:
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
的评估成本很高,您可能需要使用 rBayesianOptimization
或 mlrMBO
包研究贝叶斯优化。
我正在尝试两种方法来最小化成本函数。第一个是 optim(),第二个是优化包的 optim_nm() 部分。我面临的问题是我的错误函数有 2 个参数,
- 优化函数需要修改的可变参数列表
- 一组固定参数
optim(par = variableParameters,fn = error_function,par2 = fixedParameters):
optim 处理得很好,因为第一个参数是可变参数,函数,然后是一组可选参数,我可以在其中传递固定参数。这行得通,但是功能很慢。
optim_nm(乐趣=error_function,k=5,开始=variable_parameters)
optim_nm,允许我调整优化功能,但是,我不确定如何传递固定参数。文档中的所有示例都带有可变参数。
这两种方法都实现了 Nelder 和 Mead 算法,该算法对于不可微分的误差函数非常稳健,这正是我所需要的。如果还有其他软件包可以快速完成此操作,请也提及它们!
如果有人用过这个,或者可以更好地解释文档,我可以寻求你的帮助。
创建一个包装函数来填充固定参数的值:
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
的评估成本很高,您可能需要使用 rBayesianOptimization
或 mlrMBO
包研究贝叶斯优化。