我有一个对数似然函数,有5个参数需要最大化。其中一个参数需要通过线性搜索方法进行优化,而其他4个参数需要通过Nelder-Mead(或其他导数方法)进行优化。有人知道我将如何进行这两项操作吗?我现在能想到的唯一执行方法是迭代,一次一个。因此,通过Nelder-Mead优化4个参数,然后在我通过线搜索优化第5个参数时保持它们不变。
2vuwiymt1#
我认为你提出的方法(优化参数,例如2-5,然后保持它们不变,同时优化参数1)不会起作用。相反,你应该使用一个 * 嵌套 * 的方法:例如写一个优化四个“多维”参数的函数,并使用该函数进行线搜索。假设目标函数f()取一个包含5个参数的向量,其中第一个参数对应于线搜索维度。
f()
f2 <- function(p_u, ...) { res <- optim(par = start0, fn = function(p) f(c(p_u, p)), ...) res$value } optimize(f2, interval = c(lwr, upr), <optim_args>)
optimize
?optimize
p_u
f2()
1条答案
按热度按时间2vuwiymt1#
我认为你提出的方法(优化参数,例如2-5,然后保持它们不变,同时优化参数1)不会起作用。相反,你应该使用一个 * 嵌套 * 的方法:例如写一个优化四个“多维”参数的函数,并使用该函数进行线搜索。
假设目标函数
f()
取一个包含5个参数的向量,其中第一个参数对应于线搜索维度。optimize
使用 * 布伦特方法 *(?optimize
:“黄金分割搜索和连续抛物线插值的组合”)p_u
的每个值的优化参数,例如在f2()
函数的环境中,并且每次都使用先前的起始值(这取决于布伦特方法所确定的p_u
值的跳跃程度;在优化程序开始时,如果(例如)布伦特方法从区间两端的函数求值开始,则连续方法实际上可能比原始方法“更差”...)