噪声优化问题没有很好地解决(由mlrMBO)

噪声优化问题没有很好地解决(由mlrMBO),r,optimization,bayesian,mlr,R,Optimization,Bayesian,Mlr,我试图最小化一个简单的噪声函数: function(x,prec=10){x^2+rnorm(1)/(prec)} 噪声适中,也就是说,在0时很容易找到最佳值。 我认为重要的是,噪音是独立的,也就是说,反复评估同一点会使你更接近真实的(无声的)价值。优化器可以利用这一点。但是我不知道怎么做 我在R中使用mlrMBO进行优化,但没有得到好的结果。下面的代码估计最小值为0.032,增加iters似乎根本无法改善结果 library(mlrMBO) f1<-function(x,prec=1

我试图最小化一个简单的噪声函数:

function(x,prec=10){x^2+rnorm(1)/(prec)}
噪声适中,也就是说,在0时很容易找到最佳值。

我认为重要的是,噪音是独立的,也就是说,反复评估同一点会使你更接近真实的(无声的)价值。优化器可以利用这一点。但是我不知道怎么做

我在R中使用
mlrMBO
进行优化,但没有得到好的结果。下面的代码估计最小值为0.032,增加
iters
似乎根本无法改善结果

library(mlrMBO)
f1<-function(x,prec=10){x^2+rnorm(1)/(prec)}
obj.fun = makeSingleObjectiveFunction(name = "noisy_parable", fn = f1,  par.set = makeNumericParamSet("x", 1, -3, 3), noisy = TRUE)
ctrl = makeMBOControl(final.method = "best.predicted", final.evals = 1)
ctrl = setMBOControlInfill(ctrl, crit = crit.eqi)
ctrl = setMBOControlTermination(ctrl, iters = 10)
configureMlr(on.learner.warning = "quiet", show.learner.output = FALSE)
set.seed(1)
res = mbo(obj.fun, control = ctrl, show.info = FALSE)
print(res$x)
库(mlrMBO)

F1你能发布一个完整的例子,允许复制行为吗?当然,在我的编辑后,大区块中的代码应该足以复制0.032,你认为结果是否足够好?你可以针对这个特定问题调整代理学习者的某些MBO参数或超参数,但这对你不知道真正最佳值的新的真正黑盒函数有什么帮助?考虑到你添加的噪声量,结果似乎并不那么糟糕,也就是说,标准差是0.1,你离这越来越近了。我不认为你能在这方面有显著的改进。除此之外:试着做一个t.测试
f(0.1)
是否比
f(0)
更差。我没有做那后面的计算,但你大概需要23个样本。所以你需要更多的评估。一种简单的方法是评估函数,例如10次,然后返回平均值。